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 C91FC42095 for ; Thu, 28 Apr 2022 01:37:37 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BA9DB68B4EE; Thu, 28 Apr 2022 04:37:34 +0300 (EEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A3CC68AF2A for ; Thu, 28 Apr 2022 04:37: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=1651109852; x=1682645852; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=YXpSVBeebRWqDS79EPW8YfwLgYNXedb+Lt4iduCR7GM=; b=BuTyBOZ9HLgBUXXHjYWiXcxPxGrWDp7id1ZZ/moj6xTaBXXXTuYEF0oo dgAs4+6HDQ5MyT+jOYthlwYVq/8ZKJ3qo5GxmvymkCsnDo1D5CUa+/AcB UU0sCu+S/ROd4GQyfUZVw5NKPifJ/ZP0zhPVWFX1++Hf6JK7RYkvE7NwH gWS0YYOV4Ic1eoLzL/DlQAlOe8pjOgbDYnh7eZtjFogL4syKv0S30QOM3 cRI+AqVpzf3p/pJFxylQZgC2hNszp6sCa2ZCTDlTbH6xxJH6SLf8tEA3V dIxYZsWk3+33yqghqGsEU+Za3+qb7ftQsXzWdngfyJ0rgKw093c1LWPHo g==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="263713551" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="263713551" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 18:37:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="580955254" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 27 Apr 2022 18:37:24 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 27 Apr 2022 18:37:24 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Wed, 27 Apr 2022 18:37:24 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Wed, 27 Apr 2022 18:37:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PSxceYBkGFRfBSuB6k5cVDnJBS6bBsOD6mRJv2a+XsI3W2l+uQTWnGe3ywung9vsKLbCI5WH1KkC1co+RCPMElT+vYKayvJVrSdhVw948gnL/55uwohUbqGyOIfn5n+SHmQ9pF5ihQ+NWeAyirCaxK/7KCechoPLDzVTe0mpj9GeaiQ+LmDV9Ph38JqiSVIcm/evt6bunM26wOpR0MdRERTjnCp1iBWUkmkBc32CtaBnoGLs2wxCOgJAGC/+INK1jvKAPySDIZ7HQN+bz9X1tmw57Znzn4FVsUQ+Rk0q+3mDwL8bPZcu9A95Q2/rNmCJTzU8eFnOAF3o13u9KkutHw== 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=H+yDclL+kzOa3P9QhE9wo+I/aGJXZLhyAVftFVdX6Bs=; b=BMQwtJuqeyEuT+5Ts2cAlQgwx8cytLbOYZmaiNd56c1gs+nIqcdicfghvMQ+u61loupqxi0yGhlZHgBk1MKNu2xHoEkVFI5o8HgLuBsNAcpspc20cxdTiCcPSeMO3L6hkXh/QucWcgx6pF73V2ZTDzEfBGDcz4eQRj8tYysCdpM0dsGR+V4X7rYyFsG01vHXVoHEE2GvU7//2ZJLuc7N2u4mSJVUjHCDHejhwoG6YyXjo44qnNYykZutSdx0kBc3LiHX5IsGm8QA4oHbu2xqpvK1t7YUBZP/NiT9gwt9wgQyCXhsTNqrXh9BYrogPMLmNYCZ4GWRqzyQz+SavdWOJQ== 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 BY5PR11MB3879.namprd11.prod.outlook.com (2603:10b6:a03:18f::17) by BYAPR11MB3061.namprd11.prod.outlook.com (2603:10b6:a03:83::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.18; Thu, 28 Apr 2022 01:37:21 +0000 Received: from BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::14b2:848:f938:32f6]) by BY5PR11MB3879.namprd11.prod.outlook.com ([fe80::14b2:848:f938:32f6%3]) with mapi id 15.20.5206.013; Thu, 28 Apr 2022 01:37:21 +0000 From: "Chen, Wenbin" To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH] libavcodec/qsvdec.c: extract frame packing arrangement data Thread-Index: AQHYWVSU+JiyAsnr/UGKjOfzIrcQua0Dg0QAgAEKnnA= Date: Thu, 28 Apr 2022 01:37:21 +0000 Message-ID: References: <20220426100035.2026406-1-wenbin.chen@intel.com> <476dd14561291180337ae4135c4d0d224b9fe4a3.camel@intel.com> In-Reply-To: <476dd14561291180337ae4135c4d0d224b9fe4a3.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.401.20 dlp-reaction: no-action 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: 909d618a-2e80-4c9e-0b71-08da28b7a35e x-ms-traffictypediagnostic: BYAPR11MB3061:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FWvBP8sVB2CpQ/w8Wb2RlMg+BbDtUlSslfQsYcL+jfeZPkXuRgy7ePlb35uCAtOxGZxKBbJZIYbbv7X6bHKAv/5gHwvBVr/+qv33zSgKca0poVAC0xlhLDp79MAw/zAdi0JP5EPKg3cfCFdrLlR/DWczRNs5s+6z/u81bhYeVRZfzb75Od1OQk1ez7Jf63jJ81sAG1USJbbqn0zHnREnrHn0r9CHuM+KOs245/LJhtc4C8uOhxqpiHjl4BpxoPSKqsqsRESL6gAc+XjvdDrkc798ye0cv1z2xjwRFJr1d3u3jCqNCt8f2mr0/jdtfcTDsVsNzgVh6BcZea2IX3Xp52FF4h27JyaYeGeRNebC7Y31cYWFIRyKL/KAQSh2/7w8rdtx0KeGDqRhmVej/FMG2hFAUF5BnzBeqZoQO8YLzEGEIjAcdHgbiT8xCYxewNaWgeP1kokDjAQAR7plK4AOKkNMOO7DiZs3JZiRl1B0TcEvv+PKdiXPo3bMTQlTZN6ioTayKhNHYvJYWGLv5iCO7ta9cWSpesudYzKDYOU3rxc9Oec9KFlmRxsmW2N74y7cJTsbHtYxZNU20qmBW+qB0OteS/4PBj0l6njtrmXQHWG2eiiGltKBSGnle2JVBSkFTMCUJBUNjCmCm/jk64UmZdJsuxnWZ4rOxC3oWHtUcOj8ebwJaCZIcfFxWm7mPSkw1YiI4NnGwEyrdrAy1aZPdVe4Jwv0wqbbTBDl2QIix4ilANyJZTHijxGJ53uv6iKQuNMWYjp/NFD05mRptApo7Idnz5HXV1a0L0dTUqy3RGYfDbAJzA/fNio4m0cXRIvNLSWyoESNktlgFX+fd6bt5XgOwyEnQm//ubZvYUV9sCL8m0vMuao6VMebVBKf+07T x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB3879.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(5660300002)(2906002)(7696005)(6506007)(966005)(186003)(8936002)(83380400001)(9686003)(26005)(55016003)(33656002)(508600001)(316002)(19627235002)(6916009)(122000001)(52536014)(38070700005)(66946007)(38100700002)(71200400001)(76116006)(64756008)(66556008)(66476007)(8676002)(66446008)(86362001)(82960400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?h9snjevyTVuaNz3E2Pefmyk7w+jzxanfNrp3AlaKmrtBoDlD98GZkDqhJnYp?= =?us-ascii?Q?YTWwtR4iANH49gaqlD3l0EHBQV29nzWzgncjUBlfL7+4f1VQgBalJlMy0+Yh?= =?us-ascii?Q?sYBfICIqKboFpNSbpgd3ExA4GQzTlDdvslnXyShKw+aKok13Xrch6DqqqUlr?= =?us-ascii?Q?xtr5lgMk/azh8BEM6VMDMewXHQnytUiH3bLjCRgAFFfcetJa+m2oZ83iYYuq?= =?us-ascii?Q?PnTGVEw/5RCTpEQx5PasM3EoWRsqtpgLxbe653vgjgx0JJ6coBR7wXmy/QSy?= =?us-ascii?Q?FyIBwfjL//mHMwuRC331NYRozn6u0Cb3dobK+AzFeygL45t0g5ED9YW2yJKN?= =?us-ascii?Q?gDWrlw8ShRAdUpAtWmf918Zx9lqgyPeLcv0/qNtgGEEWs1/gMmPpEc1DJdwB?= =?us-ascii?Q?ulvy8lptAcvtd1T1tUymsGJntXsHqmFYWtfNkme4DEGOz7CtEZnY97/StP5l?= =?us-ascii?Q?lFj8IS3dlrF/jI3HSkDn+X8uf9rt9ckKSDDkz8dWgMMUMtjH/wnzPjlLXdFI?= =?us-ascii?Q?UKkpM8PKfhrGCuPJa+oxCkRURenCc/11aLN2hKydHKQerPKqYBedrTCV1qA5?= =?us-ascii?Q?T80S2fiSabTTttF7RBu4aSVQ9SdzNc3zunXYi+7aGwyiyab1vldqaVMkHYVU?= =?us-ascii?Q?ID3Ue+1SpkzA90P30SBuwQefxiJCEgh8Cosiy7P0er2WfJ61/DCnOpc/g/YQ?= =?us-ascii?Q?NB5pw2QQmPljR8FnQBNZErRtz1CHyFWRx7J5WYosO3L8wJNWtwbLhWjJ/BTC?= =?us-ascii?Q?JUB/uJszAEd83x8hzO88XR0wG9lB5nqm5Ly6bjlDdPCtV6IwjlLdHwKr8Dul?= =?us-ascii?Q?35yqLpOQmKteFUt1wmknZYbEaEUJ5TzR3UOyVb+DA85fRE2SgfVQUO4XtVch?= =?us-ascii?Q?+iwfQTFFiZ0Jf6PqTUeDKCzBR6vbW3mCOY4NY8JJCK+RH2gcU3qNrqMmu2yo?= =?us-ascii?Q?V2htdFuIV3xq/CoVlwqnG5yTY56MZxAj/xPZk4jcOFKAaNLvdrHiT/gTBhZt?= =?us-ascii?Q?rD+ke55dfm2gkDBZm3RSe1LWCMMq2E6lWmyecUnCJpMKKHzcYg4tAD07ZzOh?= =?us-ascii?Q?BGwLKXizik3FnpvE3I3qiTd8moiANWHdiE4zemKOAM/fE7PJvAslkVILl5oB?= =?us-ascii?Q?dyOE2kj8UvrVa+4OrBUVIEBC6ttfc03kLYd51BltgCsSnYlAHg4ovwt39as5?= =?us-ascii?Q?UEfkMdO0+LzBOhbgt8Co1HqaSDNpYUdx30ZR/WhkhNBGExKwIJHBPpTKB3Iq?= =?us-ascii?Q?shDdyz89nBz7+nmkz9HfRSW5pTSpWW6WlOTc7yhB4yw38k7mGAe3s95WwS1+?= =?us-ascii?Q?G0YlM2YOS7KL6G8/L6SWdZep3K5l2jXvrEl7scWm38azIA6mWRBWqMhSHlPx?= =?us-ascii?Q?u3W2StpsMhtktDhGI3cZaPcWrnd6vvMgnE8YyjIS9/DNPJc9ayvohcS6fVqG?= =?us-ascii?Q?kaKMca1xmIplP2Y58vpQQvh8L8lm39nNm1TVwQzqJo8EiqDNg3F5qZfC++m4?= =?us-ascii?Q?vs5TKwUsqocInhU/HDlp6mIDKbim5VR/KNFtVSUPPXk4EIbXAA11x8QrDOno?= =?us-ascii?Q?Qn3+LWTC5xJvfi585Dm1mSUoBbexHnFZto4cdWbXoTdQ0j3SHunwgNgvCDor?= =?us-ascii?Q?22k9UHthvIjJGOxh58i0XO4UHOo6NOMYI8sw7vlPL6OeyEH+p3BtYKXHMo2l?= =?us-ascii?Q?UHjuVEIFbWEE0WEMzkO3pU83AypLiMaB8swNZPB7ZoLKZd47VQFa6QO0BPt+?= =?us-ascii?Q?6fpZTEAnCA=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB3879.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 909d618a-2e80-4c9e-0b71-08da28b7a35e X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Apr 2022 01:37:21.0697 (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: pd9nCwpSPRFak1nmoP7kawYkLugUgNABOpk4taLpiHOQd9Gy9B9h6AEutfToOJ0XxcZ+HL980Cwcx7Xc25roVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3061 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH] libavcodec/qsvdec.c: extract frame packing arrangement data 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 Tue, 2022-04-26 at 18:00 +0800, Wenbin Chen wrote: > > Use h264_sei to parse SEI data got from MediaSDK. Extract frame > > packing arrangement information from SEI data and config AVStereo3D > > side data for decoded frame. > > > > Signed-off-by: Wenbin Chen > > Signed-off-by: Tong Wu > > --- > > libavcodec/qsv_internal.h | 2 + > > libavcodec/qsvdec.c | 160 > ++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 162 insertions(+) > > > > diff --git a/libavcodec/qsv_internal.h b/libavcodec/qsv_internal.h > > index e2aecdcbd6..a804c392c1 100644 > > --- a/libavcodec/qsv_internal.h > > +++ b/libavcodec/qsv_internal.h > > @@ -54,6 +54,8 @@ > > > > #define QSV_MAX_FRAME_EXT_PARAMS 4 > > > > +#define QSV_PAYLOAD_SIZE 1024 > > + > > #define QSV_VERSION_ATLEAST(MAJOR, MINOR) \ > > (MFX_VERSION_MAJOR > (MAJOR) || \ > > MFX_VERSION_MAJOR == (MAJOR) && MFX_VERSION_MINOR >= > (MINOR)) > > diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c > > index 5fc5bed4c8..26fa178b4d 100644 > > --- a/libavcodec/qsvdec.c > > +++ b/libavcodec/qsvdec.c > > @@ -41,13 +41,16 @@ > > #include "libavutil/time.h" > > #include "libavutil/imgutils.h" > > #include "libavutil/film_grain_params.h" > > +#include "libavutil/stereo3d.h" > > > > #include "avcodec.h" > > #include "codec_internal.h" > > #include "internal.h" > > #include "decode.h" > > #include "hwconfig.h" > > +#include "get_bits.h" > > #include "qsv.h" > > +#include "h264_sei.h" > > #include "qsv_internal.h" > > > > static const AVRational mfx_tb = { 1, 90000 }; > > @@ -101,6 +104,10 @@ typedef struct QSVContext { > > > > mfxExtBuffer **ext_buffers; > > int nb_ext_buffers; > > + > > + mfxPayload payload; > > + H264SEIContext sei; > > + H264ParamSets ps; > > } QSVContext; > > > > static const AVCodecHWConfigInternal *const qsv_hw_configs[] = { > > @@ -600,6 +607,150 @@ static int qsv_export_film_grain(AVCodecContext > *avctx, > > mfxExtAV1FilmGrainParam > > } > > #endif > > > > +static int h264_decode_fpa(H264SEIFramePacking *fpa, AVFrame *frame) > > +{ > > + if (!fpa || !frame) > > + return AVERROR(EINVAL); > > + > > + if (!fpa->arrangement_cancel_flag && > > + fpa->arrangement_type <= 6 && > > + fpa->content_interpretation_type > 0 && > > + fpa->content_interpretation_type < 3) { > > + AVStereo3D *stereo = av_stereo3d_create_side_data(frame); > > + if (stereo) { > > + switch (fpa->arrangement_type) { > > + case 0: > > + stereo->type = AV_STEREO3D_CHECKERBOARD; > > + break; > > + case 1: > > + stereo->type = AV_STEREO3D_COLUMNS; > > + break; > > + case 2: > > + stereo->type = AV_STEREO3D_LINES; > > + break; > > + case 3: > > + if (fpa->quincunx_sampling_flag) > > + stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; > > + else > > + stereo->type = AV_STEREO3D_SIDEBYSIDE; > > + break; > > + case 4: > > + stereo->type = AV_STEREO3D_TOPBOTTOM; > > + break; > > + case 5: > > + stereo->type = AV_STEREO3D_FRAMESEQUENCE; > > + if (fpa->current_frame_is_frame0_flag) > > + stereo->view = AV_STEREO3D_VIEW_LEFT; > > + else > > + stereo->view = AV_STEREO3D_VIEW_RIGHT; > > + break; > > + case 6: > > + stereo->type = AV_STEREO3D_2D; > > + break; > > + } > > + > > + if (fpa->content_interpretation_type == 2) > > + stereo->flags = AV_STEREO3D_FLAG_INVERT; > > + } > > + } > > + return 0; > > +} > > + > > +static int h264_parse_side_data(AVCodecContext *avctx, QSVContext *q, > AVFrame > > *frame) > > +{ > > + GetBitContext gb_payload; > > + uint8_t *sei_buffer; > > + int sei_buffer_index; > > + int ret; > > + > > + if (q->payload.Type != SEI_TYPE_FRAME_PACKING_ARRANGEMENT) > > + return 0; > > + > > + sei_buffer = (uint8_t *)av_mallocz(q->payload.NumBit / 8); > > + if (!sei_buffer) { > > + av_freep(&sei_buffer); > > + return AVERROR(ENOMEM); > > + } > > + /* remove emulation prevention bytes */ > > + sei_buffer_index = 0; > > + for (int i = 0; i < q->payload.NumBit / 8; i++) { > > + if (q->payload.Data[i] == 3) > > + i++; > > + sei_buffer[sei_buffer_index] = q->payload.Data[i]; > > + sei_buffer_index += 1; > > + } > > + > > + ret = init_get_bits8(&gb_payload, sei_buffer, sei_buffer_index+1); > > + if (ret < 0) { > > + av_freep(&sei_buffer); > > + return ret; > > + } > > + > > + ret = ff_h264_sei_decode(&q->sei, &gb_payload, &q->ps, avctx); > > + if (ret < 0) { > > + av_freep(&sei_buffer); > > + return ret; > > + } > > + > > + switch (q->payload.Type) { > > + case SEI_TYPE_FRAME_PACKING_ARRANGEMENT: > > + ret = h264_decode_fpa(&q->sei.frame_packing, frame); > > + break; > > + default: > > + break; > > + } > > + > > + av_freep(&sei_buffer); > > + return ret; > > +} > > + > > +static int extract_frame_side_data(AVCodecContext *avctx, QSVContext > *q, > > AVFrame *frame) > > +{ > > + mfxU64 ts; > > + mfxStatus sts; > > + int ret = 0; > > + > > + if (q->payload.BufSize == 0) { > > + q->payload.Data = av_mallocz(QSV_PAYLOAD_SIZE); > > + if (!q->payload.Data) > > + return AVERROR(ENOMEM); > > + q->payload.BufSize = QSV_PAYLOAD_SIZE; > > + } > > + > > + sts = MFX_ERR_NONE; > > + while (sts == MFX_ERR_NONE) { > > + > > + sts = MFXVideoDECODE_GetPayload(q->session, &ts, &q->payload); > > + if (sts == MFX_ERR_NOT_ENOUGH_BUFFER) { > > + av_log(avctx, AV_LOG_WARNING, "Space for SEI is not enough." > > + "Realloc buffer\n"); > > + if (q->payload.BufSize >= INT16_MAX / 2) > > + return AVERROR(ENOMEM); > > + q->payload.BufSize = q->payload.BufSize * 2; > > + av_freep(&q->payload.Data); > > + q->payload.Data = av_mallocz(q->payload.BufSize); > > + if (!q->payload.Data) > > + return AVERROR(ENOMEM); > > + continue; > > + } else if (sts != MFX_ERR_NONE || q->payload.NumBit == 0) { > > + break; > > + } > > + > > + switch (avctx->codec_id) { > > + case AV_CODEC_ID_H264: > > + ret = h264_parse_side_data(avctx, q, frame); > > + break; > > + default: > > + break; > > + } > > + if (ret < 0) { > > + av_log(avctx, AV_LOG_WARNING, "parse side data failed\n"); > > + break; > > + } > > + } > > + return ret; > > +} > > + > > static int qsv_decode(AVCodecContext *avctx, QSVContext *q, > > AVFrame *frame, int *got_frame, > > const AVPacket *avpkt) > > @@ -709,6 +860,14 @@ static int qsv_decode(AVCodecContext *avctx, > QSVContext > > *q, > > > > outsurf = &aframe.frame->surface; > > > > + ret = extract_frame_side_data(avctx, q, frame); > > + if (ret == AVERROR_INVALIDDATA) > > + av_log(avctx, AV_LOG_WARNING, "Side data is invalid\n"); > > + else if (ret < 0) { > > + av_log(avctx, AV_LOG_ERROR, "Error extracting side data from > > packet\n"); > > + return ret; > > + } > > + > > The payload got from the SDK is in encoding order, however the frame > returned > from MFXVideoDECODE_DecodeFrameAsync() is in display order, see the > discussion > about MFXVideoDECODE_GetPayload() in > https://github.com/Intel-Media-SDK/MediaSDK/issues/2597 . I think it would > be > better to ask the SDK returns the corresponding info, like what they did in > https://github.com/Intel-Media-SDK/MediaSDK/pull/2726 . > > Thanks > Haihao Thanks for your information. I will try to fix this problem. Thanks Wenbin > > > > > frame->pts = MFX_PTS_TO_PTS(outsurf->Data.TimeStamp, avctx- > > >pkt_timebase); > > #if QSV_VERSION_ATLEAST(1, 34) > > if ((avctx->export_side_data & > AV_CODEC_EXPORT_DATA_FILM_GRAIN) && > > @@ -770,6 +929,7 @@ static void > qsv_decode_close_qsvcontext(QSVContext *q) > > av_buffer_unref(&q->frames_ctx.hw_frames_ctx); > > av_buffer_unref(&q->frames_ctx.mids_buf); > > av_buffer_pool_uninit(&q->pool); > > + av_freep(&q->payload.Data); > > } > > > > static int qsv_process_data(AVCodecContext *avctx, QSVContext *q, > _______________________________________________ > 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". _______________________________________________ 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".