From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 690C64934A for ; Thu, 8 Feb 2024 07:41:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC83168D191; Thu, 8 Feb 2024 09:40:47 +0200 (EET) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4128668D185 for ; Thu, 8 Feb 2024 09:40:42 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1707378046; x=1738914046; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=/sZx2x++Unk/7WuSZS4bYm4nhR6+ClHoPaF5A1eEdcU=; b=YAxMLMRn9l+/XrkZ4+CFui/oVevvHStt2zDXxje2FLuH/EM/2SvdZ/5s RIkLVecvYA24w9V/hfinkCdXum6aZKwgh0HDd3zujqg62H4/xZjwq+Tip n44GzwXiCCaIHkKKbq1b6t63xBgaFrgd5kWnD6lGuPVTV3grhsNSO+J8N xYqdhBjD2ejxI00fo59l47zZGPOn4j6UgYsLUxFjLi6Y+3n16aCatXQz+ QxA4NAmX3UnZwWdzGBnNNJ1srh/pMKjCge7PHm5A6wKuJyBzZ8DEHrB20 +s4bIrdCMQQdeK9yeT4S7HciPV95nrXNPrWqPWH1GytMAfPDdkqEH8Imm g==; X-IronPort-AV: E=McAfee;i="6600,9927,10977"; a="395577740" X-IronPort-AV: E=Sophos;i="6.05,252,1701158400"; d="scan'208";a="395577740" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2024 23:40:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.05,252,1701158400"; d="scan'208";a="6355151" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orviesa004.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 07 Feb 2024 23:40:40 -0800 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 7 Feb 2024 23:40:39 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Wed, 7 Feb 2024 23:40:39 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.40) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 7 Feb 2024 23:40:39 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZU0oqbfAFlnYvwsCWla8IDHg/AbKAhUuSRimvzPOZhB0Z5vpiUiilJfuaJ9I3qf5wq0ZAavuuPTnAQ3/CfjEyxdzmu3eU9m5/sy2YD9/PeyB8lv10xLKsatgSf4grkhOFMweJJ9TRR7o2jm2Dl9lwcmUS/+HzeGTndhxT1a1ux6FomC11iAt8nFXwGGFDiJsJDFEdHWM8jDbiSMuiY83xhwemfSor0P72DDidMr4zswiGG3kfadUETbessomjU8HSJCymjUBHkBOMJHchJ3hlniUmHz8W0ToqMGXSTdzKhWwtE0FB3NAGlsgq+6gVhmXoQqJLKC4+i4NohHU8vnT1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SgWD1uw9RwzkhF8UXiaD/h+Hm/oenP7LY/8X/V4T+fk=; b=gmqSjdNMKDjXtsJRexz9M0IY/WqtAGLMF/eYai7agigGAbZWV2B6Hr0baTUH0RgACuyzcumEw/1cEcisRkXkrXtBQ/0eAiI475sy+AkcenPNmo6w4USRgo+br4gOSimsiHT0s53qCYwCmFW1JqHvMrd+FfLT9+JrFSq9jBOM/vxWMFSwGRbDJqP9aaC0yxm7wL/vsFE+KIgMEFpJeAypQQbMdgZ6UEycIXplUlT6hp5NMz0A755GsaFivA6o8OU5vu2WYASRyv2f1JPp/3DHuX+S7qUiuUlvOgn8a03twcwn0OZxDisYTdcAvjyO9+6XhM/d8iLh56tI4tWafhc9aQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CH3PR11MB8659.namprd11.prod.outlook.com (2603:10b6:610:1cf::5) by IA0PR11MB7790.namprd11.prod.outlook.com (2603:10b6:208:403::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.36; Thu, 8 Feb 2024 07:40:32 +0000 Received: from CH3PR11MB8659.namprd11.prod.outlook.com ([fe80::37b4:8d26:68d0:9935]) by CH3PR11MB8659.namprd11.prod.outlook.com ([fe80::37b4:8d26:68d0:9935%4]) with mapi id 15.20.7249.037; Thu, 8 Feb 2024 07:40:31 +0000 From: "Wu, Tong1" To: Wu Jianhua , "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v3 8/9] avcodec: add D3D12VA hardware HEVC encoder Thread-Index: AQHaWDhuRNKy0aJokUS5rauD5Nl3b7EAE5CQ Date: Thu, 8 Feb 2024 07:40:31 +0000 Message-ID: References: <20240202101615.382-1-tong1.wu@intel.com> <20240202101615.382-8-tong1.wu@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR11MB8659:EE_|IA0PR11MB7790:EE_ x-ms-office365-filtering-correlation-id: 1c3afbbf-cea3-44dd-6ac3-08dc28793a97 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 45LnS5NT1/sH69co5CqwXgrGNjFpvcu0fBX8f3fAuQpBfrYx5WRlsXanpLZb3ZBAsxW186fkm5krddQIt2n6GxwUoTrv8Lnyvroyqkay6BuFbcq3d5voyLWhz7trKtkTKK3IeAkRk715kuDGe7Te51O3ShdA4Ga543kTq3gJHGcOxRdOScgWuPa8Mfg4foxRw7CQClaCvLDoC9vQ9nj1/ahDTSs9TPKoXwidoEHjnqRxPjxGCSwUm3fQH/zksJDWPGzYjFpGztSVPpSq02L87qk+obtgriRTx8008euaF/jKzn/58677bWXNGJMNSmVRpt9P+Gp8iRf67zvHTlj8cbW5p3IIQqCwwOG5HMXnvaa+BS8H3AAdOBc+lG/D5Tc6p9XDbLDwEeX6rEflk1+Dhf4Ps0o990NBLSU1gwso6K9QzfVzxBGS3rTtn82tRl9E9hGEvqeR2h/juS+88MxO969G5cXtp084zbyDCrmApqZZ8/o2hNJU4YMuBkhUaGgknEW1RnzPbPWRFTcb3/41WNvWESS+X2HiqvVR/S68pts59kRDeWaAh3zYIfruXHcIobAIe1Pv9HnuN4IOer6gGMBKPsPqAufWsPnGohMRwJA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR11MB8659.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(136003)(396003)(376002)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(1800799012)(186009)(55016003)(83380400001)(2906002)(38100700002)(122000001)(82960400001)(41300700001)(316002)(110136005)(26005)(66556008)(76116006)(66946007)(64756008)(45080400002)(66476007)(38070700009)(66446008)(86362001)(52536014)(8936002)(8676002)(33656002)(478600001)(6506007)(9686003)(5660300002)(71200400001)(7696005)(19627235002)(966005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?oinzyYWIhab7XgZShFGo929ql/uIGZug1UDoUpr5jvgSEL5FVGyVH0rxIgNa?= =?us-ascii?Q?eBiGJWIaXh/fH6UNn1iKXnTCgbvkjGQ14S9JAfYaX0tS8oWhrgLzSKtwImeT?= =?us-ascii?Q?7LywotYL/kOpBYN9fZaHVBTc+jkz/qSLvyRsDXp8Cx49uswYqL+2NYlZoOno?= =?us-ascii?Q?fXgD9uGkCcy5k9PHBPg6wpv93829MZ/OReNxBZTkwiE6VWVy1llml+rLo2yR?= =?us-ascii?Q?mZeP0RwCZcS6os+atWoWMohcGwihyg2efX44czQ1K/PyEFnyk6XbHK3z1HHH?= =?us-ascii?Q?KiTaZH7CN0GcOoOHfGnO7Eih6kTr7JkifcC1xZ3q4EgCcAzYOO2bdufWIy7K?= =?us-ascii?Q?MzCexOnDLgnVH7K1Py78n19o/5HEG0DGAvZYRnMrDGTxsuYwkpSlF/KbIp4E?= =?us-ascii?Q?xp8TfnWbtE3I+pZVAdFkRqs/r6bnNRenn6ND3/ag4fIxijkam7hsGWo7hjPr?= =?us-ascii?Q?lDsKcDwL8r6fH10D3Mv6X2/y/aDoiobjP565iI5HWf6PufhOALBqKq3iAxro?= =?us-ascii?Q?AdXDZa1y8ozGqYPe0pK/WDY+mKDqyCMFxbVOd9MF1TL6goZpSlPHzUtllisg?= =?us-ascii?Q?U2d3yND16iyVeFo9II0aKiITYOe5r8ADyoZJbZC/QCOxySTb93ySGSo1bUBx?= =?us-ascii?Q?w0ovnsYuCSs41ElgJA6sDgnfG0aL+fwpRdHSXkSw8a7+7GU06HufcrG+x//e?= =?us-ascii?Q?EoFRWgF09zuN+jT7mpk+KjscD/oJPsHwyzO2mMhh/Jb/YuS/ul6pmCvAGA0n?= =?us-ascii?Q?9R4F84S1gTqtuXVxZvocln6lX5pKMV+7LHCGrBI1rSAYHG0ctmn7iRI5ugDH?= =?us-ascii?Q?vZVSvcRMxOhrt8hzZRHGzjLf3xgpfFHbpd6nrLaiej1ixwDL2eiyypnBPRjW?= =?us-ascii?Q?bWhawTblhg5+xIyGrKIazXA5DpgzomiLTTaTG19jsI+O2AsG/c3MuFOZf1Ex?= =?us-ascii?Q?1uwpYeW0dqgb2rBU+JKNOd6cR6SVEQMsww9t6j1wy+vTr2E7Pa6NcJRTpjUm?= =?us-ascii?Q?jIE9DzAws65FsjwgyjzZQ/eIv0kLABMURnph+OuNl4FkcKtIpCmX8Y+029dx?= =?us-ascii?Q?2SAUrj4SgYFAEbkGFKIfUkeSsgRJ9K9IExZ32X88LjFILMlnAjfli4mHV6/Y?= =?us-ascii?Q?gyoqhJdTUdlAU6t068awg7T/+RMUOpV1Q9JX573oyIdk76KL64NjdAWPwzH5?= =?us-ascii?Q?y/+iUO30XGp/iJZlvWP3MEeWDhQOmAAKEmccSg6/5NYlwAhIDlrZXsNLk5Qq?= =?us-ascii?Q?y3nLdJma/jpwONMF5462T3pb4ehSfcnc/45zrPyUnBV5Yy6BLsjaERW7+nPa?= =?us-ascii?Q?yhrgxA3w5DviRMPY5t4Z3bxKTPyhujkLWQETix9DvTj5+3zb8gOxVkcUx2oK?= =?us-ascii?Q?IGdcFs8GpP5f2+ryIgkdeiT40q2iujpJObNWhEB6eszTLs9i7PUFHrlmASn6?= =?us-ascii?Q?9ZF/g9RotVzBIi21ujYoADARyjn/b0AbOfhl1qOt5rkVnNQJA9mPoI9FcGnz?= =?us-ascii?Q?M1hz12yQFcMHJvwo+9ZLlZw9Iiw9GcxmFQxKqSbwPCg76Q7yo1RocEmiZTcD?= =?us-ascii?Q?I7kaQht4mqipD4+rRNl43eEmWOgzH/Ejvwmb1LXI?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB8659.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c3afbbf-cea3-44dd-6ac3-08dc28793a97 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Feb 2024 07:40:31.8358 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nbL7+EnFCSFneNioiBliAJt2Vd1FLdwdY1EnCERh500lC4PvCMXU0TtBXr3/qU1PGmeVwBS2kpnNEJ3U3OzZTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7790 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v3 8/9] avcodec: add D3D12VA hardware HEVC encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: >> From: Tong Wu >> >> This implementation is based on D3D12 Video Encoding Spec: >> https://microsoft.github.io/DirectX-Specs/d3d/D3D12VideoEncoding.html >> >> Sample command line for transcoding: >> ffmpeg.exe -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 >> -c:v hevc_d3d12va output.mp4 >> >> Signed-off-by: Tong Wu >> --- >> configure | 6 + >> libavcodec/Makefile | 4 +- >> libavcodec/allcodecs.c | 1 + >> libavcodec/d3d12va_encode.c | 1441 ++++++++++++++++++++++++++++++ >> libavcodec/d3d12va_encode.h | 275 ++++++ >> libavcodec/d3d12va_encode_hevc.c | 1011 +++++++++++++++++++++ >> libavcodec/hw_base_encode.h | 2 +- >> 7 files changed, 2738 insertions(+), 2 deletions(-) >> create mode 100644 libavcodec/d3d12va_encode.c >> create mode 100644 libavcodec/d3d12va_encode.h >> create mode 100644 libavcodec/d3d12va_encode_hevc.c >> >> >>+ min_cu_size = d3d12va_encode_hevc_map_cusize(ctx- >>codec_conf.pHEVCConfig->MinLumaCodingUnitSize); >>+ max_cu_size = d3d12va_encode_hevc_map_cusize(ctx- >>codec_conf.pHEVCConfig->MaxLumaCodingUnitSize); >>+ min_tu_size = d3d12va_encode_hevc_map_tusize(ctx- >>codec_conf.pHEVCConfig->MinLumaTransformUnitSize); >>+ max_tu_size = d3d12va_encode_hevc_map_tusize(ctx- >>codec_conf.pHEVCConfig->MaxLumaTransformUnitSize); >>+ >>+ // VPS >>+ >>+ vps->nal_unit_header = (H265RawNALUnitHeader) { > >Should this blank line be removed, because the comment is for the codes >below? > >> + vps->vps_timing_info_present_flag = 0; >> + >> + // SPS >> + >> + sps->nal_unit_header = (H265RawNALUnitHeader) { >> + .nal_unit_type = HEVC_NAL_SPS, >> + .nuh_layer_id = 0, >> + .nuh_temporal_id_plus1 = 1, >> + }; >The same as above. > >> +static uint8_t >d3d12va_encode_hevc_map_cusize(D3D12_VIDEO_ENCODER_CODEC_CONFI >GURATION_HEVC_CUSIZE cusize) >> +{ >> + switch (cusize) { >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8: >return 8; >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16: >return 16; >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32: >return 32; >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64: >return 64; >> + } >> + return 0; >> +} >> + >> +static uint8_t >d3d12va_encode_hevc_map_tusize(D3D12_VIDEO_ENCODER_CODEC_CONFI >GURATION_HEVC_TUSIZE tusize) >> +{ >> + switch (tusize) { >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4: >return 4; >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8: >return 8; >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16: >return 16; >> + case >D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32: >return 32; >> + } >> + return 0; >> +} > >A default branch is needed or we can use 8 << cusize and 4 << tusize for >simplification. > >> + hr = ID3D12Device3_QueryInterface(ctx->device3, >&IID_ID3D12VideoDevice3, (void **)&ctx->video_device3); >> + if (FAILED(hr)) { >> + err = AVERROR_UNKNOWN; >> + goto fail; >> + } >> + >> + if (FAILED(ID3D12VideoDevice3_CheckFeatureSupport(ctx- >>video_device3, D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT, >> + &support, sizeof(support))) >&& !support.VideoEncodeSupport) { >> + av_log(avctx, AV_LOG_ERROR, "D3D12 video device has no video >encoder support"); >> + err = AVERROR(EINVAL); >> + goto fail; >> + } > >We need to output the log for the ID3D12Device3_QueryInterface call, or the >user will not know the error is resulting from that, >the OS and the driver don't support the ID3D12VideoDevice3 interface. Have updated in v4. Thanks for the review. BRs, Tong _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".