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 2C9F54292A for ; Mon, 10 Jan 2022 07:17:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F29B568AE6D; Mon, 10 Jan 2022 09:17:51 +0200 (EET) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10olkn2034.outbound.protection.outlook.com [40.92.40.34]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E2BA76881C8 for ; Mon, 10 Jan 2022 09:17:39 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZnzL8mNRb/Z60UtwKk7gAifs5B/LFw5ApWoHwujpbOSPYuwX0qmnVTVfoX4KdYbVkN8OzsEgXMf1suO+4gSaShozYNCO2ihapP4Za9Tdfl4OSD0l8ALN36lIGfo5uCaMxCHUv+kH5azh3JELk0KxG1oOjR4M70jqOhypkd3MOKPICa92vc29nXDZEPdEKGDNLvA3nzcgbPIChnbjvQHD8xrpl0f3H6feyHPrjmqAhwAt8Pmx3LwZWGLKIjrXvokM0cZkwTpZTu3kqct75vNaLEUTQ/c1kM70hefN4Jf9nLPfOJjj6wWKUto/bckFLEYqcDN7XNDQ5sdtvJxLsjqQ3w== 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=zqsAq3pdPk5xMeYfK6BZw8C3qZTBkNadG3wBifYWzYs=; b=Z3ub92vm4qric4xto7KCj2OJSNWzLIW3Lg3bl9g74Z14c1vlz0LQckXF9Y3IfA0lQzL8Y6Tzl5BNHYdLErsEkTVURoWmFw5H+cx5Oo8hUBfTi9uMp96KU6YPb9oJnWlc+96Tq2kFKV8bXyC6T2yABV7rrA+cQW8m4jzYHx+A2LX68kPmivLtt+tnN8msX81Fg9K3lfwQVyis5AN+LxXe12SBP6erJhagOwtalE/UP5OrbJ+Yprt9KzYrR4PJFPgtN8GEjQu5I3TkbBjp47MyOrQq4WQq4kk7MdpmeBTR0H8s7NntxFGkpETkzXBSeFFj/U5Ea3h4izVppWpZYqJN1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zqsAq3pdPk5xMeYfK6BZw8C3qZTBkNadG3wBifYWzYs=; b=Kou7NlNvIHQNo25vsUbUFVBKJkPXm/q2Syqb6HmyVnm+CN6sCW/Onfr0/g9ZDHmeBERSm6tt6ubxRbVcXeMF/hjaISiI36zR00rGpCYgrqn++EVBSZCfKLLy8PmT0XaaF5CgRvC97PnqyybjYzgOJ+F1i9s0f2mw+f38KLwGuXJcUjGHG+EOS2PPB7rTcfIkrEegE1yV3NXDZp+Mbzqm3J+j4jcrENgNQ0TREMk84dwZFDZdvXbrZPaoxJs05r00TqervveDt7jbqnoQJmdrYROc3AGTUMeXJw2MPnlVw0qwxcSZMprgFVoscPFfa6YHnlRA/qveIS2DVV+qEdU8iw== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by DM8P223MB0320.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Mon, 10 Jan 2022 07:17:37 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::54ae:66eb:e304:96d6]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::54ae:66eb:e304:96d6%8]) with mapi id 15.20.4867.011; Mon, 10 Jan 2022 07:17:37 +0000 From: Soft Works To: "Xiang, Haihao" , "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v4] avfilter/vpp_qsv: fix regression on older api versions (e.g. 1.11) Thread-Index: AQHYA5RnTrtD43vha0i1KWo6bEvobqxb2PWAgAAEDVA= Date: Mon, 10 Jan 2022 07:17:37 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [1YOA+vU+TEo2/BEjUDZt2q1BREx6wIZ9] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1ed8c459-3463-46c1-0437-08d9d40947fb x-ms-traffictypediagnostic: DM8P223MB0320:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: basxkKU35hQ1kPGvDrwGh5II2coFiQlkIDGZbb8nVANMGjfdsjrfBXs8sX6jQEU65SnCPQNWyFATQwdmc+TSqIFGbkwc0yIVJ8gMwWjXewCtfvOkRYiJpPupe4dW431hwCTPri9VN9BeQOHZtsZCldJv7dT5IZHtAorCTEIoJ4xLYcMe1bzKXBgSqhX85vtLbJdalU4ypA9r3LNz0BaJGWgoFJFVJXtUDgmheovOpuqUpgGv7mh55gweGeyw/c6X/PixS7QbpPYD6DUjOzXwfiHighCCgJ9exb5n7FGbDsBNzyMJsh+FeMYDe8VjmYjY4Rev/wQCgOL2AY5cpcPIs5d+LCjOO1FTDjzmqcJaPzER+M8vLf2Js7/V9fJJjf1BKQh7MnOZj8PQA6iExMT7qCORo29P804U02CzFysKK4roQs7TwyXwiniaLv6eqhExHag/u5z0VxnraHZDLuYQlMOY5yRYDLIAhdiN3505zxVannuxrQjhNxB0GcMWDzCGhDwJXTDPYqCxc7oO5jBDTN8dgq6XMsft8koB7D/SWq9jWjX+jHo+pEEnPFwwMDhZojmUGQ33GIEo/+ZYfXfR3PWmcUdyWbrII+NsS2+Hvnw2oJu96szFSwxtJ4j/ao4IUizcL6/1hEFXGOL9/wxd/QqdsxuCHGLEox5XAGRfyCQ= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dXN5REEwY0RmQ3RWRGNqNWNpZWZTS1AxZTV6dVlpVkNxZjI3WUljLzhsYmkx?= =?utf-8?B?WmNSWWRRT2xQWHExamRnWmJrNjBQSUVJMDNUekoyZ3BZaWM3STFpeitieG1m?= =?utf-8?B?TG5peWU3WmZmb3g1SGprTDFVTGZLVngxemZxbHp5SG1ScFhka2YvZUs5UWR2?= =?utf-8?B?VXlqVk5LdS82Tm1KOTJ1U3pjQzZaUUFWUStJVTJRL3hNd2V1MEIrMHVuNVRo?= =?utf-8?B?UEMvTER6QnZsUm5SSDlkaWdkaGNUd3VCN1l2NWF3ZWxBbkpMd2xvYmFtcVEz?= =?utf-8?B?Z0RjT3VnWVJZMEQ5bkhVa1ZGTDFBWXV4YnBLNVo5Qkd5ZjZOaG1heFc1ZSth?= =?utf-8?B?WFpiSmlVclVWa0p3cVRpMU01RHBLMXA5eGJueFhCT1A5SGlRTUxvaGx1bGtp?= =?utf-8?B?UVMyWVJZT0cwREdHYmpUc0g0NDdxcW1XcDFoYmlDYytuWDVHKzVVcnpWd1B5?= =?utf-8?B?WVVxV2F2aHAyV2k1Vkx4dFFrZzlpODBKb0ovQ3pabWJtSlFLRFQ0Z3hGa01T?= =?utf-8?B?VEJYM2ZqVVRDNHhYSTZ6QkFHZjg2aWVna2dQcGN6enkzM1BjWjlYcUdmWFFq?= =?utf-8?B?ai9sQk9RcTh4Q2Z5QTdRdjRRdkVqVTJ0djh1MGdmUmpHUjVhL1pVVDFuTTFn?= =?utf-8?B?c1BZSk5mTTg0b0tKbzQ3UDhHTW1XRG52MFpQMk42MklsUEMxQ05yL0psTWFv?= =?utf-8?B?K3FadWNSM3ZveE01Q2NjZDZjVUM0MWh2Vmw0QnBmUzBJbGxlNHhkZnU2S1Bq?= =?utf-8?B?TlNSUkd1V2RxRzNrVTZPVGQrSEJzWjRudjBOSGpNc01DR085Rnd4RWFZbkxR?= =?utf-8?B?eFpSaXlzdXBiaUt5ZGltTG5FbGQ1OTJVZDFZSHZ3bnoyMSt4TGFvb0N4czNo?= =?utf-8?B?ZzRXTERFdm9iUWNxL00xS0cwZ1dTT1UvQUsrbmFUMmJIdVRHRUlOYm9nQzkr?= =?utf-8?B?K3hkZ3NoUTQvNlBDV0Ria2UrT1dzV2FlRXFyUGw4QUNESS8xcS9NM21EZTlt?= =?utf-8?B?U25icVNBYVM3cWdOa3RvTU44dkpEZkJaL2gwRmFoSDVCa1Z1WkVMeTUvSlJH?= =?utf-8?B?bnNRR2J3ZEdidnlpRHIrNFh4UllGbWxJdUlWdURyMG9BQWNuRWZwMVZDaGRQ?= =?utf-8?B?bWludk5SSURNRGhacUdpRm9DS3NWWWRsWE1jMGZ1ZmZlbzhXWjR6RHJ4dWtw?= =?utf-8?B?M0g3V1llT210bldsUVpQQjNWbldKUm45bDVaMDJuTFVBQXczK1pqUW9HWm8x?= =?utf-8?B?bGVFaG1HbTlUc3ZOREUwUnBUbVZRNG16anhEdktIYzBUYlpJZz09?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 1ed8c459-3463-46c1-0437-08d9d40947fb X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2022 07:17:37.6750 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8P223MB0320 Subject: Re: [FFmpeg-devel] [PATCH v4] 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: "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: > -----Original Message----- > From: Xiang, Haihao > Sent: Monday, January 10, 2022 8:03 AM > To: ffmpeg-devel@ffmpeg.org > Cc: haihao.xiang-at-intel.com@ffmpeg.org; softworkz@hotmail.com > Subject: Re: [FFmpeg-devel] [PATCH v4] avfilter/vpp_qsv: fix regression on > older api versions (e.g. 1.11) > > On Fri, 2022-01-07 at 07:01 +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 > > > > v4: Use mfxStatus as return type for get_mfx_version() > > > > Published-As: > > https://github.com/ffstaging/FFmpeg/releases/tag/pr-ffstaging- > 15%2Fsoftworkz%2Fqsv_vpp_regression-v4 > > Fetch-It-Via: git fetch https://github.com/ffstaging/FFmpeg pr-ffstaging- > > 15/softworkz/qsv_vpp_regression-v4 > > Pull-Request: https://github.com/ffstaging/FFmpeg/pull/15 > > > > Range-diff vs v3: > > > > 1: cbf53d8ef4 ! 1: bf53154420 avfilter/vpp_qsv: fix regression on older > api > > versions (e.g. 1.11) > > @@ libavfilter/vf_vpp_qsv.c: static int config_input(AVFilterLink > > *inlink) > > return 0; > > } > > > > -+static int get_mfx_version(const AVFilterContext *ctx, mfxVersion > > *mfx_version) > > ++static mfxStatus get_mfx_version(const AVFilterContext *ctx, > mfxVersion > > *mfx_version) > > +{ > > + const AVFilterLink *inlink = ctx->inputs[0]; > > + AVBufferRef *device_ref; > > @@ libavfilter/vf_vpp_qsv.c: static int config_input(AVFilterLink > > *inlink) > > + // 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; > > ++ return MFX_ERR_NONE; > > + } > > + > > + device_ctx = (AVHWDeviceContext *)device_ref->data; > > @@ libavfilter/vf_vpp_qsv.c: 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) { > > ++ if (get_mfx_version(ctx, &mfx_version) != MFX_ERR_NONE) { > > + 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..5c96703fd3 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 mfxStatus 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 MFX_ERR_NONE; > > + } > > + > > + 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) != MFX_ERR_NONE) { > > + 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 > > LGTM and applied, thx! > > -Haihao > Thanks _______________________________________________ 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".