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 5B55642794 for ; Fri, 7 Jan 2022 06:48:42 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B977B6801E6; Fri, 7 Jan 2022 08:48:39 +0200 (EET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B4249689F54 for ; Fri, 7 Jan 2022 08:48:26 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1641538117; x=1673074117; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=o9e/334ER7q+A5HYymLP8TVvsPwaQQ5LGpu0Smu8Ay8=; b=WcqpH02eNQsYtF+IrxacyO/RQl6FXULotfTIE9dmPVIw6dYe/dLH1+xF WCMzkWprraNjlDP13rfzH3XSTVBDPMogu9x5BJI27q60ZON0BvQwSxfXT DzDxk018nTRYA/dGqBcwgcj85WU3wrQVxxlP2FjmEA7t93rSKIqHSjDuP VVFoIzXT1FQJJjvBmvpF9brMQl4VqVAUSjv2XRhQMKPKnJqtGEKQy7185 AJH3IR3WaGBBeXRsft/soe0o+5CSU9IgzWCFUFo+umGtz2h8Zt1Njsmho yQKpo/G48yT7doZVYBZTGVRiwR0x1vMgaJG9a78X4coEUoGoAvifvMMa0 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10219"; a="229629383" X-IronPort-AV: E=Sophos;i="5.88,268,1635231600"; d="scan'208";a="229629383" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jan 2022 22:48:23 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,268,1635231600"; d="scan'208";a="489202186" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga002.jf.intel.com with ESMTP; 06 Jan 2022 22:48:23 -0800 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Thu, 6 Jan 2022 22:48:22 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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.2308.20 via Frontend Transport; Thu, 6 Jan 2022 22:48:22 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.176) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Thu, 6 Jan 2022 22:48:22 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jy4+026lCcdET4OyxUyk7ykLkREPiea3Ag3oyA2pAJwzVxMQ+OYd268ebxhDQziHfNdehk1exakdV/RSyjrK//k+EVUb9lhZPgxSS17hhUcWhKodaWXlDPrTrKPSA++TkeFzOV8PiN5laGMNzV+F7WTctl8fGMtppslRR4x2/gCuRKQOtJjTs7RZ4uEsBXHBRmBnN4OIR5ZfawNW8kcW/e6EI7IPZSMJVuxD7mrq7b0Sld0SDu/MtJrRfoMfkNIFAjG0FtVNULovM2BYGXOQuMAea74xyJBOSq/OPxqRBQZKkYQdD9/PcWRCpEpPdIjqsIaTGf+6boXmZBOVE+SO2w== 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=o9e/334ER7q+A5HYymLP8TVvsPwaQQ5LGpu0Smu8Ay8=; b=IF+kMx0UwqCBVd5CrJr4mX7qc+zI7VlXH6W+zsnAGR9KwK/zD8QiWlmDwWj5fzSgx+1P37GRh3H1yIn6jzVeP4pJN5KcsEO+pVfr+jBu2k0BYE3jABasyOeznGGmyAioUe5Z0vFTG6RmUN4hCA0TIf4utvxLgDYO7GJ9EURYebFEAyS+6T3XDcS7DIs7DV/VVCBK6X3Km7qz4bIxMv4qDGifpnOJK9PI53MUPp+5C2APVLfh+bnuIAfLOqL0SZF/QPG9CUwCt4vAL79+5OZnVS12oEgfR0r5SyVSUq4PqghxLjn8g9znrYAIa85tRJt/3GuG/zl5u4EitojYsXGblg== 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 BN6PR11MB3971.namprd11.prod.outlook.com (2603:10b6:405:7d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4844.15; Fri, 7 Jan 2022 06:48:21 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::d436:c6ab:6e71:8843]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::d436:c6ab:6e71:8843%6]) with mapi id 15.20.4867.009; Fri, 7 Jan 2022 06:48:21 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v3] avfilter/vpp_qsv: fix regression on older api versions (e.g. 1.11) Thread-Index: AQHYA3r6p7h8hAobAEKxTuZKMxI43axXHicA Date: Fri, 7 Jan 2022 06:48:21 +0000 Message-ID: <82f72b147e752c537011219088aeb313a7f2086a.camel@intel.com> References: In-Reply-To: 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: 4cd2c690-077f-4c35-3515-08d9d1a9b1fa x-ms-traffictypediagnostic: BN6PR11MB3971:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /bcJ2LUWgATVPHWxtsUCFN5zisBLpOSD95PkDLSLpJBUmIGRpE7hnJIVbYI+zQNSrPYiEvgPf9Fm0JkxpGLgmmlm1eaBrEReRdJKS5SOuDGP3hBiAFe7WgsdTl9eu+HUZvdOE406fqqs1Ze1ZJ00u7ArQC0Jm09O86FHtUaMq3xImSaYLG9UlcG3YTiAVk1xdYpYZUWQs/nPd1e3QbURAWmAB2fF+tIGWdxyv6HIvcOuaIKvM8mfwWA03tA9Ss489O4jGWZRr0lb3pdPsiEeIAyJoiw4oWe9zXzlbVvTDwa9/JKboNSjkOtkXTMB8EakOAOOuH+HqP3szIQhyO8LEp67rHg0WJN0WK2orGfBGTkocpc/esQv4UbvfXfzILgcRclv3QQ4hSUZGrzuEN/SWxMdDPHpl6AnGi6pe3iX7ksYGaHiz6qCUTHijMPEC8I8dDRr6PV3Lt8lTloZkxF1mTb2PH1yna8tr9d7PWnOdvCLxWzKNkLk17pCWi0c6AuDpOYVCxOgtALvZgfhx1EC00+dHay4T/H44Jj2diZlPnWiaR0MrRqtuVSh7+Q6zRYPHF1cyL9eszKZSybd0+wFHcZOCpRG+pEu4+wK/m4l1yZgNWYyrHvTWd448E6wJin5lWxVb11X4/WWRuUnwJeNTmhrFEODt4ltUxivrNKr3unqR9BbJAXxdxZj8I6RmRKa+boUZe79uuRtA+yJLQlLybRL1hLn98GtqgdmF3CBtyyKv+Ax8PPaKnTgsYJ3cjVkIkyUTYj1RAcoFgKWIj4kJSxF0J4RhAH3t1831oNqyzGo/Ohdfi8IkT4j5AMN9t4MO9WY52ChHAqsdMS1WgifRvkj+fRUDTOy43hdfXYc6MA= 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:(366004)(26005)(6916009)(8936002)(6486002)(36756003)(186003)(76116006)(66556008)(66476007)(64756008)(71200400001)(66946007)(66446008)(91956017)(966005)(6512007)(6506007)(508600001)(8676002)(54906003)(2906002)(83380400001)(38070700005)(2616005)(82960400001)(316002)(4326008)(86362001)(5660300002)(122000001)(38100700002)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TFk2Z2J4amFkZitsN3hIbWFnZkg2NFpiUldNb0syQUxuZFBoOG1IYUxsellY?= =?utf-8?B?bWQraU1GMmxtSFNXZ1B6Y0Ryc0NrRU5GMjFBTE9TU3F3YTlBR0FMd2RxMmtD?= =?utf-8?B?VEQrbUZHcVNpYjJCUDFjMk4rS2xZdWNnUGVab01jVnBWZk9uV0pvNDRJN3Bu?= =?utf-8?B?WEtlV0hhMW5sUFF6WW5xYXRCaEJnVzhZaVVNcHVOTGQyTEsyaGVTWFZIV0pw?= =?utf-8?B?THdCU0JRQTlxQkl0aVZXcnkwUVNObkpIWllTdUR3UXBqdWVwSy9KczdEaWNj?= =?utf-8?B?ZzBzOEZhYjNKWGplS3pYM0w2UkNVZS90V1I4WU9ucXVpVlJoTEJMeVllVG80?= =?utf-8?B?L1VSSWRJYlhuWFBUQnRUZG9DNW1GU2YxRXNnTnYrMWZTUW5UTnN5QXdzaEJh?= =?utf-8?B?UVhQOGhsNkI4OEhEU2hEVm1UTFFhT2lVZzZYQ2hNT3RIa2dtbTFxZStmeHV1?= =?utf-8?B?S0dTQmpzekZkNSs5MElKcC84K0d2bnRka1paK2xGYXo1Zzd2a0NKWUpCZGJY?= =?utf-8?B?b2FkcGZ2T0I1Q1FrcjNBSnNUS0dtUHdLek4xVVZZTFEzS1Z5dmgwV2hPVy95?= =?utf-8?B?bThQM0w2d2xGOGF3dFYxN1YwdDBvNkswb29kbkxvTWJzYW44SEZTWFlVZGRM?= =?utf-8?B?M2tqQWhFOUhkUXdUdmpVMWp5V1VBSlA5b0Q3UlhvR0s3MjRqaDl2UkxFTjM1?= =?utf-8?B?RUltRXgreDN4bFhqek9ITmV6TGNHT1IrTEUzTzJPN2xxTnFNQ0I1UmRvMWtO?= =?utf-8?B?L1FyNVJTNmtWMHhqOEZsUVM4aFR5clAzSnNYRE9qVU1KRkdLUElGNFhsdGwz?= =?utf-8?B?eC9RNGtsVUhjRHliMUxTWmFNTm9aUTJ5Q2ltZU83RGtueXJtMlVMcWhaeU1M?= =?utf-8?B?eXhRYUgxaExiZDB2Nk5IcGFxajdVSXU4bG1hUmhKTHhDWTVIeFdRbS8zaldR?= =?utf-8?B?ajZJcklDMjZ2ZWFOZGlhL3NDc2d2dFg3MUhHY3ZzaHQ1YXhUK0VBOTBEeCt3?= =?utf-8?B?RytmZVlzZUtBZzV0TzgvTHZUV1NENUV5S0dEV0E3MXJmV21lTkozQWl6UDMr?= =?utf-8?B?RHZ3N1Y1WlRBRlRzWFVsWGE4RlBzRTllMVpmQm9aSzE5bnNKcFoxWVZqS0NH?= =?utf-8?B?N3ExNE91bko5S2pPS0Z0S2J3WW1oQU8wUzRHaFVkZ1hBMWVUeU5uT2hjSGxX?= =?utf-8?B?b2xSR1BZSjVvOTVmdWp2czlYOTI1SjNqSWl5aHB5dklCQ3RUWUpCa3Ivamph?= =?utf-8?B?bm91U0IyeWRib3dPSVZzREVBNnE0VWZyNDBWNXZSTDloT09qblBMZGhmeUZh?= =?utf-8?B?Mlp5Y0x1WGFGNGcycG80NURZWE1mN29ETjlXeDEvRUo5UU02aitpSXl6ckNr?= =?utf-8?B?WDdjMUEvYW54QXpwMzc1ZjFGRUMzbkRXSVNPbC91RDRWMmRzMUVibWJpcXlO?= =?utf-8?B?Mys3d0JvZkVSanovWnVYb3dBbDhFNFZvSkFtNEtxLzVkdTBXTWsxQkJiNndp?= =?utf-8?B?a3JZRmhicnZqb2h2UjRLUjlNc2Y0NTE4Vm5uNXRDRDZwbmxyZk8rcXY4QU9X?= =?utf-8?B?QVFMQ052ZmF1UEYrRlVUbnpPWjJPU0hHYTQyVHQwTXJlc0tzNWlpUHF4TWM4?= =?utf-8?B?MWYwc2xzaDJRam01bGUwMm16eElmZUlzdDYrdU9WdnQ3UXhYUnF6dWtyak05?= =?utf-8?B?SHlHYUROWWpjNFAwNUlEdlJzUnd6ZzFRNkVjQlFTZElrVzZYK29CWCtUcEsx?= =?utf-8?B?TU5iVWdyV1ZmVnJnektGS3ptSG1MN2czYWpLOVI0SHBkQVJ0Q3YxNWlUMjZ5?= =?utf-8?B?SHFsby9EY3BSK1Y3R1d4U3hvQXBma1EzMEpwaWJmSzIrT1Z6VlA3N25FYjhk?= =?utf-8?B?OTVENWdaa0lSemlzS1R3QVRyUEZzL0RvRjNaWFozTFBteW9obVgzN045S2Fx?= =?utf-8?B?UWNxQnQ5bVRQSFVtYmlvNzB2M0UvMHNOUURxRHNhTFI2L2hKMlVRZzNxVUxV?= =?utf-8?B?MTNQOUdsSHhKWDVTbTFJUmtZemZyTmYxblRRUjNLZ3JwaE9MR29yWExPUDhU?= =?utf-8?B?WnNDWmdDMERKa3VVYmZkelNGWE5BRExuTXpNRStvZncxTG5PWmhjdTAwbWI0?= =?utf-8?B?dks2UXBhakVqZjNYcXpMVzFEN3BTL1VnUHZ4R2sxaHNPaWtTZHQ3amxyMlFs?= =?utf-8?Q?iULxbQIJYpQVOdQMdWz74EE=3D?= 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: 4cd2c690-077f-4c35-3515-08d9d1a9b1fa X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jan 2022 06:48:21.4653 (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: fjW3MGEudVu46J6nGDl+kl+R+QD0xWc/SPk/X2aHDC6hZ5KzlPgVoF1gmJuThLx2VKw8yEMoD8lRRyZNCUCBeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB3971 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v3] avfilter/vpp_qsv: fix regression on older api versions (e.g. 1.11) 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: "softworkz@hotmail.com" , "haihao.xiang-at-intel.com@ffmpeg.org" 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 Fri, 2022-01-07 at 03:58 +0000, ffmpegagent wrote: > From: softworkz > > Commit 8b83dad82512a6948b63408f964463b063ad24c9 introduced a > regression in a way that scaling via vpp_qsv doesn't work any longer > for devices with an MSDK runtime version lower than 1.19. This is true > for older CPUs which are stuck at 1.11. > The commit added checks for the compile-sdk version but it didn't test > for the runtime version. > > Signed-off-by: softworkz > --- > avfilter/vpp_qsv: fix regression on older api versions (e.g. 1.11) > > Fix a recently introduced regression when using QSV VPP. > > v2: Fixed commit message wrapping v3: Use different way to acquire > runtime version > > Published-As: > https://github.com/ffstaging/FFmpeg/releases/tag/pr-ffstaging-15%2Fsoftworkz%2Fqsv_vpp_regression-v3 > Fetch-It-Via: git fetch https://github.com/ffstaging/FFmpeg pr-ffstaging- > 15/softworkz/qsv_vpp_regression-v3 > Pull-Request: https://github.com/ffstaging/FFmpeg/pull/15 > > Range-diff vs v2: > > 1: ccede9d840 ! 1: cbf53d8ef4 avfilter/vpp_qsv: fix regression on older api > versions (e.g. 1.11) > @@ Commit message > Signed-off-by: softworkz > > ## libavfilter/vf_vpp_qsv.c ## > +@@ > + #include "libavutil/opt.h" > + #include "libavutil/eval.h" > + #include "libavutil/hwcontext.h" > ++#include "libavutil/hwcontext_qsv.h" > + #include "libavutil/pixdesc.h" > + #include "libavutil/mathematics.h" > + > @@ libavfilter/vf_vpp_qsv.c: static const AVOption options[] = { > { "height", "Output video height", OFFSET(oh), AV_OPT_TYPE_STRING, > { .str="w*ch/cw" }, 0, 255, .flags = FLAGS }, > { "format", "Output pixel format", OFFSET(output_format_str), > AV_OPT_TYPE_STRING, { .str = "same" }, .flags = FLAGS }, > @@ libavfilter/vf_vpp_qsv.c: static const AVOption options[] = { > { NULL } > }; > > +@@ libavfilter/vf_vpp_qsv.c: static int config_input(AVFilterLink > *inlink) > + return 0; > + } > + > ++static int get_mfx_version(const AVFilterContext *ctx, mfxVersion > *mfx_version) > ++{ > ++ const AVFilterLink *inlink = ctx->inputs[0]; > ++ AVBufferRef *device_ref; > ++ AVHWDeviceContext *device_ctx; > ++ AVQSVDeviceContext *device_hwctx; > ++ > ++ if (inlink->hw_frames_ctx) { > ++ AVHWFramesContext *frames_ctx = (AVHWFramesContext *)inlink- > >hw_frames_ctx->data; > ++ device_ref = frames_ctx->device_ref; > ++ } else if (ctx->hw_device_ctx) { > ++ device_ref = ctx->hw_device_ctx; > ++ } else { > ++ // Unavailable hw context doesn't matter in pass-through mode, > ++ // so don't error here but let runtime version checks fail by > setting to 0.0 > ++ mfx_version->Major = 0; > ++ mfx_version->Minor = 0; > ++ return 0; > ++ } > ++ > ++ device_ctx = (AVHWDeviceContext *)device_ref->data; > ++ device_hwctx = device_ctx->hwctx; > ++ > ++ return MFXQueryVersion(device_hwctx->session, mfx_version); Thanks for the new patch version, it works well for me. It would be better to change the return type of get_mfx_version from int to mfxStatus if returning MFXQueryVersion(device_hwctx->session, mfx_version) here. Otherwise map the returned mfx status to ffmpeg status, then return ffmpeg status. BRs Haihao > ++} > ++ > + static int config_output(AVFilterLink *outlink) > + { > + AVFilterContext *ctx = outlink->src; > @@ libavfilter/vf_vpp_qsv.c: static int config_output(AVFilterLink > *outlink) > QSVVPPParam param = { NULL }; > QSVVPPCrop crop = { 0 }; > @@ libavfilter/vf_vpp_qsv.c: static int config_output(AVFilterLink > *outlink) > param.ext_buf = ext_buf; > param.async_depth = vpp->async_depth; > > -+ if (MFXQueryVersion(vpp->qsv->session, &mfx_version) < 0) { > ++ if (get_mfx_version(ctx, &mfx_version) < 0) { > + av_log(ctx, AV_LOG_ERROR, "Failed to query mfx version.\n"); > + return AVERROR(EINVAL); > + } > > > libavfilter/vf_vpp_qsv.c | 59 ++++++++++++++++++++++++++++++++-------- > 1 file changed, 47 insertions(+), 12 deletions(-) > > diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c > index ab58a5777e..ca7033cdde 100644 > --- a/libavfilter/vf_vpp_qsv.c > +++ b/libavfilter/vf_vpp_qsv.c > @@ -26,6 +26,7 @@ > #include "libavutil/opt.h" > #include "libavutil/eval.h" > #include "libavutil/hwcontext.h" > +#include "libavutil/hwcontext_qsv.h" > #include "libavutil/pixdesc.h" > #include "libavutil/mathematics.h" > > @@ -139,8 +140,9 @@ static const AVOption options[] = { > { "height", "Output video height", OFFSET(oh), AV_OPT_TYPE_STRING, { > .str="w*ch/cw" }, 0, 255, .flags = FLAGS }, > { "format", "Output pixel format", OFFSET(output_format_str), > AV_OPT_TYPE_STRING, { .str = "same" }, .flags = FLAGS }, > { "async_depth", "Internal parallelization depth, the higher the value > the higher the latency.", OFFSET(async_depth), AV_OPT_TYPE_INT, { .i64 = 0 }, > 0, INT_MAX, .flags = FLAGS }, > +#ifdef QSV_HAVE_SCALING_CONFIG > { "scale_mode", "scale mode: 0=auto, 1=low power, 2=high quality", > OFFSET(scale_mode), AV_OPT_TYPE_INT, { .i64 = MFX_SCALING_MODE_DEFAULT }, > MFX_SCALING_MODE_DEFAULT, MFX_SCALING_MODE_QUALITY, .flags = FLAGS, "scale > mode" }, > - > +#endif > { NULL } > }; > > @@ -297,6 +299,32 @@ static int config_input(AVFilterLink *inlink) > return 0; > } > > +static int get_mfx_version(const AVFilterContext *ctx, mfxVersion > *mfx_version) > +{ > + const AVFilterLink *inlink = ctx->inputs[0]; > + AVBufferRef *device_ref; > + AVHWDeviceContext *device_ctx; > + AVQSVDeviceContext *device_hwctx; > + > + if (inlink->hw_frames_ctx) { > + AVHWFramesContext *frames_ctx = (AVHWFramesContext *)inlink- > >hw_frames_ctx->data; > + device_ref = frames_ctx->device_ref; > + } else if (ctx->hw_device_ctx) { > + device_ref = ctx->hw_device_ctx; > + } else { > + // Unavailable hw context doesn't matter in pass-through mode, > + // so don't error here but let runtime version checks fail by setting > to 0.0 > + mfx_version->Major = 0; > + mfx_version->Minor = 0; > + return 0; > + } > + > + device_ctx = (AVHWDeviceContext *)device_ref->data; > + device_hwctx = device_ctx->hwctx; > + > + return MFXQueryVersion(device_hwctx->session, mfx_version); > +} > + > static int config_output(AVFilterLink *outlink) > { > AVFilterContext *ctx = outlink->src; > @@ -304,6 +332,7 @@ static int config_output(AVFilterLink *outlink) > QSVVPPParam param = { NULL }; > QSVVPPCrop crop = { 0 }; > mfxExtBuffer *ext_buf[ENH_FILTERS_COUNT]; > + mfxVersion mfx_version; > AVFilterLink *inlink = ctx->inputs[0]; > enum AVPixelFormat in_format; > > @@ -317,6 +346,11 @@ static int config_output(AVFilterLink *outlink) > param.ext_buf = ext_buf; > param.async_depth = vpp->async_depth; > > + if (get_mfx_version(ctx, &mfx_version) < 0) { > + av_log(ctx, AV_LOG_ERROR, "Failed to query mfx version.\n"); > + return AVERROR(EINVAL); > + } > + > if (inlink->format == AV_PIX_FMT_QSV) { > if (!inlink->hw_frames_ctx || !inlink->hw_frames_ctx->data) > return AVERROR(EINVAL); > @@ -467,19 +501,20 @@ static int config_output(AVFilterLink *outlink) > #endif > } > > - if (inlink->w != outlink->w || inlink->h != outlink->h) { > #ifdef QSV_HAVE_SCALING_CONFIG > - memset(&vpp->scale_conf, 0, sizeof(mfxExtVPPScaling)); > - vpp->scale_conf.Header.BufferId = MFX_EXTBUFF_VPP_SCALING; > - vpp->scale_conf.Header.BufferSz = sizeof(mfxExtVPPScaling); > - vpp->scale_conf.ScalingMode = vpp->scale_mode; > - > - param.ext_buf[param.num_ext_buf++] = (mfxExtBuffer*)&vpp->scale_conf; > -#else > - av_log(ctx, AV_LOG_WARNING, "The QSV VPP Scale option is " > - "not supported with this MSDK version.\n"); > -#endif > + if (inlink->w != outlink->w || inlink->h != outlink->h) { > + if (QSV_RUNTIME_VERSION_ATLEAST(mfx_version, 1, 19)) { > + memset(&vpp->scale_conf, 0, sizeof(mfxExtVPPScaling)); > + vpp->scale_conf.Header.BufferId = MFX_EXTBUFF_VPP_SCALING; > + vpp->scale_conf.Header.BufferSz = sizeof(mfxExtVPPScaling); > + vpp->scale_conf.ScalingMode = vpp->scale_mode; > + > + param.ext_buf[param.num_ext_buf++] = (mfxExtBuffer*)&vpp- > >scale_conf; > + } else > + av_log(ctx, AV_LOG_WARNING, "The QSV VPP Scale option is " > + "not supported with this MSDK version.\n"); > } > +#endif > > if (vpp->use_frc || vpp->use_crop || vpp->deinterlace || vpp->denoise || > vpp->detail || vpp->procamp || vpp->rotate || vpp->hflip || > > base-commit: 242ed971cb005157488b9a21942d9fb4be4d0347 _______________________________________________ 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".