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 EF9D2406FA for ; Fri, 29 Jul 2022 08:38:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9176568B9D9; Fri, 29 Jul 2022 11:38:06 +0300 (EEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EA36768B92F for ; Fri, 29 Jul 2022 11:37:58 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659083884; x=1690619884; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=0IkhtUzXI36yK5jgu7d7OjjGPthhiM3Rv9udWLL985s=; b=LCMS6CSDlYc57vIUz04aM4aTDp1cBVd83ZsTbS+c2L3wY1VS8fyjijAi yPo/nHmIiAILXlaMb5Pv5k8Rn0MAc/QgCqSqruTHtSV1N3Tp5ELV8Sj7I zTTNQGHyl5YwckpeMgk8TD/bJuOLWGbUT2xilfhZBWHzRypHonBgSCMh1 Ne8kToms1hgOowJGPncKdr20O5lD4OWoAjH1hLrk2H7bCqjC6W4LeVX/W EbpJxPNoWPcEqwD7JZymdtqAun+38jpkc/REjYEqxypmeG85xFpd+Z96w rTplQeO74784n7C+qDL4yyd5OO4VcBSB/ooByPu7M/Z/foGmfRgtydCqM A==; X-IronPort-AV: E=McAfee;i="6400,9594,10422"; a="352723155" X-IronPort-AV: E=Sophos;i="5.93,200,1654585200"; d="scan'208";a="352723155" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jul 2022 01:37:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,200,1654585200"; d="scan'208";a="928666468" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga005.fm.intel.com with ESMTP; 29 Jul 2022 01:37:56 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 29 Jul 2022 01:37:56 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Fri, 29 Jul 2022 01:37:56 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28 via Frontend Transport; Fri, 29 Jul 2022 01:37:56 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.173) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Fri, 29 Jul 2022 01:37:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AoYEAFGf9ayUa7WM+zthjcD01o8d29mCEjsQvmU/XRMbRvH030wgl1sJa463iZjVbA3EeYKBJlgNu+OQzjccc915GOlW2lwbhwaGx5zv2YrrCkhcRmrv8x7P0yvo39+1kiA3N0EM83IRiTSlVHum+WKmEPKPaTXyhSsSwzsdTRjNleCK2I6sFWMcfXeF4mgfnMtFLUOqCBlmdPuhQ3HYpfuhGREbkt5OvXTFUpOb3bAx9hu63Ac6WPvbaRj4/ILgSIw+3pv0fpeZvpo6UOwGgsRBvESbgJtbC3AHTR2eoYIMsLTSrOoGAcn3pmg/APt2OYieb0ifM5daLdr+T4ZVcA== 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=0IkhtUzXI36yK5jgu7d7OjjGPthhiM3Rv9udWLL985s=; b=Ue7c+B5O1plsP7vKbE2f1s/EX7JOWHoVABChhZWVt+PuVB0XgyWlneXLcKg3UCadiVxA6ZaLUPSulp+DTKNzM5Ov7TteNCXDLJzKb3CVFzss+qNharSo6E3R8cnP4bgSNHFzPWkVvPReS1T979P8pwZop2WBhvRMJRVkZ7nvbniovUaDsQKf5yL2Px/KFVzSIRAts3Y0eOfJiKQkISTlWfnAKJcVGyVB5V4tHTIUwwdOjZku+I6xPpn3psrlvTFBGbf7ibkrm9AeOIehSyB1dOV3klbTRYxUpWaAmzp2G9hTAiZfUDQbdFDu/GyFfZQ3kGGtXbAQdX6UM4Jk/9xREQ== 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 BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by DM5PR11MB1625.namprd11.prod.outlook.com (2603:10b6:4:b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.11; Fri, 29 Jul 2022 08:37:54 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::8444:e015:794f:441b]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::8444:e015:794f:441b%3]) with mapi id 15.20.5482.006; Fri, 29 Jul 2022 08:37:53 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v3 2/2] ffmpeg_opt: consider HW acceleration method when selecting decoder Thread-Index: AQHYn99jc/dnEsghc0iKqxd9ts1uoK2VDTwA Date: Fri, 29 Jul 2022 08:37:53 +0000 Message-ID: References: <20220725043051.9692-1-haihao.xiang@intel.com> <20220725043051.9692-2-haihao.xiang@intel.com> In-Reply-To: <20220725043051.9692-2-haihao.xiang@intel.com> Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ba19ccf5-c39b-4052-05cf-08da713da131 x-ms-traffictypediagnostic: DM5PR11MB1625:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lk1nArm2OPNecEf8/1QYGqWDk79Hf0FnRJy2vWFWKS1ML7WCAxBuTfhWAQKv2yCcVp+GXhaiBn4CkNaArSNJtxuB2jEfamIhT2U95icEapf5ivRBNTZvrC76vlN8DHYfUNfXnKc4pbBYMNzk3CU2nYRszxAa+3RCXvJhNcuDMKy6yPb3pK1zXQ+W+L9XIBggKT/hUSap7+oSpCyVW+ZCqHdZeuJ5PZHEIi/lSFLRJKD4UdW6LOMsN64xXhNcrBbIMt5FJnVw/JrRZwqXG80ed6OmO1Tar+fblNdDUJ/YRXd9L79IYmiiOEAnemrzbr6s1IW7YSJCgPjzK+uwCvyxMTqXnwO2y1FAnH8LLO3NZWOfmA732fm3ZMQ/Lq8etH0cIEYfX3+re/Wr598mBp0GxOSLjwgK8gDGAYokv+Y2OBkqe0fOF4arO8YSB8eaDH8ogmVpseop6893AmYQBuYhelQsxaOhtdlFfGSkerlpbL5D9hy4RqCdUObdnf1+FNJaw6l/C8mNeWOkumTHbLCRfXVdrvUFqwQBZ8fo6OgdcBNYRX5/P2R4ItoHyUoeMs3zw7QfPXsAUi+7pbbW4kn0BHQpqEvTA0bsm39Oj5d4cd2mMgIONz5Qsnid9i9b+nXqL8P/FLO792dtMa+cCJUgA03wzDDVhPFdwsmgRRq/Ovnl7/ocwavMrypCj3y56t9rhwBvQrYRnsHQxWe6mT1pgFyr0RR3eSzQ35zyHzsM9DUgo7CBCPqLdFZ+yP8BbsU7Fc93Q7fPnHybBcljsYWsMgGt/fHqV8MoMNGxBnjg5RwfP3r1AnK+WMZE+w4kqy8b1saq65oUecn+L/t7ybxA1/2PgBQm8HlYQh3EGwqE0sA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5515.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(346002)(376002)(396003)(136003)(366004)(39860400002)(86362001)(38100700002)(38070700005)(66946007)(122000001)(478600001)(82960400001)(71200400001)(76116006)(64756008)(5660300002)(66476007)(91956017)(8676002)(8936002)(66556008)(966005)(6486002)(66446008)(6916009)(316002)(2616005)(186003)(83380400001)(41300700001)(2906002)(26005)(6512007)(36756003)(6506007)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Vlg4RUQzSnc1TGo2YWNvczRkS1d3U3NRZktWd3U3ZTJEMFBoNGxBTEJoY2NQ?= =?utf-8?B?ZWNIQ2VVbGU0YVhkc2NkVEJWaEJGNGxoa1o3SS9sd0ZUZDhkMEdvNXVweFlJ?= =?utf-8?B?dmxsRmNkaWlsbFZCSlhYV2JOVndJbmdxb3lUT0p3Y2NnUTBkanRVUVBzWXJm?= =?utf-8?B?MnBlbDI0TkRQVkpBK3l1QkhpQnA3QzVUcXRrN0s3Z1B4Q1ZlUlNpZk5SS2tQ?= =?utf-8?B?VHJCVHJ6cFZHTVcxR1JGaFcycGIxTkphcytJT093Qmt6VDh4b3ZiRWZrTjR3?= =?utf-8?B?dklEMDFxL3NzT2VsdFJKSWJhQnloM0I5cWVjbk5tME5ZMlF2VnpoVUQ1bzB5?= =?utf-8?B?STd6bW5ydnV1R25vcWRXalowaUp2U3gzN1RTeTRyb1JBZTVBcGNMNGQ1aTBJ?= =?utf-8?B?enV0NFNjOGwyYmhUcXVPc295YU9FQUxaRWNlSyszKzFSZWRVRG9nSnhjZTkz?= =?utf-8?B?YU13YUpRWmRiQlFJaTByMHNXbEsrVStJRzNUWHcwR0lOSllhakZqUGhNajla?= =?utf-8?B?c2N3VTlBMUU4Zk1kMzhISHdWY3VleGp2ekRXZml6eTRHaFNOa2dPS2lpTXgx?= =?utf-8?B?VlZFS2dDdjlncWdSYlhYamU2SDZBMEtuL1MvRDBpYjRoOFk4SUxVb2NSenlD?= =?utf-8?B?bFlBQlpScEpBQ3hqWVhQL2xwbHNaT3V5ekdJZFp1ZEdzL1UrRXdIT2R1R0sr?= =?utf-8?B?d2VVTVVIanB1YVZmNWlXUS9JaDRCNEpGL21wcVdIMGY1QnA1b2dzWlhkUktW?= =?utf-8?B?ZGRMRnZ4UGsvdlhkcHJvVVg3clRJaG1RQlUyMkcxck9XOW4rSXArWG1vRGQv?= =?utf-8?B?bXdHVDR1SU5LQWtNT0l5VUFIKzE0R0lYNXplWjFXQTVSdGtlcFNpZFdqUXMw?= =?utf-8?B?SjUxNVF2cHB5SkJrOG1TcW8xQUJDZ3NrdTMxUFBxTTdKWDkxZXE1QVBwL3Nt?= =?utf-8?B?aC9SaHorZTZSVGJPRG5OaWZJTkdsaVVVOWFNdDdJTEozdEp3VW5xTVJlcE9H?= =?utf-8?B?MTFwNGE3TEttSW4vQU1yb2dVSGF0b2JHbUNFMUZlMXlsakg3QjRXOVcrcHRj?= =?utf-8?B?dnVkVElaQjQrYkdlOTUzendoZGI3bEhLUTdDV1d4RURiaUtZL3NkUWl1K3ZM?= =?utf-8?B?YVFVVEJUbGVUVUtaaXNRUVVoR1lzQ0h5RUtVL09LRWUrWjI1TklBMDBvVUk2?= =?utf-8?B?bnFna29JVEswUnpvSjh1Ymo0c051NVhSYTIrRldEMWpvbnFzRklKcDVaSG11?= =?utf-8?B?dGJCWWw2cXBTV2xuRGpVdCt5RVBkRC9LVmxLSnRBMC9sbEVxbFJHSHN6UWtH?= =?utf-8?B?MHB4WUxlNHdUUXhlRmRqcndzQTRKRkVmWWhSeWZaY05NM0ZGSnpMNVp1dUZh?= =?utf-8?B?c3Y1aE9Ga01MOEtPeXAzRjRiMGlWZmh4TFZzMm13dy9KYTgwN3VTK2VrTGJy?= =?utf-8?B?VktQdnNUWTMwUXFsRmtGVkdHVklWR2dTVW5YZ0lmNVovYzhJUllBdDVRQ1JS?= =?utf-8?B?Qzc1djBCTFlxbTd1WnA0SFRYaEJHeGV3bmdpNk1ObXpaUTIzaWVsaDdKTDdP?= =?utf-8?B?SHFjQVYxdDllWWFCUVlLTGU2V3hIcThPVTRnN29laWtUeWRhamF5WFVBUVFC?= =?utf-8?B?R0NXdGFjbW43VmZ6cVg5a2ZSeWVKdmUwaXlNZ1BlMHFvK3MraDhCTjQ2U3JI?= =?utf-8?B?TVFLVkRJRXFYT3NUazNEbGRZZTVhZG0yM0tZVGVnZU1kTEJIVkNNam5rWFB3?= =?utf-8?B?dmxWZlcxWHo1YzJHSFhDMkYrTTNOV09NTnd1NDIvZmxFSCsxeVkwcXZZbUNL?= =?utf-8?B?Rlp4VjRvK2g0a1pMYUp6WVBFUlJ0TU9WakV6cVFSM3E0bmpHcU55QkszYzU4?= =?utf-8?B?NVdJdkZTZFpLSGhjb3ZlVTlKY2ZhbnV0VXlDRU9MR01rcFE4cFFDUko3OEZE?= =?utf-8?B?ZWVqc2cxTWZsUlVER2dZS2t4NUR4ZmRJNmVYR1lUVHB2bmRwVTZtSHpGcTZj?= =?utf-8?B?SmpoanR5ZHBYRkxiWVd3K21sV1pKQkt3dlpzWEVmcWhvWWRtbzE1dmZQSkhs?= =?utf-8?B?OElqWEFoZnNUMFFvY21iNXM5N3BnblFKTHVuNGN2S1YwcmEwRStyQnR0U0Ni?= =?utf-8?B?aGZoVTNqV1ZScDZZTnVKWmhudzdReER2ZDUwNTh3c0M1bFJtazFjUm9WZWFI?= =?utf-8?B?RGc9PQ==?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5515.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba19ccf5-c39b-4052-05cf-08da713da131 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2022 08:37:53.7322 (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: NzrXgEq+e4Vxkl2Gkq4L+3uHxEx3yGBi+RybKM9XE/NkizAZoyReKwFYQfWPwW0c/5MrS39Dzk6yj08tAJc4Rw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1625 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v3 2/2] ffmpeg_opt: consider HW acceleration method when selecting decoder 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: On Mon, 2022-07-25 at 12:30 +0800, Xiang, Haihao wrote: > From: Haihao Xiang > > Usually a HW decoder is expected when user specifies a HW acceleration > method via -hwaccel option, however the current implementation doesn't > take HW acceleration method into account, it is possible to select a SW > decoder. > > For example: > $ ffmpeg -hwaccel vaapi -i av1.mp4 -f null - > $ ffmpeg -hwaccel nvdec -i av1.mp4 -f null - > $ ffmpeg -hwaccel vdpau -i av1.mp4 -f null - > [...] > Stream #0:0 -> #0:0 (av1 (libdav1d) -> wrapped_avframe (native)) > > libdav1d is selected in this case even if vaapi, nvdec or vdpau is > specified. > > After applying this patch, the native av1 decoder (with vaapi, nvdec or > vdpau support) is selected for decoding(libdav1d is still used for > probing format). > $ ffmpeg -hwaccel vaapi -i av1.mp4 -f null - > $ ffmpeg -hwaccel nvdec -i av1.mp4 -f null - > $ ffmpeg -hwaccel vdpau -i av1.mp4 -f null - > [...] > Stream #0:0 -> #0:0 (av1 (native) -> wrapped_avframe (native)) > > Tested-by: Mario Roy > Signed-off-by: Haihao Xiang > --- > fftools/ffmpeg_opt.c | 44 +++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 43 insertions(+), 1 deletion(-) > > diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c > index 2771c5d993..614bfeea80 100644 > --- a/fftools/ffmpeg_opt.c > +++ b/fftools/ffmpeg_opt.c > @@ -861,6 +861,48 @@ static const AVCodec *choose_decoder(OptionsContext *o, > AVFormatContext *s, AVSt > return avcodec_find_decoder(st->codecpar->codec_id); > } > > +static const AVCodec *choose_decoder2(InputStream *ist, OptionsContext *o, > AVFormatContext *s, AVStream *st) > +{ > + char *codec_name = NULL; > + > + MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, st); > + if (codec_name) { > + const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar- > >codec_type, 0); > + st->codecpar->codec_id = codec->id; > + if (recast_media && st->codecpar->codec_type != codec->type) > + st->codecpar->codec_type = codec->type; > + return codec; > + } else { > + if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && > + ist->hwaccel_id == HWACCEL_GENERIC && > + ist->hwaccel_device_type != AV_HWDEVICE_TYPE_NONE) { > + const AVCodec *p; > + void *i = 0; > + > + while ((p = av_codec_iterate(&i))) { > + int j; > + > + if (p->id != st->codecpar->codec_id || > + !av_codec_is_decoder(p) || > + !avcodec_get_hw_config(p, 0)) > + continue; > + > + for (j = 0; ;j++) { > + const AVCodecHWConfig *config = avcodec_get_hw_config(p, > j); > + > + if (!config) > + break; > + > + if (config->device_type == ist->hwaccel_device_type) > + return p; > + } > + } > + } > + > + return avcodec_find_decoder(st->codecpar->codec_id); > + } > +} > + > /* Add all the streams from the given input file to the global > * list of input streams. */ > static void add_input_streams(OptionsContext *o, AVFormatContext *ic) > @@ -973,7 +1015,7 @@ static void add_input_streams(OptionsContext *o, > AVFormatContext *ic) > ist->hwaccel_pix_fmt = AV_PIX_FMT_NONE; > } > > - ist->dec = choose_decoder(o, ic, st); > + ist->dec = choose_decoder2(ist, o, ic, st); > ist->decoder_opts = filter_codec_opts(o->g->codec_opts, ist->st- > >codecpar->codec_id, ic, st, ist->dec); > > ist->reinit_filters = -1; Hi, libdav1d is the preferred AV1 decoder in FFmpeg, libdav1d is always used when running the command below even if user expects vaapi or other HW acceleration methods. $ ffmpeg -hwaccel vaapi -i av1.ivf -f null - A similar command works as expected for other codecs, e.g. GPU is used when running the command below (see http://ffmpeg.org/pipermail/ffmpeg-user/2022-July/055227.html) $ ffmpeg -y -hwaccel vdpau -i input_vp9.webm output.ts This patchset can ensure FFmpeg chooses a HW accelerated decoder when '-hwaccel arg' is specified in the command line. Is there any comment for this patchset ? Thanks Haihao _______________________________________________ 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".