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 9450D485DE for ; Thu, 6 Jun 2024 13:12:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BE17168D6A9; Thu, 6 Jun 2024 16:12:50 +0300 (EEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2AB5868D394 for ; Thu, 6 Jun 2024 16:12:42 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1717679568; x=1749215568; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=7uFUN6bfjqn7BZ8WXP5fKgNMCm5fvSd0TcX7LnJEBDw=; b=e9WECiP5rGijI9UQ+JzXQ/Dfd/QR6SvpQUofSd35H6vDuJX1LYzpDGtT JnOSUK+2197uTo8SSiUM4Sxw/NH3rX3JwlY1OeD5yXyOzPvDnc4jTAEt2 L+hvHmDxnbHGLEkf2TNaZ1a2y6psEHYppByaOVkvNe8jHgx6f8Y3zt1us 8Qc2i39cICiJ4vDkvnesuHA2jtf95UOmFccWFvhsM6u7YES5t36qLxrpl /JB+U+t7UBrdvXv4QPnSjaxrU5UoA4herPgvwxJMdvwTwYOR1T77kB/Dp ck6pQ6vUXp3sLP6kzmeK5Ox5qBuwIT2pFbAF8aZg9tpSZCcFTSvJaX0ir w==; X-CSE-ConnectionGUID: MRPVdcDvS+WUCIoBDWLKGg== X-CSE-MsgGUID: BmBxgKKySGWouvClkkbGPg== X-IronPort-AV: E=McAfee;i="6600,9927,11095"; a="18169813" X-IronPort-AV: E=Sophos;i="6.08,219,1712646000"; d="scan'208";a="18169813" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jun 2024 06:12:26 -0700 X-CSE-ConnectionGUID: +ZwZRF9AQNui5pEr4hv7Tg== X-CSE-MsgGUID: TeqpoPu2RBucjuVMRSquJg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,219,1712646000"; d="scan'208";a="61152671" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmviesa002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 06 Jun 2024 06:12:26 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 6 Jun 2024 06:12:26 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 6 Jun 2024 06:12:25 -0700 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.39 via Frontend Transport; Thu, 6 Jun 2024 06:12:25 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) 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.39; Thu, 6 Jun 2024 06:12:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F7nKqe4gfvIyGmWPDidVYUPHb6xbd3yrBoLzMTKopotQw9BIJTSaDhkx5IyLfJrTfG1A9Um+sLGMGD0LruuDjH512IvHMRa8f210RB2qtjdIcICSQq90dnfczP6Yvs33c0aHF6z3ND3rV63yx3FdmVrohBkeu0d+2MfXXKXSV5Afzc+mCNilSs3b40z970Ejlq5nk/tH7ZupMZ0KYsjfEZvH4uvsiixkIomLqw5IJ47CJfFjiPFcB1xt2Pm1hTbzRRObW1r+MGRP2/XXeVmjPB2gXGflQVVkk15hEBIzm4D/Vd7WdT0kgz6uF42Peoa+Nyletd39Fwf8mgo0XdVqXw== 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=7uFUN6bfjqn7BZ8WXP5fKgNMCm5fvSd0TcX7LnJEBDw=; b=oDkmK2HrYrTXUzkIywB6p1vn8d8R9De6+2ifVLwmhptutnpVR3sQa5R/3dG1o3id+7L4o2KZ9QpR4O2qMAs5aZhfJGcfJsPwkALljCByWnkqKnSUJW+uwmIM18FB2r+C7N+eZ2k2YLyiKpmQV/1KWrvvIs9Szlkz0pufUQJ+cNB/FB1gZzvpI6Aart+nyJc9omXvd2Jc7+r2vcVsqnzxSGnJlN1/Tej5kfJLBVyygsBA+SmeEiBXUZ+Q+V34MEkjfyG5694rYqWdtJ6DsJc8LNMccbG8afxpMY0qqCm5Iiaw/RJ0nLKcOAdyFzI4Kqfbn7WDUyJVjD+9DlUBKdanwQ== 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 MW4PR11MB6739.namprd11.prod.outlook.com (2603:10b6:303:20b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.30; Thu, 6 Jun 2024 13:12:23 +0000 Received: from CH3PR11MB8659.namprd11.prod.outlook.com ([fe80::7037:678a:eb45:ac6c]) by CH3PR11MB8659.namprd11.prod.outlook.com ([fe80::7037:678a:eb45:ac6c%3]) with mapi id 15.20.7633.033; Thu, 6 Jun 2024 13:12:22 +0000 From: "Wu, Tong1" To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH v13 15/15] avcodec/hw_base_encode: avoid getting FFHWBaseEncodeContext from avctx Thread-Index: AQHat9hXFZqUKQFbkU+2bAzwkdL7NLG6QeVAgABpIACAAAuKUA== Date: Thu, 6 Jun 2024 13:12:22 +0000 Message-ID: References: <20240603091909.1161-1-tong1.wu@intel.com> <20240603091909.1161-15-tong1.wu@intel.com> <93b04aac-a877-4a5f-9e1e-908d88c5141d@lynne.ee> <2d3a8bbc-f952-43a7-83e8-a94425e959c0@lynne.ee> In-Reply-To: <2d3a8bbc-f952-43a7-83e8-a94425e959c0@lynne.ee> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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_|MW4PR11MB6739:EE_ x-ms-office365-filtering-correlation-id: ec94a410-6418-4252-4ad7-08dc862a4d87 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|366007|1800799015|38070700009; x-microsoft-antispam-message-info: =?utf-8?B?cHZzU2NJTHJQcnhreWpITW5hMDhUcS9tTUdnVjUwN2xtUjN5eFo3TmYzd2Jq?= =?utf-8?B?TktUZTZGRHQxNG92MGRnOGczazlUVDdrS0pFdGNQQ1lCZjhWOElpcmFVWjU2?= =?utf-8?B?THlKYmRPTlBaTzBJMDJKbnJuWFhXNFM1NlBLclN0VXVjbXlSOU1Gd0djeTBa?= =?utf-8?B?MFlsR0dtU2haU2loOHJkN0lOaU5jamhPZE41Um51K1ZybUtLTGZlSWRnZVA5?= =?utf-8?B?ektwNnM1MWR3TmZoaFB6Yk5BSFcwNmFEN01oUGo1bytCZDFpNEg3Lys2ZmYx?= =?utf-8?B?QjJPY2w4SjFPbnFrdVcvS21XS2l6bllvSU1Ea290YzNjYmxMNi9BMjRtd1VP?= =?utf-8?B?NjRaa0dhZkRlY1FscWlnRHF0Si96cDdoNWlXK3d1QjQxbHhVOHNHZ3VMZnpv?= =?utf-8?B?aDBhOG1xWlVtWXdsNjRFb1o1M0pVZ3RQRTNuYlhCYlNZNUhxV2FVZXFaemJ6?= =?utf-8?B?ZGN5eTJzQmU0eDV0VzhDTEtwa2dneTZ4MjROMWx0bXYwMXBqL2tEdmJPa1pP?= =?utf-8?B?N3hvYzFTSlZERFAvNlNsQ3QrS0daZzNjWm4yS1N6RHFMOXVCTjZxc3dkK3Ax?= =?utf-8?B?ZWMwcWdHV1B4VUovR3czWlhTZXJ5UVJWTjlTVklic0FOS0hOOU5QMWRKSTF3?= =?utf-8?B?a3NBUFZRaXVRYnRweXEyL21obHByVnF4UG1tazh0WW5kRFRtL1NzZUxneFpq?= =?utf-8?B?UFJ3NWRBSnY4dmxMQzVIcnJvQzE5NHFycFlwVytoc0hDak4rdUdpZlM0TURu?= =?utf-8?B?UktJSmdwNHExYlJBcFhYTXN3a2JlM08yZllyTU55SnBmSTNlb1plT3ZXQXcy?= =?utf-8?B?WC9Cc04yTUZadUN5enFkNnFkYUlCQWpLQ1kzckVOUUdUVlhKZzJJNyszQXFp?= =?utf-8?B?RWRySjJKcitQZlVQZ1loaHpxTTY4MDlOdk1kV2dPRndkK2QwTFNveDh2SVMv?= =?utf-8?B?MTZHTitzenNpUUh6UE4rQTdMbnQ4WU1zeE1KdGxjRFdWWEFmUVRGSkhwR3BN?= =?utf-8?B?Lzh0UVZPd1d5b3pJTUMvSmVDdjJ6MGpWc0FiZFJLWjNBbmsxVVMxb0VjWm81?= =?utf-8?B?Uk8vM0hzbXYrVWpWbzdXVHppRWpJK2hGa0JDVGhLTEU1bm9kcUJBN0hzMVp2?= =?utf-8?B?Um5UTDJDZXp5eUIvK1o1cDMrSkVEdTRhTmlvYjdwa3BjcEVOcFlyY2MrOHdx?= =?utf-8?B?cjk2TTdScjM1ZXlUM3lHSy9rUTRPKzlOejRidytYSzBZSFBvVHZZZ0VwNmRR?= =?utf-8?B?VFZEbm4wSHcxMkVOaWVGa21XTURCeHpTbDREWG14N01zMWMwRTRTZ2d0MllE?= =?utf-8?B?VDc2OWNsUkRjVlR0SzgzSVA4eC9QeWUrRmNkWk1FT01rUVhGVG9oVm9iNTBS?= =?utf-8?B?WDBOc29XZTYrdFhTcW1rNmlia1ZCY3Z1N3pEaGFSWkRsdWJUMFpPM2tZSEs2?= =?utf-8?B?d3crNXYvbXNEN1RXMThPSnduZUtNMVpkcXZ3bURRS005K3A3eUNBTkJDU2pi?= =?utf-8?B?L0oyZ0xycmxkNkdCZFo1NFd1TTZpaDVWTGJuQ3NwL1NxY2MxRnQ3b2lqOTQ1?= =?utf-8?B?QXFmdkI2RU5xZWhGSWtoMGZtRjFFQ21PU3BiZ2FnZDh2TGUyaGpnckRqZ01w?= =?utf-8?B?V0U1cHBLZnk0K24rOFpNK2tvRGNPV01uSmFLVXV5bGxENkJnNVpBMGFlQ0JM?= =?utf-8?B?bGpZeGhsN0piK1pXZDkxaUozcUp4VlJSUUZSNVN5L0kvb3BvS0tpUzU3dXZs?= =?utf-8?B?WnFDQ0ZPTHI0MEF0UDAyZk0vN1BJampiemcvZnpVNUtteDNkejJrNXJWTTRI?= =?utf-8?Q?RR6j2MOfrVI9aKxvJC21d6XbF3fgrZQ8L5R5A=3D?= 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)(376005)(366007)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WG54Zjh3bHA3UjFVOEdrZHAzb3cwUll4dyszandJOGIwb0ViS2JzTURpby9k?= =?utf-8?B?Z3BVTy8zMVowbmVXYmJ5d1JkSnNsRmEzVGh1eWxnL21DWDQyQjQrRldERXlj?= =?utf-8?B?aVVtalVXRDJLWC9QR0E2dzdsaHY0eHBSUHRmdGZ4TUtJRlhqVXBIcTVQTGNK?= =?utf-8?B?UTNoRngrYXA2OG9xTXlrTmJwaCswL1gvaVloZTBobmc1NUdoWkhZUFM0Y2ly?= =?utf-8?B?bWRnMkRvRnZxektmUFd6eEtQdklTc3h3MVllNStUUllIdEpmdkRleFZRaGZK?= =?utf-8?B?eXJIVHE2aGJrY25RV1JOdTV5NTF3MzRPSjExUXhKc0lDOU9pYWpwTXRsdjRY?= =?utf-8?B?b0Q2VDRkTUV0RjVkSWNJei9RaUhiSGU4eVF4azJFTVFEVFBzM29aSmtLUEUw?= =?utf-8?B?c2xYdWZDMEJiWENHU0tzbWZ3ODZGVlYvUnlOTWNnbXhkYkN3WmNIZkdXWklo?= =?utf-8?B?YlA2Y3AxWkxPMDNYdk9jQ2JhOGNmWkZ3ZHpoaSsrdC96emdYQ3VhcHFrUTZ6?= =?utf-8?B?eFVUTUJQaWtFeGk2MExpTHVSWHZHelcrMUh0L1M1L2NpWTFlMm5mMVllSTdi?= =?utf-8?B?MDVRNWhWRXNhelkrOGVsVFk3WHk3Q2V3TjJRZUlnNVpjT2xmQWFlbEh6S1gw?= =?utf-8?B?SnAzNlh5UmlKdFN3WGo3emZ0eWIzTi9zR1U4V2UwSmRscjhId3VuWkh2TG42?= =?utf-8?B?ZkhqLzZxaDhKdkFEYzFQUXhidjdoV2tSRVJHak5MWUE4djdFMm5DQkNkVktS?= =?utf-8?B?Q2N6T3FFa3ZTZkZBUXZzbHBBbzRnUDdLd0VPU3RSWEpsdWVkSmw3akFMSzVt?= =?utf-8?B?NXJCejVwclFHeFdZcUU5b3F6N0tLV2JNOXpueFRDRGt0dFlFS1FZMG1IZDEv?= =?utf-8?B?K1FmWGlXQkFCazFHREZESnpWdFJ5Ny8zWU9rcWhBTG9XSjkxK1hXR2VuNHBw?= =?utf-8?B?a3ZDRCt3dm1zMnlMcHVCRVZBQ0dMdzExS3Qxa3crSCtCQmtDbHljam5qUjRG?= =?utf-8?B?eGM5TnlLbi9KRXpJYzVGcDlESThuanBmVnpvY0toVHBzd0ZKMkRUdVM1Rmc4?= =?utf-8?B?dGlWTXRoUnd4MDcrMHdDUThCMzZXTGM2UjFPYklNQlZtT0ZmcTJSUFd6aXUy?= =?utf-8?B?bXdlamdrYTBuai9lNXZTOUF1Wk83ZWJyMU13WlVZcmF4T0VTdjl3citYQjRI?= =?utf-8?B?azNqNVdxcWI5Qnl6am1KeXc3bUxmVW1uaVNUNnFyQkg4Y2hnTnVXK1BwaEkw?= =?utf-8?B?aWxqRE5tLzRDVFAxcGN1bCs4STVSVE9kNHQyQ2JMYVpDa242d0t6SnFFSVJX?= =?utf-8?B?U1ozQ1VzVGgyck1GcmlpUmZMOUx6bldRbkMwQ2FRbmRJMTVmSVB3STNyeFYv?= =?utf-8?B?Qi9KRk9DTjM4ME4vTW54ekJzWE5WbkwySTMxZlRodmJnS1Bsd1Q0UjExdElm?= =?utf-8?B?MkIwazY3NUhRZzZGa085eTJwc29RTzNQWTd4cEE4SndWdEFEQmt0dExlYXU5?= =?utf-8?B?OHpQd05NbzVua05nQUE3OHFjTEEvcm5qZFpzSk9EbFVoRzE2VVc5YURnUi9H?= =?utf-8?B?R2JtM0U3LytmeWVMSG5XSnM1cnhZUDhybGxneDRlT0dzY2c4UHJlUHFZdXRK?= =?utf-8?B?aFYxcEpzeWNPanUxbUdIZjMrYkZtNFh4eHJFZG1zWHpQUnI2UUNheXMyd0FT?= =?utf-8?B?RjhFTW1wMlJSZ00yR1Q4TlMyTldpbjZRYnY0M3lXOHMvMWNNcUV6MmxNWW81?= =?utf-8?B?RytRSXpweEx0NkVSNk9oczJScnVxTWM1NHcxM0tYQlJuMDlRQ3hqalU4eGpC?= =?utf-8?B?ZmZXdHA5S1RDOExTK2ZJZkRPS1oxTmNHeDlYYWYyWXY4Y1BzbGNWNzlyY1pN?= =?utf-8?B?NFZjY3RpSmJ0dm9WZmZQVXRudXZQY1VPZ1RMU25aREFQOHk0bWZPTnd6TWNB?= =?utf-8?B?QW0rTTRiYkRUemhwWHVWUzV5VE40R0N6RW1aN3JmU0l2bXRlOGVMdWw3UHdD?= =?utf-8?B?NnROeXNMVUJ5UENpUTg0Nzgwekd6R0pFa3Nmc2FISi9vZmRYQUFheUExWW5P?= =?utf-8?B?UDBlUFVoTWhITnprNGZFOXlVK2tOWWU1eWtWTzV4enRFeDhTN3BiYnZFdFJM?= =?utf-8?Q?MNdM=3D?= 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: ec94a410-6418-4252-4ad7-08dc862a4d87 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2024 13:12:22.6946 (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: 0CpwqgdojK4bT4fQbuflgbiSOA7/78E4lWWGoGG2+AVDDvODz9hq/QzpoTeUBNxrXAM1cYPw/pF8X9Ya5ZxAtA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB6739 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v13 15/15] avcodec/hw_base_encode: avoid getting FFHWBaseEncodeContext from avctx 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 Cc: Lynne 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: >-----Original Message----- >From: ffmpeg-devel On Behalf Of Lynne >via ffmpeg-devel >Sent: Thursday, June 6, 2024 8:31 PM >To: FFmpeg development discussions and patches >Cc: Lynne >Subject: Re: [FFmpeg-devel] [PATCH v13 15/15] avcodec/hw_base_encode: >avoid getting FFHWBaseEncodeContext from avctx > >On 06/06/2024 08:46, Wu, Tong1 wrote: >>> From: ffmpeg-devel On Behalf Of >Lynne >>> via ffmpeg-devel >>> Sent: Thursday, June 6, 2024 2:11 PM >>> To: ffmpeg-devel@ffmpeg.org >>> Cc: Lynne >>> Subject: Re: [FFmpeg-devel] [PATCH v13 15/15] avcodec/hw_base_encode: >>> avoid getting FFHWBaseEncodeContext from avctx >>> >>> On 03/06/2024 11:19, tong1.wu-at-intel.com@ffmpeg.org wrote: >>>> From: Tong Wu >>>> >>>> This patch is to make FFHWBaseEncodeContext a standalone component >>>> and avoid getting FFHWBaseEncodeContext from avctx->priv_data. >>>> This patch also removes some unnecessary AVCodecContext arguments. >>>> >>>> For receive_packet call, a small wrapper is introduced. >>>> >>>> Signed-off-by: Tong Wu >>>> --- >>>> libavcodec/d3d12va_encode.c | 17 +++++--- >>>> libavcodec/d3d12va_encode.h | 2 + >>>> libavcodec/d3d12va_encode_hevc.c | 2 +- >>>> libavcodec/hw_base_encode.c | 71 ++++++++++++++------------------ >>>> libavcodec/hw_base_encode.h | 17 ++++---- >>>> libavcodec/vaapi_encode.c | 16 ++++--- >>>> libavcodec/vaapi_encode.h | 2 + >>>> libavcodec/vaapi_encode_av1.c | 2 +- >>>> libavcodec/vaapi_encode_h264.c | 2 +- >>>> libavcodec/vaapi_encode_h265.c | 2 +- >>>> libavcodec/vaapi_encode_mjpeg.c | 2 +- >>>> libavcodec/vaapi_encode_mpeg2.c | 2 +- >>>> libavcodec/vaapi_encode_vp8.c | 2 +- >>>> libavcodec/vaapi_encode_vp9.c | 2 +- >>>> 14 files changed, 76 insertions(+), 65 deletions(-) >>>> >>>> diff --git a/libavcodec/d3d12va_encode.c b/libavcodec/d3d12va_encode.c >>>> index 0fbf8eb07c..9f7a42911e 100644 >>>> --- a/libavcodec/d3d12va_encode.c >>>> +++ b/libavcodec/d3d12va_encode.c >>>> @@ -676,6 +676,7 @@ end: >>>> static int d3d12va_encode_output(AVCodecContext *avctx, >>>> const FFHWBaseEncodePicture *base_pic, AVPacket >*pkt) >>>> { >>>> + FFHWBaseEncodeContext *base_ctx = avctx->priv_data; >>>> D3D12VAEncodePicture *pic = (D3D12VAEncodePicture *)base_pic; >>>> AVPacket *pkt_ptr = pkt; >>>> int err; >>>> @@ -691,7 +692,8 @@ static int >d3d12va_encode_output(AVCodecContext >>> *avctx, >>>> av_log(avctx, AV_LOG_DEBUG, "Output read for >>> pic %"PRId64"/%"PRId64".\n", >>>> base_pic->display_order, base_pic->encode_order); >>>> >>>> - ff_hw_base_encode_set_output_property(avctx, >>> (FFHWBaseEncodePicture *)base_pic, pkt_ptr, 0); >>>> + ff_hw_base_encode_set_output_property(base_ctx, avctx, >>> (FFHWBaseEncodePicture *)base_pic, >>>> + pkt_ptr, 0); >>>> >>>> return 0; >>>> } >>>> @@ -1119,7 +1121,7 @@ static int >>> d3d12va_encode_init_gop_structure(AVCodecContext *avctx) >>>> "replacing them with B-frames.\n"); >>>> } >>>> >>>> - err = ff_hw_base_init_gop_structure(avctx, ref_l0, ref_l1, ctx->codec- >>>> flags, 0); >>>> + err = ff_hw_base_init_gop_structure(base_ctx, avctx, ref_l0, ref_l1, ctx- >>>> codec->flags, 0); >>>> if (err < 0) >>>> return err; >>>> >>>> @@ -1351,7 +1353,7 @@ static int >>> d3d12va_encode_create_recon_frames(AVCodecContext *avctx) >>>> enum AVPixelFormat recon_format; >>>> int err; >>>> >>>> - err = ff_hw_base_get_recon_format(avctx, NULL, &recon_format); >>>> + err = ff_hw_base_get_recon_format(base_ctx, NULL, &recon_format); >>>> if (err < 0) >>>> return err; >>>> >>>> @@ -1390,6 +1392,11 @@ static const FFHWEncodePictureOperation >>> d3d12va_type = { >>>> .free = &d3d12va_encode_free, >>>> }; >>>> >>>> +int ff_d3d12va_encode_receive_packet(AVCodecContext *avctx, AVPacket >>> *pkt) >>>> +{ >>>> + return ff_hw_base_encode_receive_packet(avctx->priv_data, avctx, >pkt); >>>> +} >>>> + >>>> int ff_d3d12va_encode_init(AVCodecContext *avctx) >>>> { >>>> FFHWBaseEncodeContext *base_ctx = avctx->priv_data; >>>> @@ -1398,7 +1405,7 @@ int ff_d3d12va_encode_init(AVCodecContext >>> *avctx) >>>> int err; >>>> HRESULT hr; >>>> >>>> - err = ff_hw_base_encode_init(avctx); >>>> + err = ff_hw_base_encode_init(avctx, base_ctx); >>>> if (err < 0) >>>> goto fail; >>>> >>>> @@ -1552,7 +1559,7 @@ int ff_d3d12va_encode_close(AVCodecContext >>> *avctx) >>>> D3D12_OBJECT_RELEASE(ctx->video_device3); >>>> D3D12_OBJECT_RELEASE(ctx->device3); >>>> >>>> - ff_hw_base_encode_close(avctx); >>>> + ff_hw_base_encode_close(base_ctx); >>>> >>>> return 0; >>>> } >>>> diff --git a/libavcodec/d3d12va_encode.h >b/libavcodec/d3d12va_encode.h >>>> index f355261f66..1a0abc5bd0 100644 >>>> --- a/libavcodec/d3d12va_encode.h >>>> +++ b/libavcodec/d3d12va_encode.h >>>> @@ -313,6 +313,8 @@ typedef struct D3D12VAEncodeType { >>>> char *data, size_t *data_len); >>>> } D3D12VAEncodeType; >>>> >>>> +int ff_d3d12va_encode_receive_packet(AVCodecContext *avctx, AVPacket >>> *pkt); >>>> + >>>> int ff_d3d12va_encode_init(AVCodecContext *avctx); >>>> int ff_d3d12va_encode_close(AVCodecContext *avctx); >>>> >>>> diff --git a/libavcodec/d3d12va_encode_hevc.c >>> b/libavcodec/d3d12va_encode_hevc.c >>>> index 24823b3c56..4a12ddd0dc 100644 >>>> --- a/libavcodec/d3d12va_encode_hevc.c >>>> +++ b/libavcodec/d3d12va_encode_hevc.c >>>> @@ -990,7 +990,7 @@ const FFCodec ff_hevc_d3d12va_encoder = { >>>> .p.id = AV_CODEC_ID_HEVC, >>>> .priv_data_size = sizeof(D3D12VAEncodeHEVCContext), >>>> .init = &d3d12va_encode_hevc_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + >FF_CODEC_RECEIVE_PACKET_CB(&ff_d3d12va_encode_receive_packet), >>>> .close = &d3d12va_encode_hevc_close, >>>> .p.priv_class = &d3d12va_encode_hevc_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>>> diff --git a/libavcodec/hw_base_encode.c b/libavcodec/hw_base_encode.c >>>> index 92f69bb78c..ecb4be6aa4 100644 >>>> --- a/libavcodec/hw_base_encode.c >>>> +++ b/libavcodec/hw_base_encode.c >>>> @@ -94,14 +94,13 @@ static void >>> hw_base_encode_remove_refs(FFHWBaseEncodePicture *pic, int level) >>>> pic->ref_removed[level] = 1; >>>> } >>>> >>>> -static void hw_base_encode_set_b_pictures(AVCodecContext *avctx, >>>> +static void hw_base_encode_set_b_pictures(FFHWBaseEncodeContext >*ctx, >>>> FFHWBaseEncodePicture *start, >>>> FFHWBaseEncodePicture *end, >>>> FFHWBaseEncodePicture *prev, >>>> int current_depth, >>>> FFHWBaseEncodePicture **last) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> FFHWBaseEncodePicture *pic, *next, *ref; >>>> int i, len; >>>> >>>> @@ -148,20 +147,19 @@ static void >>> hw_base_encode_set_b_pictures(AVCodecContext *avctx, >>>> hw_base_encode_add_ref(pic, ref, 0, 1, 0); >>>> >>>> if (i > 1) >>>> - hw_base_encode_set_b_pictures(avctx, start, pic, pic, >>>> + hw_base_encode_set_b_pictures(ctx, start, pic, pic, >>>> current_depth + 1, &next); >>>> else >>>> next = pic; >>>> >>>> - hw_base_encode_set_b_pictures(avctx, pic, end, next, >>>> + hw_base_encode_set_b_pictures(ctx, pic, end, next, >>>> current_depth + 1, last); >>>> } >>>> } >>>> >>>> -static void hw_base_encode_add_next_prev(AVCodecContext *avctx, >>>> +static void hw_base_encode_add_next_prev(FFHWBaseEncodeContext >>> *ctx, >>>> FFHWBaseEncodePicture *pic) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> int i; >>>> >>>> if (!pic) >>>> @@ -192,9 +190,9 @@ static void >>> hw_base_encode_add_next_prev(AVCodecContext *avctx, >>>> } >>>> >>>> static int hw_base_encode_pick_next(AVCodecContext *avctx, >>>> + FFHWBaseEncodeContext *ctx, >>>> FFHWBaseEncodePicture **pic_out) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> FFHWBaseEncodePicture *pic = NULL, *prev = NULL, *next, *start; >>>> int i, b_counter, closed_gop_end; >>>> >>>> @@ -333,19 +331,18 @@ static int >>> hw_base_encode_pick_next(AVCodecContext *avctx, >>>> } >>>> >>>> if (b_counter > 0) { >>>> - hw_base_encode_set_b_pictures(avctx, start, pic, pic, 1, >>>> + hw_base_encode_set_b_pictures(ctx, start, pic, pic, 1, >>>> &prev); >>>> } else { >>>> prev = pic; >>>> } >>>> - hw_base_encode_add_next_prev(avctx, prev); >>>> + hw_base_encode_add_next_prev(ctx, prev); >>>> >>>> return 0; >>>> } >>>> >>>> -static int hw_base_encode_clear_old(AVCodecContext *avctx) >>>> +static int hw_base_encode_clear_old(AVCodecContext *avctx, >>> FFHWBaseEncodeContext *ctx) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> FFHWBaseEncodePicture *pic, *prev, *next; >>>> >>>> av_assert0(ctx->pic_start); >>>> @@ -381,14 +378,12 @@ static int >>> hw_base_encode_clear_old(AVCodecContext *avctx) >>>> return 0; >>>> } >>>> >>>> -static int hw_base_encode_check_frame(AVCodecContext *avctx, >>>> +static int hw_base_encode_check_frame(FFHWBaseEncodeContext *ctx, >>>> const AVFrame *frame) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> - >>>> if ((frame->crop_top || frame->crop_bottom || >>>> frame->crop_left || frame->crop_right) && !ctx->crop_warned) { >>>> - av_log(avctx, AV_LOG_WARNING, "Cropping information on input " >>>> + av_log(ctx->log_ctx, AV_LOG_WARNING, "Cropping information on >>> input " >>>> "frames ignored due to lack of API support.\n"); >>>> ctx->crop_warned = 1; >>>> } >>>> @@ -398,7 +393,7 @@ static int >>> hw_base_encode_check_frame(AVCodecContext *avctx, >>>> av_frame_get_side_data(frame, >>> AV_FRAME_DATA_REGIONS_OF_INTEREST); >>>> >>>> if (sd && !ctx->roi_warned) { >>>> - av_log(avctx, AV_LOG_WARNING, "ROI side data on input " >>>> + av_log(ctx->log_ctx, AV_LOG_WARNING, "ROI side data on input " >>>> "frames ignored due to lack of driver support.\n"); >>>> ctx->roi_warned = 1; >>>> } >>>> @@ -407,9 +402,9 @@ static int >>> hw_base_encode_check_frame(AVCodecContext *avctx, >>>> return 0; >>>> } >>>> >>>> -static int hw_base_encode_send_frame(AVCodecContext *avctx, AVFrame >>> *frame) >>>> +static int hw_base_encode_send_frame(AVCodecContext *avctx, >>> FFHWBaseEncodeContext *ctx, >>>> + AVFrame *frame) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> FFHWBaseEncodePicture *pic; >>>> int err; >>>> >>>> @@ -417,7 +412,7 @@ static int >>> hw_base_encode_send_frame(AVCodecContext *avctx, AVFrame *frame) >>>> av_log(avctx, AV_LOG_DEBUG, "Input frame: %ux%u >(%"PRId64").\n", >>>> frame->width, frame->height, frame->pts); >>>> >>>> - err = hw_base_encode_check_frame(avctx, frame); >>>> + err = hw_base_encode_check_frame(ctx, frame); >>>> if (err < 0) >>>> return err; >>>> >>>> @@ -488,12 +483,11 @@ fail: >>>> return err; >>>> } >>>> >>>> -int ff_hw_base_encode_set_output_property(AVCodecContext *avctx, >>>> +int ff_hw_base_encode_set_output_property(FFHWBaseEncodeContext >>> *ctx, >>>> + AVCodecContext *avctx, >>>> FFHWBaseEncodePicture *pic, >>>> AVPacket *pkt, int flag_no_delay) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> - >>>> if (pic->type == FF_HW_PICTURE_TYPE_IDR) >>>> pkt->flags |= AV_PKT_FLAG_KEY; >>>> >>>> @@ -528,9 +522,9 @@ int >>> ff_hw_base_encode_set_output_property(AVCodecContext *avctx, >>>> return 0; >>>> } >>>> >>>> -int ff_hw_base_encode_receive_packet(AVCodecContext *avctx, AVPacket >>> *pkt) >>>> +int ff_hw_base_encode_receive_packet(FFHWBaseEncodeContext *ctx, >>>> + AVCodecContext *avctx, AVPacket *pkt) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> FFHWBaseEncodePicture *pic = NULL; >>>> AVFrame *frame = ctx->frame; >>>> int err; >>>> @@ -558,7 +552,7 @@ start: >>>> if (err == AVERROR_EOF) >>>> frame = NULL; >>>> >>>> - err = hw_base_encode_send_frame(avctx, frame); >>>> + err = hw_base_encode_send_frame(avctx, ctx, frame); >>>> if (err < 0) >>>> return err; >>>> >>>> @@ -571,7 +565,7 @@ start: >>>> >>>> if (ctx->async_encode) { >>>> if (av_fifo_can_write(ctx->encode_fifo)) { >>>> - err = hw_base_encode_pick_next(avctx, &pic); >>>> + err = hw_base_encode_pick_next(avctx, ctx, &pic); >>>> if (!err) { >>>> av_assert0(pic); >>>> pic->encode_order = ctx->encode_order + >>>> @@ -596,7 +590,7 @@ start: >>>> av_fifo_read(ctx->encode_fifo, &pic, 1); >>>> ctx->encode_order = pic->encode_order + 1; >>>> } else { >>>> - err = hw_base_encode_pick_next(avctx, &pic); >>>> + err = hw_base_encode_pick_next(avctx, ctx, &pic); >>>> if (err < 0) >>>> return err; >>>> av_assert0(pic); >>>> @@ -619,7 +613,7 @@ start: >>>> } >>>> >>>> ctx->output_order = pic->encode_order; >>>> - hw_base_encode_clear_old(avctx); >>>> + hw_base_encode_clear_old(avctx, ctx); >>>> >>>> /** loop to get an available pkt in encoder flushing. */ >>>> if (ctx->end_of_stream && !pkt->size) >>>> @@ -633,11 +627,10 @@ end: >>>> return 0; >>>> } >>>> >>>> -int ff_hw_base_init_gop_structure(AVCodecContext *avctx, uint32_t >ref_l0, >>> uint32_t ref_l1, >>>> +int ff_hw_base_init_gop_structure(FFHWBaseEncodeContext *ctx, >>> AVCodecContext *avctx, >>>> + uint32_t ref_l0, uint32_t ref_l1, >>>> int flags, int prediction_pre_only) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> - >>>> if (flags & FF_HW_FLAG_INTRA_ONLY || avctx->gop_size <= 1) { >>>> av_log(avctx, AV_LOG_VERBOSE, "Using intra frames only.\n"); >>>> ctx->gop_size = 1; >>>> @@ -687,9 +680,9 @@ int >ff_hw_base_init_gop_structure(AVCodecContext >>> *avctx, uint32_t ref_l0, uint32 >>>> return 0; >>>> } >>>> >>>> -int ff_hw_base_get_recon_format(AVCodecContext *avctx, const void >>> *hwconfig, enum AVPixelFormat *fmt) >>>> +int ff_hw_base_get_recon_format(FFHWBaseEncodeContext *ctx, const >>> void *hwconfig, >>>> + enum AVPixelFormat *fmt) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> AVHWFramesConstraints *constraints = NULL; >>>> enum AVPixelFormat recon_format; >>>> int err, i; >>>> @@ -722,14 +715,14 @@ int >>> ff_hw_base_get_recon_format(AVCodecContext *avctx, const void >*hwconfig, >>> enu >>>> // No idea what to use; copy input format. >>>> recon_format = ctx->input_frames->sw_format; >>>> } >>>> - av_log(avctx, AV_LOG_DEBUG, "Using %s as format of " >>>> + av_log(ctx->log_ctx, AV_LOG_DEBUG, "Using %s as format of " >>>> "reconstructed frames.\n", av_get_pix_fmt_name(recon_format)); >>>> >>>> if (ctx->surface_width < constraints->min_width || >>>> ctx->surface_height < constraints->min_height || >>>> ctx->surface_width > constraints->max_width || >>>> ctx->surface_height > constraints->max_height) { >>>> - av_log(avctx, AV_LOG_ERROR, "Hardware does not support encoding >at >>> " >>>> + av_log(ctx->log_ctx, AV_LOG_ERROR, "Hardware does not support >>> encoding at " >>>> "size %dx%d (constraints: width %d-%d height %d-%d).\n", >>>> ctx->surface_width, ctx->surface_height, >>>> constraints->min_width, constraints->max_width, >>>> @@ -756,9 +749,9 @@ int >>> ff_hw_base_encode_free(FFHWBaseEncodePicture *pic) >>>> return 0; >>>> } >>>> >>>> -int ff_hw_base_encode_init(AVCodecContext *avctx) >>>> +int ff_hw_base_encode_init(AVCodecContext *avctx, >>> FFHWBaseEncodeContext *ctx) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> + ctx->log_ctx = (void *)avctx; >>>> >>>> ctx->frame = av_frame_alloc(); >>>> if (!ctx->frame) >>>> @@ -789,10 +782,8 @@ int ff_hw_base_encode_init(AVCodecContext >>> *avctx) >>>> return 0; >>>> } >>>> >>>> -int ff_hw_base_encode_close(AVCodecContext *avctx) >>>> +int ff_hw_base_encode_close(FFHWBaseEncodeContext *ctx) >>>> { >>>> - FFHWBaseEncodeContext *ctx = avctx->priv_data; >>>> - >>>> av_fifo_freep2(&ctx->encode_fifo); >>>> >>>> av_frame_free(&ctx->frame); >>>> diff --git a/libavcodec/hw_base_encode.h >b/libavcodec/hw_base_encode.h >>>> index 15ef3d7ac6..e528f2013b 100644 >>>> --- a/libavcodec/hw_base_encode.h >>>> +++ b/libavcodec/hw_base_encode.h >>>> @@ -116,6 +116,7 @@ typedef struct FFHWEncodePictureOperation { >>>> >>>> typedef struct FFHWBaseEncodeContext { >>>> const AVClass *class; >>>> + void *log_ctx; >>>> >>>> // Hardware-specific hooks. >>>> const struct FFHWEncodePictureOperation *op; >>>> @@ -214,21 +215,23 @@ typedef struct FFHWBaseEncodeContext { >>>> AVPacket *tail_pkt; >>>> } FFHWBaseEncodeContext; >>>> >>>> -int ff_hw_base_encode_set_output_property(AVCodecContext *avctx, >>> FFHWBaseEncodePicture *pic, >>>> - AVPacket *pkt, int flag_no_delay); >>>> +int ff_hw_base_encode_set_output_property(FFHWBaseEncodeContext >>> *ctx, AVCodecContext *avctx, >>>> + FFHWBaseEncodePicture *pic, AVPacket *pkt, int >>> flag_no_delay); >>>> >>>> -int ff_hw_base_encode_receive_packet(AVCodecContext *avctx, AVPacket >>> *pkt); >>>> +int ff_hw_base_encode_receive_packet(FFHWBaseEncodeContext *ctx, >>> AVCodecContext *avctx, AVPacket *pkt); >>>> >>>> -int ff_hw_base_init_gop_structure(AVCodecContext *avctx, uint32_t >ref_l0, >>> uint32_t ref_l1, >>>> +int ff_hw_base_init_gop_structure(FFHWBaseEncodeContext *ctx, >>> AVCodecContext *avctx, >>>> + uint32_t ref_l0, uint32_t ref_l1, >>>> int flags, int prediction_pre_only); >>>> >>>> -int ff_hw_base_get_recon_format(AVCodecContext *avctx, const void >>> *hwconfig, enum AVPixelFormat *fmt); >>>> +int ff_hw_base_get_recon_format(FFHWBaseEncodeContext *ctx, const >>> void *hwconfig, >>>> + enum AVPixelFormat *fmt); >>>> >>>> int ff_hw_base_encode_free(FFHWBaseEncodePicture *pic); >>>> >>>> -int ff_hw_base_encode_init(AVCodecContext *avctx); >>>> +int ff_hw_base_encode_init(AVCodecContext *avctx, >>> FFHWBaseEncodeContext *ctx); >>>> >>>> -int ff_hw_base_encode_close(AVCodecContext *avctx); >>>> +int ff_hw_base_encode_close(FFHWBaseEncodeContext *ctx); >>>> >>>> #define HW_BASE_ENCODE_COMMON_OPTIONS \ >>>> { "idr_interval", \ >>>> diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c >>>> index b35a23e852..48ca018775 100644 >>>> --- a/libavcodec/vaapi_encode.c >>>> +++ b/libavcodec/vaapi_encode.c >>>> @@ -811,7 +811,7 @@ static int vaapi_encode_output(AVCodecContext >>> *avctx, >>>> av_log(avctx, AV_LOG_DEBUG, "Output read for >>> pic %"PRId64"/%"PRId64".\n", >>>> base_pic->display_order, base_pic->encode_order); >>>> >>>> - ff_hw_base_encode_set_output_property(avctx, >>> (FFHWBaseEncodePicture*)base_pic, pkt_ptr, >>>> + ff_hw_base_encode_set_output_property(base_ctx, avctx, >>> (FFHWBaseEncodePicture*)base_pic, pkt_ptr, >>>> ctx->codec->flags & FLAG_TIMESTAMP_NO_DELAY); >>>> >>>> end: >>>> @@ -1658,7 +1658,8 @@ static av_cold int >>> vaapi_encode_init_gop_structure(AVCodecContext *avctx) >>>> } >>>> #endif >>>> >>>> - err = ff_hw_base_init_gop_structure(avctx, ref_l0, ref_l1, ctx->codec- >>>> flags, prediction_pre_only); >>>> + err = ff_hw_base_init_gop_structure(base_ctx, avctx, ref_l0, ref_l1, >>>> + ctx->codec->flags, prediction_pre_only); >>>> if (err < 0) >>>> return err; >>>> >>>> @@ -2059,7 +2060,7 @@ static av_cold int >>> vaapi_encode_create_recon_frames(AVCodecContext *avctx) >>>> } >>>> hwconfig->config_id = ctx->va_config; >>>> >>>> - err = ff_hw_base_get_recon_format(avctx, (const void*)hwconfig, >>> &recon_format); >>>> + err = ff_hw_base_get_recon_format(base_ctx, (const void*)hwconfig, >>> &recon_format); >>>> if (err < 0) >>>> goto fail; >>>> >>>> @@ -2098,6 +2099,11 @@ static const FFHWEncodePictureOperation >>> vaapi_op = { >>>> .free = &vaapi_encode_free, >>>> }; >>>> >>>> +int ff_vaapi_encode_receive_packet(AVCodecContext *avctx, AVPacket >*pkt) >>>> +{ >>>> + return ff_hw_base_encode_receive_packet(avctx->priv_data, avctx, >pkt); >>>> +} >>>> + >>>> av_cold int ff_vaapi_encode_init(AVCodecContext *avctx) >>>> { >>>> FFHWBaseEncodeContext *base_ctx = avctx->priv_data; >>>> @@ -2106,7 +2112,7 @@ av_cold int >ff_vaapi_encode_init(AVCodecContext >>> *avctx) >>>> VAStatus vas; >>>> int err; >>>> >>>> - err = ff_hw_base_encode_init(avctx); >>>> + err = ff_hw_base_encode_init(avctx, base_ctx); >>>> if (err < 0) >>>> goto fail; >>>> >>>> @@ -2313,7 +2319,7 @@ av_cold int >>> ff_vaapi_encode_close(AVCodecContext *avctx) >>>> av_freep(&ctx->codec_sequence_params); >>>> av_freep(&ctx->codec_picture_params); >>>> >>>> - ff_hw_base_encode_close(avctx); >>>> + ff_hw_base_encode_close(base_ctx); >>>> >>>> return 0; >>>> } >>>> diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h >>>> index 8650255680..d76cdb8662 100644 >>>> --- a/libavcodec/vaapi_encode.h >>>> +++ b/libavcodec/vaapi_encode.h >>>> @@ -343,6 +343,8 @@ typedef struct VAAPIEncodeType { >>>> char *data, size_t *data_len); >>>> } VAAPIEncodeType; >>>> >>>> +int ff_vaapi_encode_receive_packet(AVCodecContext *avctx, AVPacket >>> *pkt); >>>> + >>>> int ff_vaapi_encode_init(AVCodecContext *avctx); >>>> int ff_vaapi_encode_close(AVCodecContext *avctx); >>>> >>>> diff --git a/libavcodec/vaapi_encode_av1.c >b/libavcodec/vaapi_encode_av1.c >>>> index ea4c391e54..26a5707bf5 100644 >>>> --- a/libavcodec/vaapi_encode_av1.c >>>> +++ b/libavcodec/vaapi_encode_av1.c >>>> @@ -1041,7 +1041,7 @@ const FFCodec ff_av1_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_AV1, >>>> .priv_data_size = sizeof(VAAPIEncodeAV1Context), >>>> .init = &vaapi_encode_av1_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &vaapi_encode_av1_close, >>>> .p.priv_class = &vaapi_encode_av1_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>>> diff --git a/libavcodec/vaapi_encode_h264.c >>> b/libavcodec/vaapi_encode_h264.c >>>> index d20d8298db..d156719728 100644 >>>> --- a/libavcodec/vaapi_encode_h264.c >>>> +++ b/libavcodec/vaapi_encode_h264.c >>>> @@ -1385,7 +1385,7 @@ const FFCodec ff_h264_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_H264, >>>> .priv_data_size = sizeof(VAAPIEncodeH264Context), >>>> .init = &vaapi_encode_h264_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &vaapi_encode_h264_close, >>>> .p.priv_class = &vaapi_encode_h264_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>>> diff --git a/libavcodec/vaapi_encode_h265.c >>> b/libavcodec/vaapi_encode_h265.c >>>> index e1748e4419..641888dd14 100644 >>>> --- a/libavcodec/vaapi_encode_h265.c >>>> +++ b/libavcodec/vaapi_encode_h265.c >>>> @@ -1498,7 +1498,7 @@ const FFCodec ff_hevc_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_HEVC, >>>> .priv_data_size = sizeof(VAAPIEncodeH265Context), >>>> .init = &vaapi_encode_h265_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &vaapi_encode_h265_close, >>>> .p.priv_class = &vaapi_encode_h265_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>>> diff --git a/libavcodec/vaapi_encode_mjpeg.c >>> b/libavcodec/vaapi_encode_mjpeg.c >>>> index 5d51a0b2b9..0ca8d676dd 100644 >>>> --- a/libavcodec/vaapi_encode_mjpeg.c >>>> +++ b/libavcodec/vaapi_encode_mjpeg.c >>>> @@ -574,7 +574,7 @@ const FFCodec ff_mjpeg_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_MJPEG, >>>> .priv_data_size = sizeof(VAAPIEncodeMJPEGContext), >>>> .init = &vaapi_encode_mjpeg_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &vaapi_encode_mjpeg_close, >>>> .p.priv_class = &vaapi_encode_mjpeg_class, >>>> .p.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DR1 | >>>> diff --git a/libavcodec/vaapi_encode_mpeg2.c >>> b/libavcodec/vaapi_encode_mpeg2.c >>>> index c20196fb48..be801d21d2 100644 >>>> --- a/libavcodec/vaapi_encode_mpeg2.c >>>> +++ b/libavcodec/vaapi_encode_mpeg2.c >>>> @@ -698,7 +698,7 @@ const FFCodec ff_mpeg2_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_MPEG2VIDEO, >>>> .priv_data_size = sizeof(VAAPIEncodeMPEG2Context), >>>> .init = &vaapi_encode_mpeg2_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &vaapi_encode_mpeg2_close, >>>> .p.priv_class = &vaapi_encode_mpeg2_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>>> diff --git a/libavcodec/vaapi_encode_vp8.c >b/libavcodec/vaapi_encode_vp8.c >>>> index a95f9c5447..634b849cd2 100644 >>>> --- a/libavcodec/vaapi_encode_vp8.c >>>> +++ b/libavcodec/vaapi_encode_vp8.c >>>> @@ -252,7 +252,7 @@ const FFCodec ff_vp8_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_VP8, >>>> .priv_data_size = sizeof(VAAPIEncodeVP8Context), >>>> .init = &vaapi_encode_vp8_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &ff_vaapi_encode_close, >>>> .p.priv_class = &vaapi_encode_vp8_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>>> diff --git a/libavcodec/vaapi_encode_vp9.c >b/libavcodec/vaapi_encode_vp9.c >>>> index 96acd414af..eac9be82b0 100644 >>>> --- a/libavcodec/vaapi_encode_vp9.c >>>> +++ b/libavcodec/vaapi_encode_vp9.c >>>> @@ -309,7 +309,7 @@ const FFCodec ff_vp9_vaapi_encoder = { >>>> .p.id = AV_CODEC_ID_VP9, >>>> .priv_data_size = sizeof(VAAPIEncodeVP9Context), >>>> .init = &vaapi_encode_vp9_init, >>>> - >FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet), >>>> + FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet), >>>> .close = &ff_vaapi_encode_close, >>>> .p.priv_class = &vaapi_encode_vp9_class, >>>> .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE >| >>> >>> Thanks, I'll implement Vulkan hardware encoding on top and report back >>> with what else may be needed, if anything. >> >> Since the following d3d12 codecs and features are blocked by this patch set, >would you mind we merging this patch set first? It does not cause any >regression for vaapi. It's been quite a while since the first version and it has >already went through multiple rounds of vaapi maintainers' review(Mark and >Haihao). If there's anything needed in hw_base_encode we could send >separate patches to fine tune. I'm glad to help and review. Thanks. >> >> -Tong > >Shouldn't take me more than a day or two. If it does, I'll just do a >quick review and merge it if it looks good. Sounds good. Thank you. _______________________________________________ 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".