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 7EC3443860 for ; Tue, 2 Aug 2022 08:20:37 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B2AEA68B851; Tue, 2 Aug 2022 11:20:33 +0300 (EEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EFEBE68B851 for ; Tue, 2 Aug 2022 11:20:26 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659428432; x=1690964432; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=TN1rkcvp62Bf0PnX3BKCw8i8rHrSslP9fil4JR5/Ves=; b=nHhUrOySzgHEaBzyj81rf/EqvDO5WGPV8vC0nUQg8ETurLXNWwOJFQS1 NYperckjfmrtNUwG/Dvo/Mw/5/rqMbiUNVzVN2ykJPRVbi6HnqDAxFkhY AjX/yZlaWidVy9nrQDF52BiPzP/yjYfsudzJi5BI58lAHav6ZuZGt1gKy 8hEEsAD2ZV7nTWPVwfMnIySlhimIyWwIR5VpBPDjFAHn0WccsyrghJlV4 aaQ6/mwWPQ9jZS/KRGHyP/krrR7YM5ZQq6Kj5ShXSq/9iMQMsJoa3nSdm QFMvhnD5keeTZfOrVDty4h+9IHKsdOSN+7T0aG5FdXRDlFv/2lRqwDBWB Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10426"; a="286913833" X-IronPort-AV: E=Sophos;i="5.93,210,1654585200"; d="scan'208";a="286913833" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2022 01:20:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,210,1654585200"; d="scan'208";a="602345837" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga002.jf.intel.com with ESMTP; 02 Aug 2022 01:20:24 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Tue, 2 Aug 2022 01:20:24 -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; Tue, 2 Aug 2022 01:20:24 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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; Tue, 2 Aug 2022 01:20:24 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.40) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.28; Tue, 2 Aug 2022 01:20:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FreTegQr5kg/UUTRvfQQohPXSoIubOyOwqK4jrdaHcsRuYdwxt9bQQuPYi3Gs7Oco7DiE66WDb7MH7mof2o9IEtIZqPXTGVFIfdRFvd+uqDjNwrTSqkteASh+xzsCI8b47VaY/uZJOnXcrgThNIVR1ovyD4+/ql4ta9T+m7q4TTJlsocNraMxcHskxsTtK0N3EivnhcpieLzFssqXVNa7KXXKOjRafiBkA9Yr5XdmQ4s676uXtTpGh2/OSEoHaz4OGGQx6L9dzOhDGIlrFRQIqW2SwidUbLD6SrceW4XjD+I0X04WzBd3dfEFG3tzMfYGOw4fVsFR3O8r4jdZZFbfA== 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=TN1rkcvp62Bf0PnX3BKCw8i8rHrSslP9fil4JR5/Ves=; b=JOyrBGdei2suEGVblEXGY5Qbo2Yk7mSJiHxlyDGZIN30pci08UQauQ39yRPhqQVCpmYy3U44DD/kLauSom+99p3KQn363HKkhDKnY14TMUjM6JtEO0X8TSkCLG7ioORXHctHZdNLsXX1A/sXG2jAkk87gkqF+C36MAkc0FwLueX/nXyF9Fs493R50Z3+VjlOPAYOZXl9Rs2/oBTN6Dsk8ISRb0NJFecjIB+OyhsC2xgZeDVrvvZeguWBu5bNdK5Lb+LztXNoncOybK4DCHJqzF2NxZSsuxQQSaruj5unQQ9qgdUECL//flj/GSDXHx/oGv6Ak+QidSFlqS4pjKPDIg== 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 DM5PR11MB1241.namprd11.prod.outlook.com (2603:10b6:3:15::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.12; Tue, 2 Aug 2022 08:20:16 +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.016; Tue, 2 Aug 2022 08:20:16 +0000 From: "Xiang, Haihao" To: "anton@khirnov.net" , "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v12 11/13] lavc/qsv: create mfx session using oneVPL for decoding/encoding Thread-Index: AQHYn9y+kMThxp5JP0ibsOm+n/08n62aFtwAgAE6ywA= Date: Tue, 2 Aug 2022 08:20:16 +0000 Message-ID: <766a8031550d459565824748e36b753eb714b8c5.camel@intel.com> References: <20220725041151.7710-1-haihao.xiang@intel.com> <20220725041151.7710-12-haihao.xiang@intel.com> <165936081203.15471.11528505401456706222@lain.khirnov.net> In-Reply-To: <165936081203.15471.11528505401456706222@lain.khirnov.net> 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: 5928bd54-1d4c-4c8f-6f27-08da745fd4c6 x-ms-traffictypediagnostic: DM5PR11MB1241:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zZxJbr33zXODVTrP4CmPDTveqYAM97KmHpHRjdRc8ZIjH4o9o1ZLdidvbRK8KkDNG+5JPAq6/ariTLOn9G/odk6YZGw+pdRpbSDDXBrNmnXiM28OwLoWHinu23W+XzuhZNtbYbe/FscwmZREFjYN1x5mfAwhlKV3yxxYF62RdOueZFMR4yC6TUOcyxCnFZbk1ya1lr7PjxHmgae4mCVu+4jyxEJe2WAxc4vSAeHT0j9UEAw8AFN60ijo2mQ0eHc8ypGDcFII2sMv/voZToILNjIyzIOGSA/wFxBVSKeAVDi0dR3MBAnAJxSVtZfgjw7ebKF4pnQOiYXJHTZEgJRRkT/Ji5yNJNheNcqwC63+jnGtAeAORWBp6s0lltC+gbsRMv8yQIinJ3IFVCeN8K45hUEgja+Qed+AmrKP8gv7yrvwDxr2L7QMlzMVQOh7I/aB1XNJItY7jcwYe0b9wLnSQiE0Us8LnwPWFbiig1wKcMfU5lxf6xFkrb06pmHNnvZB3utmwuaKmJuF8A9K1mwAVc4Pnfff1BiSB+SM56YufD/8S1WXvTpOvJhMLatLGuitE5os/nWvA6RZ+JjHVN88KShZfTNqQtoO7V8EozJrZowVe6p86l8Ub7N7t2IOaqIO2LDLm0jAdPDfXeSsz6BMiQdxRhUH3jeBNBUl6rjskV6kaI4SYccoErmrzcPqMNs4eajOqxa1pjgta1m+NfS6NXPQPJgDwByzEKqKJl+pOEk4IcYRpU3yrf9JWTN3N81vCEueMkI6WtRj4IAhRIZ5AkTOuZIVswM/UyCT9tA7WUboFQhsCL+Z0KR+gNwz/4PWIMAB1kcbuxUJVINp9FnFFw== 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)(396003)(136003)(376002)(366004)(39860400002)(86362001)(83380400001)(186003)(6512007)(26005)(6506007)(41300700001)(2906002)(122000001)(38100700002)(19627235002)(38070700005)(66946007)(316002)(76116006)(91956017)(110136005)(6486002)(71200400001)(64756008)(66446008)(8676002)(66476007)(66556008)(2616005)(82960400001)(8936002)(478600001)(36756003)(5660300002)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TzdySzE3cldvNFBVRGVqUkh5cVc1djA1WWkrbUprSVZhRlBzNUE4V1pld1Bt?= =?utf-8?B?eUJhaFNidnM4QjU0S0RVY0NVOW4veHN0UHViajFyUElpSnR6OVFmbEdSc3Qw?= =?utf-8?B?TmxpeFdmV2lqNkN4MURPcS80NEJrMTI1RmRzbXhkNmpHeUNKbHl4aFg3UFor?= =?utf-8?B?SjVWaTNScmN4WXJkcnlkS0kvRHRQQkY0V0dCVVhVNjdnMW50RmRTbFVSSmhK?= =?utf-8?B?T1NKN1dsTThJTjRzQU1aT1BvaHFGTFpxMzhXTnVsU0hibWp5Mjd2c0NPUzN5?= =?utf-8?B?cU90b1k0V3pIZFBmRWd2Q0xJWUdRNE5MRXF0dFpzcGJpY2lUM09UMUd0azha?= =?utf-8?B?WnUrbEg5V2RhVm9JVnIvU0dRWXhsOExYR29xOFRNNHBzc3Q5N1VrSC8vUWZV?= =?utf-8?B?Wmp6b0VTZ3dhS2xGSjhhWE5CeUttOXljRk4vTVV1cXVPYm00aDVuMHo0VDl6?= =?utf-8?B?Wjd6T2YyWnAzaVhXdW5XVHRtWFlXcktkeVN2eVkreE5FdThDeWxheG1rSnZq?= =?utf-8?B?cUNmL0E2UVhnTFdFclFwd3lNWHZoTURpZXpyVVJKYWxyVkFJWCtwS010eTFS?= =?utf-8?B?ZTRyTkhpOTVoRW9CbWtVZ3l3RGx1dnBKYzJVZlNBc0lrRytmbStZREJXcy8x?= =?utf-8?B?UnZZSDdJbVlDUytTSnRNcE9rcjZEa2cyS25nakE4bmZnaFpzSjBmdlpVeTIw?= =?utf-8?B?Q2RERWRGcTRoa1A2STd2Ym5zZ1QyRjl1cElBNDdHbEh2SFFmeU5uNWtGQ25J?= =?utf-8?B?VFh2RGdjaUN1dWEvUWhQTmYvclI5MU9DSXh3QWpiYjBIN0M4cjE5aU94bGI3?= =?utf-8?B?cTJzZ2JiTXoybmlBRCs5VDlseG9KaE15ZTVQb0NtRUE2dUVZL2NGQy9VbFlW?= =?utf-8?B?RngxOEFEdVZOV3FOa0ZUM3pHMFVrZ2ExdEFjZUFDM0Y2WnRiZzFQbjdMeUFO?= =?utf-8?B?NDVmQVB6bHBmM01sOFBCQ2tvcTZoTGdWWkFteXhraDJLZXBCaDI4QkdKc0M2?= =?utf-8?B?Mjd0VThFWTRpbnUzSjU1NGg1M2VubWY1YjEwYTdEOUFRQmEvNUJOSFZYWlk4?= =?utf-8?B?aGFTQTltNkNzNXJuaXl3RmgwQWlnRU1TWnE3MzR3VFFYYmJPZFBITlRoRi9B?= =?utf-8?B?c05XTFdSSkVUcVpROXlGWW05UndBZVEyblRNUmlTbUlwOEVYMzFFYURlUHZL?= =?utf-8?B?c3hGYndQWStTVlpNTGRRbmwxbGpva3F5TmlXUHczUE1Hcndlc2NPcm5VWUFT?= =?utf-8?B?b2ROcWtRY21URGJOMjkrUm00OXhwVUp6eElpMXAwS2JwWFRUaHpyckt4emhn?= =?utf-8?B?VWRFK00rZjhDVFg0Q1NCcW14bE5sbjNGa2k4OUJuRGhQbGZDWEhMcThKZnpU?= =?utf-8?B?dkt6MWtjOUlSciszb01yWEorM0N3Q2dENVNNUWYwdWdFM2lJSXgySjd3ejJM?= =?utf-8?B?cXlFdHRycm0zL0hVenUzNU5HZTkzUlpBOExWRHhSZ2FTaHFBaVZXSStSek91?= =?utf-8?B?cTVReUp3ZERZaGdpcEtUOVM1MVFPTDJubVBsa3RmMUFabFl0QkZWMkNpV1cr?= =?utf-8?B?OGdZT0U4VlN0NHZFZEo1QTF4dHpaYXZFbjJSdUNvRDlqUllraE5MNmRBeE9X?= =?utf-8?B?WEVFVEpFVVVtaHpIUFF5Rk9HQy9kUVhGekFpWExkV1FtemtWWE1uWFRVWk9l?= =?utf-8?B?Y0JRVzJYTDJtalFTZDAyNXc5MFVWL2F0QmRrazdBa0l3Q0UrSnF0VHZkSGlz?= =?utf-8?B?SCtKUjdwNHVBL1pkSkVweUg2SEFQSXhBREM3bk9URkhPbmJXV3lYWkd5RjB3?= =?utf-8?B?dlI4M01KN0V5NWRYTTAxOUwvWDFmM1RUaENmS2x3R0V5SGVpQWhaK3R6TXJS?= =?utf-8?B?NW9RSEFGaEQ3emsrTjJVd2gvMkxjL2JkQ3hWSUp0MGpqLzFNeXZIOXJuSndK?= =?utf-8?B?eFNxV2E4QVlMbEpnaFVaVTVLb01EK2xBUitFdXQ1bXBXQVF6dHR5dmExWGJy?= =?utf-8?B?N2pPVC81VkUrbFJLZXR3U3NYdXQ1R2VjTGJRZzkwVUhsaHdpZ1NqY00vK0VJ?= =?utf-8?B?Y2hYbGlyVVc3RW1FYUFyQUpNRWxCRTVWSWhhV29lRkJuUEswZUR1VE4rWGhM?= =?utf-8?B?WVdKMHlTV09DYVhwdDJSS3oxZTJGMnEyV0JLdkxTWWtLNkdzcUozYytRcy95?= =?utf-8?B?MEE9PQ==?= 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: 5928bd54-1d4c-4c8f-6f27-08da745fd4c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2022 08:20:16.6210 (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: cQ3cWg5Y6nhlX3mZRI3eP9gEGuDBQJxDe/tI0PgugwRsa+W+4d1NYWgbSaoBIDOe06yNGqPYut/ALApTPggr6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1241 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v12 11/13] lavc/qsv: create mfx session using oneVPL for decoding/encoding 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-08-01 at 15:33 +0200, Anton Khirnov wrote: > Quoting Xiang, Haihao (2022-07-25 06:11:49) > > From: Haihao Xiang > > > > If qsv hwdevice is available, use the mfxLoader handle in qsv hwdevice > > to create mfx session. Otherwise create mfx session with a new mfxLoader > > handle. > > > > This is in preparation for oneVPL support > > --- > > libavcodec/qsv.c | 226 +++++++++++++++++++++++++++++++++++--- > > libavcodec/qsv_internal.h | 1 + > > libavcodec/qsvdec.c | 11 ++ > > libavcodec/qsvenc.h | 3 + > > libavcodec/qsvenc_h264.c | 1 - > > libavcodec/qsvenc_hevc.c | 1 - > > libavcodec/qsvenc_jpeg.c | 1 - > > libavcodec/qsvenc_mpeg2.c | 1 - > > libavcodec/qsvenc_vp9.c | 1 - > > 9 files changed, 223 insertions(+), 23 deletions(-) > > > > diff --git a/libavcodec/qsv.c b/libavcodec/qsv.c > > index 432675bccf..fe998c9649 100644 > > --- a/libavcodec/qsv.c > > +++ b/libavcodec/qsv.c > > @@ -45,6 +45,12 @@ > > #include > > #endif > > > > +#if QSV_ONEVPL > > +#include > > +#else > > +#define MFXUnload(a) do { } while(0) > > +#endif > > + > > int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id) > > { > > switch (codec_id) { > > @@ -419,6 +425,193 @@ static int ff_qsv_set_display_handle(AVCodecContext > > *avctx, QSVSession *qs) > > } > > #endif //AVCODEC_QSV_LINUX_SESSION_HANDLE > > > > +#if QSV_ONEVPL > > +static int qsv_new_mfx_loader(AVCodecContext *avctx, > > + mfxIMPL implementation, > > + mfxVersion *pver, > > + void **ploader) > > +{ > > + mfxStatus sts; > > + mfxLoader loader = NULL; > > + mfxConfig cfg; > > + mfxVariant impl_value; > > + > > + loader = MFXLoad(); > > + if (!loader) { > > + av_log(avctx, AV_LOG_ERROR, "Error creating a MFX loader\n"); > > + goto fail; > > + } > > + > > + /* Create configurations for implementation */ > > + cfg = MFXCreateConfig(loader); > > + if (!cfg) { > > + av_log(avctx, AV_LOG_ERROR, "Error creating a MFX > > configurations\n"); > > + goto fail; > > + } > > + > > + impl_value.Type = MFX_VARIANT_TYPE_U32; > > + impl_value.Data.U32 = (implementation == MFX_IMPL_SOFTWARE) ? > > + MFX_IMPL_TYPE_SOFTWARE : MFX_IMPL_TYPE_HARDWARE; > > + sts = MFXSetConfigFilterProperty(cfg, > > + (const mfxU8 > > *)"mfxImplDescription.Impl", impl_value); > > + if (sts != MFX_ERR_NONE) { > > + av_log(avctx, AV_LOG_ERROR, "Error adding a MFX configuration " > > + "property: %d\n", sts); > > + goto fail; > > + } > > + > > + impl_value.Type = MFX_VARIANT_TYPE_U32; > > + impl_value.Data.U32 = pver->Version; > > + sts = MFXSetConfigFilterProperty(cfg, > > + (const mfxU8 > > *)"mfxImplDescription.ApiVersion.Version", > > + impl_value); > > + if (sts != MFX_ERR_NONE) { > > + av_log(avctx, AV_LOG_ERROR, "Error adding a MFX configuration " > > + "property: %d\n", sts); > > + goto fail; > > + } > > + > > + *ploader = loader; > > + > > + return 0; > > + > > +fail: > > + if (loader) > > + MFXUnload(loader); > > + > > + *ploader = NULL; > > + return AVERROR_UNKNOWN; > > +} > > + > > +static int qsv_create_mfx_session_from_loader(void *ctx, mfxLoader loader, > > mfxSession *psession) > > +{ > > + mfxStatus sts; > > + mfxSession session = NULL; > > + uint32_t impl_idx = 0; > > + > > + while (1) { > > + /* Enumerate all implementations */ > > + mfxImplDescription *impl_desc; > > + > > + sts = MFXEnumImplementations(loader, impl_idx, > > + MFX_IMPLCAPS_IMPLDESCSTRUCTURE, > > + (mfxHDL *)&impl_desc); > > + /* Failed to find an available implementation */ > > + if (sts == MFX_ERR_NOT_FOUND) > > + break; > > + else if (sts != MFX_ERR_NONE) { > > + impl_idx++; > > + continue; > > + } > > + > > + sts = MFXCreateSession(loader, impl_idx, &session); > > + MFXDispReleaseImplDescription(loader, impl_desc); > > + if (sts == MFX_ERR_NONE) > > + break; > > + > > + impl_idx++; > > + } > > + > > + if (sts != MFX_ERR_NONE) { > > + av_log(ctx, AV_LOG_ERROR, "Error creating a MFX session: %d.\n", > > sts); > > + goto fail; > > + } > > + > > + *psession = session; > > + > > + return 0; > > + > > +fail: > > + if (session) > > + MFXClose(session); > > + > > + *psession = NULL; > > + return AVERROR_UNKNOWN; > > +} > > + > > +static int qsv_create_mfx_session(AVCodecContext *avctx, > > + mfxIMPL implementation, > > + mfxVersion *pver, > > + int gpu_copy, > > + mfxSession *psession, > > + void **ploader) > > +{ > > + mfxLoader loader = NULL; > > + > > + /* Don't create a new MFX loader if the input loader is valid */ > > + if (*ploader == NULL) { > > + av_log(avctx, AV_LOG_VERBOSE, > > + "Use Intel(R) oneVPL to create MFX session, the required " > > + "implementation version is %d.%d\n", > > + pver->Major, pver->Minor); > > + > > + if (qsv_new_mfx_loader(avctx, implementation, pver, (void > > **)&loader)) > > + goto fail; > > + > > + av_assert0(loader); > > + } else { > > + av_log(avctx, AV_LOG_VERBOSE, > > + "Use Intel(R) oneVPL to create MFX session with the > > specified MFX loader\n"); > > + > > + loader = *ploader; > > + } > > + > > + if (qsv_create_mfx_session_from_loader(avctx, loader, psession)) > > + goto fail; > > + > > + if (!*ploader) > > + *ploader = loader; > > + > > + return 0; > > + > > +fail: > > + if (!*ploader && loader) > > + MFXUnload(loader); > > + > > + return AVERROR_UNKNOWN; > > +} > > + > > +#else > > + > > +static int qsv_create_mfx_session(AVCodecContext *avctx, > > + mfxIMPL implementation, > > + mfxVersion *pver, > > + int gpu_copy, > > + mfxSession *psession, > > + void **ploader) > > +{ > > + mfxInitParam init_par = { MFX_IMPL_AUTO_ANY }; > > + mfxSession session = NULL; > > + mfxStatus sts; > > + > > + av_log(avctx, AV_LOG_VERBOSE, > > + "Use Intel(R) Media SDK to create MFX session, the required " > > + "implementation version is %d.%d\n", > > + pver->Major, pver->Minor); > > + > > + *psession = NULL; > > + *ploader = NULL; > > + > > + init_par.GPUCopy = gpu_copy; > > + init_par.Implementation = implementation; > > + init_par.Version = *pver; > > + sts = MFXInitEx(init_par, &session); > > + if (sts < 0) > > + return ff_qsv_print_error(avctx, sts, > > + "Error initializing a MFX session"); > > + else if (sts > 0) { > > + ff_qsv_print_warning(avctx, sts, > > + "Warning in MFX initialization"); > > + return AVERROR_UNKNOWN; > > + } > > + > > + *psession = session; > > + > > + return 0; > > +} > > + > > +#endif > > Seems to me this rather nontrivial code is being duplicated in three > places. Would be nice to deduplicate it somehow. Thanks for the comment. I planed to cleanup qsv code, including duplicated code in the current qsv filters. Does it make sense to enable/merge oneVPL firstly then cleanup qsv in new patches? 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".