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 C118048C26 for ; Tue, 23 Jan 2024 05:52:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7411D68D024; Tue, 23 Jan 2024 07:52:29 +0200 (EET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 57C1D68CBF7 for ; Tue, 23 Jan 2024 07:52:22 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1705989148; x=1737525148; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=uPtdZD4t3oM3qYdqrQF4TC73TqZp5008jKXa+IE7uvk=; b=brk4AFIhTNtwXTvjKe0zwn1ylPQ0BB+18VRDluNqQhaUBlPO8a56yt6y BALlvTMu7Q2MDAaNzK8oleYr8DQhQkDCBJk4oNbSTwExf2/hefiL13T8g ZihsOyoXjVGR8Mr/D+aXQnnBhWx9T6MWyG7m0T79o6adnrBtIpQrFhLW2 c14NL2ChQheV2YC4z9lv4jQdYcSbcPV1fWeeef+6pyq1aT2BTQfUen9mf BQ15fw5UahE0RjlDu26YCivfg2hhB8rO3pd6IqC+z0Xzw2RdHCdHgEOcN GvOMAyWaWiqvT/AbJY+jGqph3BiACOzaDwsw6vbt58PM6yEEONBcazyHV A==; X-IronPort-AV: E=McAfee;i="6600,9927,10961"; a="8790423" X-IronPort-AV: E=Sophos;i="6.05,213,1701158400"; d="scan'208";a="8790423" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jan 2024 21:52:20 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10961"; a="735447929" X-IronPort-AV: E=Sophos;i="6.05,213,1701158400"; d="scan'208";a="735447929" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga003.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 22 Jan 2024 21:52:20 -0800 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 22 Jan 2024 21:52:19 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 22 Jan 2024 21:52:19 -0800 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.41) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 22 Jan 2024 21:52:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dgwy3vuBBTygk6C7yxKcdt4FiJAjPzQ+6eBvpCRIlsfhp/p8PIpuuFz+vB/01nxON/uKFyoFYzGAqILqqNIsVzu3MbxM5Zhwe+48Hqzsoq2+ZzV9tguchloPOQPbtp5rSLsjb7ip/uXrNaoLNOZXJn6LyWFl5pm19cF5pW/MtxwtrHHsndH6GrqZC7jkgGkDlBAUTSKN1RyCGNAmRUdKVMfGejF5X8bvLTn9Kc/k6uvwnyaJHzixYyfOLBOtEUxRWvNIUKQgnd4Ik3Plnx6UdHNRlqWSVo/Osbb4IokJWaKP+Ha8DioseUnfyeryExhYRu2YRQ9LYxBMd+5qkeCG1g== 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=iWQo+g68IF4vK1P7XRH32Hx6b4TeJTJRGFzmqdl2wY4=; b=mUI0jFl7A8FmNfFZ/fxd9aJTR5rgyWFszN+AP9fd9ukZ/8Iz90zxBXjnfe+AGkQRup2n7kPWNi+bwpgMzBnMR0K3WtY3IUuHGZ/0JECSZlqadFWu8aeimKlFkH9YwTu4dGAE8RLPrlWIcInXnFDfFVLZYn78JaLadE2aRXBxX/LfhGU3fJyHeWNKNZXACzdR8AjyY6eWc8jz4/KmNDpvdgzEhsAKHKwK0W4FvyHqTrVDCrmyqLqYCSkv04iuVA2/pyfaMhgvairAe5WA1ug/FHxFn0H3RijKW95SHVb9Ai4eVIFeh6aYR2eqcWb94H5UabNsFLcnnzYGOM/fTy5qEg== 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 PH0PR11MB5595.namprd11.prod.outlook.com (2603:10b6:510:e5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Tue, 23 Jan 2024 05:52:16 +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.7202.035; Tue, 23 Jan 2024 05:52:16 +0000 From: "Wu, Tong1" To: Wu Jianhua , "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH 8/9] avcodec: add D3D12VA hardware HEVC encoder Thread-Index: AQHaTUrpbl14hwWxMUasqK2k3TkI6rDm5eYg Date: Tue, 23 Jan 2024 05:52:16 +0000 Message-ID: References: <20240122055756.1142-1-tong1.wu@intel.com> <20240122055756.1142-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_|PH0PR11MB5595:EE_ x-ms-office365-filtering-correlation-id: 09916f2f-039d-48ce-e191-08dc1bd77471 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lE5E86USDZza8izt9zcuu+8ZbexpAFmgxcqsM0zS4h8NJ4OLMpeIw1bvG5Hp/f7qSkjbOurTpVEJIcUGiNNdQBrH2Dt11KEWNHG0MDkDROiX7YENP3aKAsqVD6R+Gr8+KPnkS2ccX0VKR6CS5IW/3FQcCc2V6IdivA/GNyvy/0xVCPzccq1WpPG9soku8hliCfM0HRG3nizYknN8dOyxv3fDioQyRrsHZzL9R2YAzfgZFRpNTuql8xmwnIcKIzqnRlUyIugrplDa2WkUgXD3TVLeNTKQDBdS/pm8IPsG3Wjth3d5sqbcHY4TCEnCp+ajuBaezb37aenAtk/M5P6h/PJ8RxlpH2l338Ao8u/P3V5M0CGz055FEfJ5zyUI5YNlPsrlyGbvx5kpf/3tHcfvNGd8ZIEYe3NHU6L7Z+mIzXKx8k5SQSCYdFbVKIJQ8gLjW/EqzsXBbv+mfzjo9HuKwklXxJwfi942xBYys1+d4WY7w38sA6YgSEXiOrr/dBGx6S4btubwvUeR/t+947sOeAyObvW0+LohNG8qqyubf5omvX6MWZy1hHWxM99JCv2AUelztXMcGEKj2yI3onOkex5cXw5WyL5UMwG2hTzNCn8hwvTLqpbOwS/Y8GFs+Kd1b4GEks/YRqfoxljAEmLlKQER5YnsnSUWvwc4mjt8T2o= 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)(396003)(376002)(39860400002)(346002)(136003)(366004)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(9686003)(6506007)(7696005)(83380400001)(41300700001)(19627235002)(8676002)(8936002)(52536014)(316002)(64756008)(33656002)(2906002)(5660300002)(66446008)(66476007)(66556008)(66946007)(76116006)(86362001)(110136005)(38070700009)(26005)(45080400002)(71200400001)(966005)(478600001)(55016003)(38100700002)(82960400001)(122000001)(460985005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Pf2+ARnfTJvWms92pbvC+V0TTcslXFZqwtGi3OEMknhGuiZsL9blHZIAKVzj?= =?us-ascii?Q?oam/MxtQZvOfCpfvfS/9yGYKFLvoG8l1WghtpHpQ53LwunGKrwHm3zgF54Q3?= =?us-ascii?Q?99cu5ox1xCAUpfO5+K30sLIOj7K8WU4SWXqM7Bn+Sa6m55Pc16Wik+oJXyeO?= =?us-ascii?Q?4C5Ep8NPMJPD6CBhKn1oXOMsSf91tgLV6xyi+TiEg9ONXOwz2m9qFtll9Wfy?= =?us-ascii?Q?u5/YaoFnuHKgsm7wkYMgOKqbosfwrOaGzREKR57QvZjZfrKdhO8zXzOKOwmq?= =?us-ascii?Q?MINqeoLJYjtsXzTos4/Xe7eho3AquBfXb3xwFXaCHV9sOlcoBVGZdgNFDNWS?= =?us-ascii?Q?jbYPCu+40hJeYBb5ZrbzsVP4xn3aDddQ5HZI12ci3EDgOM1mS12eZEreHoCZ?= =?us-ascii?Q?YkEKRe5v12keAGbPWyLwXpk0VGKL4v8PoxdRkCTKI2B1+hydJxyOlzDjnLo8?= =?us-ascii?Q?nSybrJ3ZudhaHh9IZwpyga4yZfoip6Ti3BCsy8iu0WhuaO3JCRWDo7pFOsvs?= =?us-ascii?Q?ekmXQ9OYLdkALLV4f1rXeIVUZjv+ROk1wmi3G66iJs1VfX8biljSllp0Txcf?= =?us-ascii?Q?HOdaJ432o4O/3nrY8FjhuNl9a4q7B4GlSPpilqnYap4UxOlKNUp4Kavr10Tw?= =?us-ascii?Q?izx685RrzuKrDlC0Sebhqv04GtLviAZoPMx7lG2AzXBcmrtu3loB2Nd0hrr/?= =?us-ascii?Q?mEQEORBkCsN5FIa4wnzvs8nwTA+m7oKGuzFNa4U0ArqTSvt5p1Bc2TWhBI3k?= =?us-ascii?Q?bWeftTTsPnneL55c4y24hJwvMJu1i1gZNDYvK3avYEOWTYTy+iAOBTeqM39c?= =?us-ascii?Q?HRdDOaIVWRLvlxoM7HMmcp1u3YtOUDZDpmPCfIpN7eDmXym3vrjUB+ivOYJT?= =?us-ascii?Q?U/rCh4Kwgi3hexsQsxZkaCRAoS8NGQLpjgIsm1x2MO0sW05pe6wJLBeltoO2?= =?us-ascii?Q?O2hWopoXBqpskZyVqTHUam4MdgwzmeiSrQ8QV5moWEGSmelKD4KDiAUTCVOt?= =?us-ascii?Q?KUUM/idlK5PryooiQrntl0vxjlOByfHiV/ByB8J/kAWM7VgYnDRBaapN6tnN?= =?us-ascii?Q?kK1eIukFIHYeHulmfvKKDeg6QEgz5ifyEJ6BVqXiw03Ydhg4bga18HVBjOJ1?= =?us-ascii?Q?k7wSGvyVo4q6JIXiY6tKfIhtV9004nO/Qxb7J47rafEqQFlv5yUG1CqU8QGO?= =?us-ascii?Q?BjPtloZryD39J5uaVfHTmzoo8mlSIhMgj8rMzRzVLHztVV9YGlCauJwJ+nS3?= =?us-ascii?Q?jXRd7rkHyKBwyZemnr7bhVyzp3et9WqYfuLcLiwYBUNF96u2o6G/H1HmpUrQ?= =?us-ascii?Q?mxW+tb1EVM19eAnfviEXnyl7M6y7mFDvtNq1LyEG0+qAxZq9JwrRSyE0eLp8?= =?us-ascii?Q?n20zzv/Agt9xzrX9KUORrOxjJVAq76zt40PSWyvxVTdEooV4ZJ/ZqS5rmWnp?= =?us-ascii?Q?c5MMF/AQecHDwNxHzQewuoeNCfj2MsnyCFDu9HsUpCKfD56Mf5yfL41yV0Lt?= =?us-ascii?Q?6KuiposhXUPbKC57ylVVNxMhTVpUMzDfq2bkSxAb9k4bak/n4hNaIeQFqCof?= =?us-ascii?Q?Xq9xsjKHaFlVddxMpESjSU/K7auRBPS9z/Af7hZe?= 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: 09916f2f-039d-48ce-e191-08dc1bd77471 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jan 2024 05:52:16.4931 (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: bzkjfZMEOy1PgbYSfvlWgUs1TwflXE6iwPhYT14JcLTBjFctsve8lpt95V2qgQNurjKtANNnCfZQ9+O48kshKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5595 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 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 | 200 +++++ > > libavcodec/d3d12va_encode_hevc.c | 1016 +++++++++++++++++++++ > > libavcodec/hw_base_encode.h | 2 +- > > 7 files changed, 2668 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 > >> + D3D12_OBJECT_RELEASE(ctx->sync_ctx.fence); >> + if (ctx->sync_ctx.event) >> + CloseHandle(ctx->sync_ctx.event); >> + >> + D3D12_OBJECT_RELEASE(ctx->video_device3); >> + D3D12_OBJECT_RELEASE(ctx->device); >> + D3D12_OBJECT_RELEASE(ctx->encoder_heap); >> + D3D12_OBJECT_RELEASE(ctx->encoder); > >We need to release all of the objects, including the encoder and >encoder_heap, created by the device before releasing the device. > >> + >> +typedef struct D3D12VAEncodeProfile { >> + //lavc profile value (AV_PROFILE_*). >> + int av_profile; >> + //Supported bit depth. >> + int depth; >> + //Number of components. >> + int nb_components; >> + //Chroma subsampling in width dimension. >> + int log2_chroma_w; >> + //Chroma subsampling in height dimension. >> + int log2_chroma_h; >> + //D3D12 profile value. >> + D3D12_VIDEO_ENCODER_PROFILE_DESC d3d12_profile; >> +} D3D12VAEncodeProfile; >> + >> +typedef struct D3D12VAEncodeRCMode { >> + // Base. >> + HWBaseEncodeRCMode base; >> + // Supported by D3D12 HW. >> + int supported; >> + // D3D12 mode value. >> + D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE d3d12_mode; >> +} D3D12VAEncodeRCMode; >> + >> +typedef struct D3D12VAEncodeContext { >> + HWBaseEncodeContext base; >> + >> + //Codec-specific hooks. >> + const struct D3D12VAEncodeType *codec; >> + >> + //Chosen encoding profile details. >> + const D3D12VAEncodeProfile *profile; >> + >> + //Chosen rate control mode details. >> + const D3D12VAEncodeRCMode *rc_mode; >> + >> + AVD3D12VADeviceContext *hwctx; >> + >> + //Device3 interface. >> + ID3D12Device3 *device3; >> + >> + ID3D12VideoDevice3 *video_device3; >> + >> + //Pool of (reusable) bitstream output buffers. >> + AVBufferPool *output_buffer_pool; >> + >> + //D3D12 video encoder. >> + AVBufferRef *encoder_ref; >> + >> + ID3D12VideoEncoder *encoder; >> + >> + //D3D12 video encoder heap. >> + ID3D12VideoEncoderHeap *encoder_heap; >> + >> + //A cached queue for reusing the D3D12 command allocators. >> + //@see https://learn.microsoft.com/en- >us/windows/win32/direct3d12/recording-command-lists-and- >bundles#id3d12commandallocator >> + AVFifo *allocator_queue; >> + >> + //D3D12 command queue. >> + ID3D12CommandQueue *command_queue; >> + >> + //D3D12 video encode command list. >> + ID3D12VideoEncodeCommandList2 *command_list; >> + >> + //The sync context used to sync command queue. >> + AVD3D12VASyncContext sync_ctx; >> + >> + //bi_not_empty feature. >> + int bi_not_empty; >> + >> + //D3D12 hardware structures. >> + D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC resolution; >> + >> + D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION codec_conf; >> + >> + D3D12_VIDEO_ENCODER_RATE_CONTROL rc; >> + >> + D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS >req; >> + >> + D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE GOP; >> + >> + >D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS >res_limits; >> + >> + D3D12_VIDEO_ENCODER_LEVEL_SETTING level; >> +} D3D12VAEncodeContext; >> + >Can we use the comment style the same as D3D12VADecodeContext? > Will update in V2 thanks for the review. Thanks, 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".