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 484EA44D95 for ; Tue, 22 Nov 2022 05:42:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1755068B579; Tue, 22 Nov 2022 07:42:04 +0200 (EET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B5CCA68B115 for ; Tue, 22 Nov 2022 07:41:50 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669095721; x=1700631721; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=f0GX0Ul41mVmXICeH2bb8GOh8IslZaTVXxdZHW7hCvg=; b=bdJCivHMpVr3m3gUh4HmtoYbuZljDydhPqseouCbEnd/a/CoxsDiZXYy 3XzKSExBxF4KY4zOvYnufOfp0R/niW6GZLGod9HiVoTXftPXXNlqunKgt fmAOK0oaJRJ9MMS2XRzfSQQwI/IUV4W3AMI8sHuI9qodd+czR4uTeiBkk LC2sCKVCioJhLISFPEPbCQKbYyA5EUAS0KRbJcVK9O3pYv4ZI4obbzr+Q ODlZ2U0MSBOHP5TlBUN8me7WxZpZfg79KHT167qUlycxeDP+Hu0xjcLwD AD/04qlVblcoFY0oniL87qVDQbYZLbGFhImK5urs2gf5ICgWPxICkARc+ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10538"; a="311366820" X-IronPort-AV: E=Sophos;i="5.96,183,1665471600"; d="scan'208";a="311366820" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Nov 2022 21:41:44 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10538"; a="747206470" X-IronPort-AV: E=Sophos;i="5.96,183,1665471600"; d="scan'208";a="747206470" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga002.fm.intel.com with ESMTP; 21 Nov 2022 21:41:39 -0800 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.2375.31; Mon, 21 Nov 2022 21:41:27 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.2375.31 via Frontend Transport; Mon, 21 Nov 2022 21:41:26 -0800 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.46) 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.31; Mon, 21 Nov 2022 21:41:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cOKkFPiyY1ySFBnfzuME69t/hfGmWrfe+fimrEo4MATJ5HwXol8bju8g7gCg8Hh84W9Qhlce8JNTI7KjU/DauSAukUHtvCeJuF/1nAP8zYB/cwyjfEwlPOwfWnq+I30rZVFjA3k4+dQGYjeD/6kfxBWirdRukY2GxmJL0Z6GzX+cnN5msQNfh131mPYEsp1c5E9Vftk6vmpckfi/Zsx09sJu/5Pdrmk7fPco7fQBvMC68kPooC7s8AgMPTysbBBux3h1uORCIVJKYF0FpHvffmZjEiAiMihZbT8jtwxmAEEUnUGZkU5JmIy62PbcHA1aMnluns2Cd5cgOrpofVAj6g== 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=f0GX0Ul41mVmXICeH2bb8GOh8IslZaTVXxdZHW7hCvg=; b=YeiMGDaBNu3cluQJYOc7+fmA3Dtn62vhpxEgvMEMjpePz4qaH2+3zZ8NeZvdSfCWOUSbCSQl294nwlxEWEEUHWmZq4gUkRB2T03Jz9f8WqIjqIkQb1hlghkkxyzdjZo9unDt9zhr0WLQcIeSa6BLF0b1RqrNU8jXKodjWbH4C90oKACsBsmSGpBGig/uu4LEvJhWJ5frVsa0tCVZm99JN7IeFo0cxoEWFdA8w+e6J8sGmPbcGrhMHoEvMsooRmMEQfFbToS3WYvEbb933ldHM+M4gJ/ei7NwpuZsHwhDtQSyvp1tDGE+WxhS3pSMFV90BdAiIs9b69m2XfiTPUMaFw== 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 MW4PR11MB5911.namprd11.prod.outlook.com (2603:10b6:303:16b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.15; Tue, 22 Nov 2022 05:41:24 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::ca2a:c3a1:b0cb:c003]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::ca2a:c3a1:b0cb:c003%9]) with mapi id 15.20.5834.015; Tue, 22 Nov 2022 05:41:24 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" , "softworkz@hotmail.com" Thread-Topic: [FFmpeg-devel] [PATCH v6 3/3] avcodec/qsvdec: Implement SEI parsing for QSV decoders Thread-Index: AQHY6Cbw3gWDNljL2Uyikyl9I8ywha5I1hQAgADd7ICAAOXNAA== Date: Tue, 22 Nov 2022 05:41:24 +0000 Message-ID: <2ab71bc98e637a5c2509dacc8918dfb9664dc2ab.camel@intel.com> References: <61626ebb78fcf603f58c31983fa5916c6ebeaafe.1666670616.git.ffmpegagent@gmail.com> <86cdc94085af9e858fb91de81d223efb175d7620.camel@intel.com> In-Reply-To: Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5515:EE_|MW4PR11MB5911:EE_ x-ms-office365-filtering-correlation-id: 06facbba-bf72-4ebf-afcc-08dacc4c3175 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JJ85F3vc7a2bK67mbMsSXYiKq6WEqCZu71db/Te/VhN6AF44oamz5fejSDh7U6srzPDjaAmhrPVjczGgRZr7CEohBYHY4OacFhvsTkQE37sMaPVqaGuA13XaPgpOoO34KGMOMOi2sM1VLWWh5IAUQCqPqbdg4cuNSeKqaPJJ9EomlvuL7vj+Wfl8ERtpmNm/vY+XSK8JJmF+0x4VtXsbIYlbk426L1GQkCSZq7sollEQGJFPBSwwO/Lc0ZZAKg5L1b8DjaZ77EWXmV7m70GvaXty39K8x65TOcoG+3d0hJ7qGRXcH3D3qN0qR2HncopYiUfM54ZAjdpGPFnJ3mTlncSW82WOoicBSacxlPJl9aEg3sIs+nN8Fy1VFUfKr7q/ynPk/A74HPAbWWpdr3Av+Wbjx+eYngEZ8/1Imfy1twkhhs9/br6ZpcpareiaZDHZEZZTsGyD0hnXA1Yg+nyR7T+xmtZUAjcrXgwTXEP51wSAFk5/rBG6dN2qiSzxclOY+HLigCnIfFccdiSqaLsA1d2RmdDuwmIerCwSAYJ7rb5EK28H5B/HYGtRX6X/uT9Ny/m+wxYwgyujvv1369ajkKWgq/WovdFJhzFFC5w0icT2XPZ/4u8a0sbnraRcREFlA5UljTuwfAaQxJNuvt3L1MyRuclH20Pxq1cNf+e+okHD0HIL2VCJB/q3MGdS9VQP0bxBVbsvWUg0A2jlKtejoR8U4eV3XxDzkbzgFbCFL9A= 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:(13230022)(366004)(346002)(136003)(396003)(39860400002)(376002)(451199015)(38100700002)(83380400001)(122000001)(38070700005)(86362001)(8676002)(8936002)(4001150100001)(82960400001)(2906002)(4326008)(41300700001)(66556008)(66446008)(316002)(30864003)(66476007)(5660300002)(53546011)(26005)(6506007)(71200400001)(6512007)(54906003)(66946007)(64756008)(2616005)(110136005)(91956017)(19627235002)(478600001)(45080400002)(186003)(76116006)(966005)(6486002)(36756003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bk5SWlJBclhERE54TFErL01yYW94emVaUXpiSTRjSmtBdEY3Z0FZN2Z0S1d3?= =?utf-8?B?aEJwdEZVeEcrampvNkFidEtLdDhqcVZHbXZENDdTVFBrWHJMRlFmSllIWjBp?= =?utf-8?B?T2Nkbi91WGNRT2J0MUUwT3VZZk1pb2hkS0JhNVdDOWNZTVdObk8yUTg0NHFO?= =?utf-8?B?eldZbno3SlpLWHJCOEVFYThlS1VvRCt5eUpLTGFLNE5YRWM0N2ZYTTQ3c0xm?= =?utf-8?B?RDBxMWlPOUpQZkxCTXQvdmNxSWZVVHo5YVd5MFdKVTBqbUZxckR1cFRkN1dX?= =?utf-8?B?M1JlUDJYcmU3VktGOEdGd1lKMEpFNzJtVFpNanYrUDlFdlBYRjNDKzQ4TmlN?= =?utf-8?B?Q2tGU2FUb0JpbFh5Q1VmS0dkdURkakx5ajc3UXdHNWxzWEtuaFl4NnJMamdq?= =?utf-8?B?M0FjQUNxNUhuU3YvMlphQUxsMnd2VXNlQzl0VGVVQkRzMFRDZVRjZi9GVkhV?= =?utf-8?B?eEFJRjI3YjZHTnozbjZ1dkZMSW15WFQzK2d2enFwNS9xZXNnWEhETFRTUGdM?= =?utf-8?B?N0RYTEM5ZXMzck9jN0RReHp3NXc3bC8zWjZROURRSmxLMjUrNDdGVFVteW9r?= =?utf-8?B?UFRicVdEd2RndlhKQnhyVms3U21JMGV6REREU1g0Mno4Q3FwakkvbXMrSlZD?= =?utf-8?B?SDFjU3c2b0xHcG5FSk1xVE5BSzFkT2R3Z1NyR1FvYm9sR245dmJZeXVqTHZI?= =?utf-8?B?MnkrRTRGbTZEQThrSU1zVmdLVllUazVpTUNSOEtjTFJxajM3eWhTVXBXcFNQ?= =?utf-8?B?N1V0VzlrTWhsUGV1dUJWM0R3QW42L1RUQmNIb1pNckpzUGw5TFE3bDlXRWtp?= =?utf-8?B?Qm0reUlFckFtKzlxKzdVNHkwYk94SHB4eDRxUDh3cUMwL3lsakNwSXg2SkMy?= =?utf-8?B?YUtHNkFDbytXc2cwYTlITnV3cWl4enhIczFHRU1DK0xZL2Flc0FGYkM3R3BY?= =?utf-8?B?Nzd0RkZQcUpmaGtHT0Z1Ly9LR0Nyeno4TVFXVDlMVSsvb29MNlpybXI3bWJa?= =?utf-8?B?NUdpcmYyc3FmZnF4YmxmVGMyL2lZVk4zSG1vajJWTnNMT21qZDFxWWtuK3I5?= =?utf-8?B?N1ZUYUhJeCtNWU9CYjZYRXpwMzczeUNOYzZSNHF1ZTFVYzEvdUFqVlNITkpS?= =?utf-8?B?VnVRMEVZbkl3bmcvUEpFSHZwWkRKNUdoTFNENndZZE83R1RRVGt4WDk0OGZE?= =?utf-8?B?cEx5bmxZYzB3MXg4NTMvWWthVWJ6dmpXRURialBuQ3E0Y2VjZnFiUTltY0NB?= =?utf-8?B?M0FYT0NLUFZmdWJIMkN3TTAxaWNkY3ZFTHpHYmpXYzAvd1QwN1oxR1p5Y2Yx?= =?utf-8?B?NnNuUWFPRGdvb0RmU2dIOTNhTmYwVVd6akJLWS9RZ0pSN0V4Z0sxRHlkL3Vj?= =?utf-8?B?ZlVGWlVwd2ZxUUhIQkh3SldEUUIwVGExMSt1WS9PYnZSbE4ydmUrdG5ubEZh?= =?utf-8?B?M2dwMFluemc4WmdjaXY1NksyWWFmQndndmZ6MEJUcnluS1ZnVDVWVWM5Y2NS?= =?utf-8?B?WlJVdGhhWXFwSjllN0ExVlVod2xGaFpFTGpPdFBscWtqaUtPcDhYQjlvaWZR?= =?utf-8?B?QXVGQUJGeWFWcjV3bklSeTlzejY3akpJekJJWEJMSkNKNFJud3IwNHVoRFRr?= =?utf-8?B?UURWLzJDd1A2ZUV1Vm9wUkUxNXJNWVJPaktYTENPK3BFRUpTTldIZlMvM1Fz?= =?utf-8?B?RXJ5a2IrMDBTWTJMa3V3djdvb04wQWo5SkZJUWE4eTZHZ21mN05FeGdhem5S?= =?utf-8?B?NWQvN09Qc2VUZHJuS3JhRlZlRzhjK1RBS0dOSjlKRlVEV2NSeUk2RUpmanVV?= =?utf-8?B?L2hWS3JJMjFFR0pXaFJONmgrbmx3RzZGelIyanA5UlRpVGpVcHY2NXNFYnlC?= =?utf-8?B?SE45Y05zam4yZG1YNTk5K1dIcnRkU2tUMjVyK3hWbGRQVUxSR0tyZlpGeWRq?= =?utf-8?B?Q25GbEV0WFovK3dpMUNMd0dEdGI3ZDFkWFVKbEFWWitJUXFQS3ZrYzJvR2Mw?= =?utf-8?B?d2syYjFkVHRRb3ZUWnd3NHR3OHVKcEtHWS9Nc3pYZEtJVDduSis4MzZCQndP?= =?utf-8?B?WDU0YXdTL1N5S1h0NHZRa2c1bmp5RllIWk1NbHEzaGtpdTJyTTJxeUlUNi9Y?= =?utf-8?B?cDlNeHdTZFQ4eUFpNWpmSlpGZjl4U3VFRVFBUk1DVTNNUFcxT29XUXpETUVj?= =?utf-8?B?cWc9PQ==?= Content-ID: <79853CEBFA3A3240BC767761801E96D2@namprd11.prod.outlook.com> 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: 06facbba-bf72-4ebf-afcc-08dacc4c3175 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Nov 2022 05:41:24.5568 (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: AEZyfjsB3Qg26y8P+tebISa6DKW2amRJCGFWRgSPIdDWLbEahyWgh1NR9gjzV79NhPdmo1MTDNsYBcP/FD9b5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB5911 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v6 3/3] avcodec/qsvdec: Implement SEI parsing for QSV decoders 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: "kierank@obe.tv" , "haihao.xiang-at-intel.com@ffmpeg.org" , "andreas.rheinhardt@outlook.com" 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-11-21 at 15:58 +0000, Soft Works wrote: > > -----Original Message----- > > From: Xiang, Haihao > > Sent: Monday, November 21, 2022 3:45 AM > > To: ffmpeg-devel@ffmpeg.org > > Cc: softworkz@hotmail.com; kierank@obe.tv; haihao.xiang-at- > > intel.com@ffmpeg.org; andreas.rheinhardt@outlook.com > > Subject: Re: [FFmpeg-devel] [PATCH v6 3/3] avcodec/qsvdec: Implement > > SEI parsing for QSV decoders > > > > On Tue, 2022-10-25 at 04:03 +0000, softworkz wrote: > > > From: softworkz > > > > > > Signed-off-by: softworkz > > > --- > > > libavcodec/Makefile | 2 +- > > > libavcodec/qsvdec.c | 321 > > ++++++++++++++++++++++++++++++++++++++++++++ > > > 2 files changed, 322 insertions(+), 1 deletion(-) > > > > > > diff --git a/libavcodec/Makefile b/libavcodec/Makefile > > > index 90c7f113a3..cbddbb0ace 100644 > > > --- a/libavcodec/Makefile > > > +++ b/libavcodec/Makefile > > > @@ -146,7 +146,7 @@ OBJS-$(CONFIG_MSS34DSP) += > > mss34dsp.o > > > OBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o > > > OBJS-$(CONFIG_QPELDSP) += qpeldsp.o > > > OBJS-$(CONFIG_QSV) += qsv.o > > > -OBJS-$(CONFIG_QSVDEC) += qsvdec.o > > > +OBJS-$(CONFIG_QSVDEC) += qsvdec.o h264_sei.o > > hevc_sei.o > > > OBJS-$(CONFIG_QSVENC) += qsvenc.o > > > OBJS-$(CONFIG_RANGECODER) += rangecoder.o > > > OBJS-$(CONFIG_RDFT) += rdft.o > > > diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c > > > index 73405b5747..467a248224 100644 > > > --- a/libavcodec/qsvdec.c > > > +++ b/libavcodec/qsvdec.c > > > @@ -41,6 +41,7 @@ > > > #include "libavutil/time.h" > > > #include "libavutil/imgutils.h" > > > #include "libavutil/film_grain_params.h" > > > +#include > > > > > > #include "avcodec.h" > > > #include "codec_internal.h" > > > @@ -49,6 +50,9 @@ > > > #include "hwconfig.h" > > > #include "qsv.h" > > > #include "qsv_internal.h" > > > +#include "h264_sei.h" > > > +#include "hevc_ps.h" > > > +#include "hevc_sei.h" > > > > > > #if QSV_ONEVPL > > > #include > > > @@ -66,6 +70,8 @@ static const AVRational mfx_tb = { 1, 90000 }; > > > AV_NOPTS_VALUE : pts_tb.num ? \ > > > av_rescale_q(mfx_pts, mfx_tb, pts_tb) : mfx_pts) > > > > > > +#define PAYLOAD_BUFFER_SIZE 65535 > > > + > > > typedef struct QSVAsyncFrame { > > > mfxSyncPoint *sync; > > > QSVFrame *frame; > > > @@ -107,6 +113,9 @@ typedef struct QSVContext { > > > > > > mfxExtBuffer **ext_buffers; > > > int nb_ext_buffers; > > > + > > > + mfxU8 payload_buffer[PAYLOAD_BUFFER_SIZE]; > > > + AVBufferRef *a53_buf_ref; > > > } QSVContext; > > > > > > static const AVCodecHWConfigInternal *const qsv_hw_configs[] = { > > > @@ -628,6 +637,299 @@ static int > > qsv_export_film_grain(AVCodecContext *avctx, > > > mfxExtAV1FilmGrainParam > > > } > > > #endif > > > > > > +static int find_start_offset(mfxU8 data[4]) > > > +{ > > > + if (data[0] == 0 && data[1] == 0 && data[2] == 1) > > > + return 3; > > > + > > > + if (data[0] == 0 && data[1] == 0 && data[2] == 0 && data[3] == > > 1) > > > + return 4; > > > + > > > + return 0; > > > +} > > > + > > > +static int parse_sei_h264(AVCodecContext* avctx, QSVContext* q, > > AVFrame* out) > > > +{ > > > + H264SEIContext sei = { 0 }; > > > + GetBitContext gb = { 0 }; > > > + mfxPayload payload = { 0, .Data = &q->payload_buffer[0], > > .BufSize = > > > sizeof(q->payload_buffer) - AV_INPUT_BUFFER_PADDING_SIZE }; > > > + mfxU64 ts; > > > + int ret; > > > + > > > + while (1) { > > > + int start; > > > + memset(payload.Data, 0, payload.BufSize); > > > + > > > + ret = MFXVideoDECODE_GetPayload(q->session, &ts, > > &payload); > > > + if (ret == MFX_ERR_NOT_ENOUGH_BUFFER) { > > > + av_log(avctx, AV_LOG_WARNING, "Warning: Insufficient > > buffer on > > > GetPayload(). Size: %"PRIu64" Needed: %d\n", sizeof(q- > > > payload_buffer), > > > payload.BufSize); > > > + return 0; > > > + } > > > + if (ret != MFX_ERR_NONE) > > > + return ret; > > > + > > > + if (payload.NumBit == 0 || payload.NumBit >= > > payload.BufSize * 8) > > > + break; > > > + > > > + start = find_start_offset(payload.Data); > > > + > > > + switch (payload.Type) { > > > + case SEI_TYPE_BUFFERING_PERIOD: > > > + case SEI_TYPE_PIC_TIMING: > > > + continue; > > > + } > > > + > > > + if (init_get_bits(&gb, &payload.Data[start], > > payload.NumBit - start * > > > 8) < 0) > > > + av_log(avctx, AV_LOG_ERROR, "Error initializing > > bitstream reader > > > SEI type: %d Numbits %d error: %d\n", payload.Type, > > payload.NumBit, ret); > > > + else { > > > + ret = ff_h264_sei_decode(&sei, &gb, NULL, avctx); > > > + > > > + if (ret < 0) > > > + av_log(avctx, AV_LOG_WARNING, "Failed to parse SEI > > type: > > > %d Numbits %d error: %d\n", payload.Type, payload.NumBit, ret); > > > + else > > > + av_log(avctx, AV_LOG_DEBUG, "mfxPayload Type: %d > > Numbits > > > %d\n", payload.Type, payload.NumBit); > > > + } > > > + } > > > + > > > + if (out) > > > + return ff_h264_set_sei_to_frame(avctx, &sei, out, NULL, > > 0); > > > + > > > + return 0; > > > +} > > > + > > > +static int parse_sei_hevc(AVCodecContext* avctx, QSVContext* q, > > QSVFrame* > > > out) > > > +{ > > > + HEVCSEI sei = { 0 }; > > > + HEVCParamSets ps = { 0 }; > > > + GetBitContext gb = { 0 }; > > > + mfxPayload payload = { 0, .Data = &q->payload_buffer[0], > > .BufSize = > > > sizeof(q->payload_buffer) - AV_INPUT_BUFFER_PADDING_SIZE }; > > > + mfxFrameSurface1 *surface = &out->surface; > > > + mfxU64 ts; > > > + int ret, has_logged = 0; > > > + > > > + while (1) { > > > + int start; > > > + memset(payload.Data, 0, payload.BufSize); > > > + > > > + ret = MFXVideoDECODE_GetPayload(q->session, &ts, > > &payload); > > > + if (ret == MFX_ERR_NOT_ENOUGH_BUFFER) { > > > + av_log(avctx, AV_LOG_WARNING, "Warning: Insufficient > > buffer on > > > GetPayload(). Size: %"PRIu64" Needed: %d\n", sizeof(q- > > > payload_buffer), > > > payload.BufSize); > > > + return 0; > > > + } > > > + if (ret != MFX_ERR_NONE) > > > + return ret; > > > + > > > + if (payload.NumBit == 0 || payload.NumBit >= > > payload.BufSize * 8) > > > + break; > > > + > > > + if (!has_logged) { > > > + has_logged = 1; > > > + av_log(avctx, AV_LOG_VERBOSE, "----------------------- > > --------- > > > ---------\n"); > > > + av_log(avctx, AV_LOG_VERBOSE, "Start reading SEI - > > payload > > > timestamp: %llu - surface timestamp: %llu\n", ts, surface- > > > Data.TimeStamp); > > > + } > > > + > > > + if (ts != surface->Data.TimeStamp) { > > > + av_log(avctx, AV_LOG_WARNING, "GetPayload timestamp > > (%llu) does > > > not match surface timestamp: (%llu)\n", ts, surface- > > > Data.TimeStamp); > > > + } > > > + > > > + start = find_start_offset(payload.Data); > > > + > > > + av_log(avctx, AV_LOG_VERBOSE, "parsing SEI type: %3d > > Numbits > > > %3d Start: %d\n", payload.Type, payload.NumBit, start); > > > + > > > + switch (payload.Type) { > > > + case SEI_TYPE_BUFFERING_PERIOD: > > > + case SEI_TYPE_PIC_TIMING: > > > + continue; > > > + case SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME: > > > + // There seems to be a bug in MSDK > > > + payload.NumBit -= 8; > > > + > > > + break; > > > + case SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO: > > > + // There seems to be a bug in MSDK > > > + payload.NumBit = 48; > > > + > > > + break; > > > + case SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35: > > > + // There seems to be a bug in MSDK > > > + if (payload.NumBit == 552) > > > + payload.NumBit = 528; > > > + break; > > > + } > > > + > > > + if (init_get_bits(&gb, &payload.Data[start], > > payload.NumBit - start * > > > 8) < 0) > > > + av_log(avctx, AV_LOG_ERROR, "Error initializing > > bitstream reader > > > SEI type: %d Numbits %d error: %d\n", payload.Type, > > payload.NumBit, ret); > > > + else { > > > + ret = ff_hevc_decode_nal_sei(&gb, avctx, &sei, &ps, > > > HEVC_NAL_SEI_PREFIX); > > > + > > > + if (ret < 0) > > > + av_log(avctx, AV_LOG_WARNING, "Failed to parse SEI > > type: > > > %d Numbits %d error: %d\n", payload.Type, payload.NumBit, ret); > > > + else > > > + av_log(avctx, AV_LOG_DEBUG, "mfxPayload Type: %d > > Numbits > > > %d\n", payload.Type, payload.NumBit); > > > + } > > > + } > > > + > > > + if (has_logged) { > > > + av_log(avctx, AV_LOG_VERBOSE, "End reading SEI\n"); > > > + } > > > + > > > + if (out && out->frame) > > > + return ff_hevc_set_sei_to_frame(avctx, &sei, out->frame, > > avctx- > > > > framerate, 0, &ps.sps->vui, ps.sps->bit_depth, ps.sps- > > > bit_depth_chroma); > > > > I got segfault when trying your patchset, > > > > Thread 1 "ffmpeg" received signal SIGSEGV, Segmentation fault. > > 0x00007ffff67c0497 in parse_sei_hevc > > (avctx=avctx@entry=0x5555555e4280, q=q@entry=0x555555625288, > > out=out@entry=0x5555559b6f80) at libavcodec/qsvdec.c:777 > > 777 return ff_hevc_set_sei_to_frame(avctx, &sei, out- > > > frame, avctx->framerate, 0, &ps.sps->vui, ps.sps->bit_depth, ps.sps- > > > bit_depth_chroma); > > (gdb) bt > > #0 0x00007ffff67c0497 in parse_sei_hevc > > (avctx=avctx@entry=0x5555555e4280, q=q@entry=0x555555625288, > > out=out@entry=0x5555559b6f80) at libavcodec/qsvdec.c:777 > > #1 0x00007ffff67c1afe in qsv_decode > > (avctx=avctx@entry=0x5555555e4280, q=q@entry=0x555555625288, > > frame=frame@entry=0x5555556df740, > > got_frame=got_frame@entry=0x7fffffffd6bc, > > avpkt=avpkt@entry=0x555555635398) at libavcodec/qsvdec.c:1020 > > BTW the SDK provides support for hevc HDR metadata, we needn't parse > > SEI payload > > in qsvdec and may get the corresponding info from the SDK, see > > https://ffmpeg.org/pipermail/ffmpeg-devel/2022-November/304142.html > > I know. I was the one who had requested this to be added to MSDK :-) > > But it's just one small part of SEI information, it's limited to > the latest MSDK versions and I'm not sure whether it's working > as reliably as this implementation. This would need to be tested. > > You should still have access to the repo with the test files for > demoing the offset problems (which my patchset is working around). I worked out a patchset (https://github.com/intel-media-ci/ffmpeg/pull/518), including https://ffmpeg.org/pipermail/ffmpeg-devel/2022-November/304142.html an d others. I may use your command (with some changes) to convert all HDR clips in your repo to SDR clips except one clip (w/wo my changes, there is a GPU hang issue with this clip). We may only do a small update to support AV1 HDR in the future if applying https://ffmpeg.org/pipermail/ffmpeg-devel/2022-November/304142.html. Note the command below doesn't work with all test files in your repo with your patchset v6. $ ffmpeg -hwaccel qsv -c:v hevc_qsv -i input.mp4 -f null - Thanks Haihao > > But it's also about dynamic HDR data, dovi data, etc. - which > MSDK doesn't provide, so this single bit of SEI data doesn't > help much. > > Best regards, > softworkz > > > _______________________________________________ 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".