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 0B8AD4333A for ; Wed, 1 Jun 2022 17:20:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1AC1F68B6FE; Wed, 1 Jun 2022 20:20:39 +0300 (EEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D751E68B677 for ; Wed, 1 Jun 2022 20: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=1654104037; x=1685640037; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=pAEZZLTZ9LdMKMSDuPSVlZxzq3cYkU6GBpf/25mRyfU=; b=ShcBnu6dp+PP1OoPonXTSFuBrAxrSf9UxpCTIvClq8oDve5Exo5Y7iD7 LGxEf6fqFhEW1ITUub5FjjMx+dKOKeTcvsmJBeYiuR5IoJLNYqnGsYRqM e57Byer8vpnu+FlDFb6zklFURrq/RGqdTqSUK4BQFgcTUXIrXCySwJ2l2 CxDY4IwPqob19T2TSGgaioo1RZM/UfCNYYbZqE/ugvR/1OGiqwK9x9H7e nxRWceaXkt3hh8vC/nZlmJgDS/Vz3GSExvO9iLad9ZUDMqIhZ/JqwFJUi TQMiv4IC+K8A+/4k68qEG0BzzLUJwERhIgaRatQL2Q7QDdipGc2QgI9j6 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10365"; a="301020794" X-IronPort-AV: E=Sophos;i="5.91,269,1647327600"; d="scan'208";a="301020794" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2022 10:20:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,269,1647327600"; d="scan'208";a="530162118" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga003.jf.intel.com with ESMTP; 01 Jun 2022 10:20:23 -0700 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Wed, 1 Jun 2022 10:20:23 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx605.amr.corp.intel.com (10.22.229.18) 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, 1 Jun 2022 10:20:23 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.177) 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, 1 Jun 2022 10:20:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mT1Ghxe7Ln5vpo5SjKcpYYx6uBW5azE9XYP32g4khuv7221AUEMa0Qb+Qy0d0/BuiFCfHns4uMOkjSiMDmb5+1ibjnTAqPB5t5p27Mi4/YmyV+m0xjoy4R/sBHbKmETUbN6Lzpa6lgnMZxv0AmIX7l8Slj4tkuZ4LKXaV9SjgGhYYsQ11ydTrnui4V5zP9wsDPGfmi+GaXp6YfRg30OOBt2+gb4qhG7Y0V57xRdFafu3eE/o01cgTY3Z1SPQ2T2jZ6qXDfh6nUImvLYAbHvTEZo0KzxCZKNPwqE1/K6/BvMXqKpA5/ujl/Rd6jfLOFjLeUNqYp2D4I8NUB3yIkNvHA== 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=pAEZZLTZ9LdMKMSDuPSVlZxzq3cYkU6GBpf/25mRyfU=; b=OIPU8h8rEbOw++bpuMmgpAwt3pHbKWrnlReI4ksiV0u4TZ0IYlRi8ShoW+3MEE117wXYfXqDRaIRheGSdFaMmhkKWv1iqurLUqTAEZQmmsGU1ktVfSuUnuk0awloNmDEZIA2vdQpPZsJducjc+6Kueh7NDzx7MldA1vK21FXjl3btEGS+TBf05vgg7vS+bQnbuudYCOvWNo10ZCPbpGM+HVl/aLS8gEvjnmg4u802ru5GpdMnpot1Snp3JKiibYNxj3snMdEYwbZhq1fpjFh4iF5IZ+r9knxHB96UI3sYURiQqlQnyHytbZhzTaf1KEoanDN4+B52dXuqDXb1G3/Jw== 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 CY5PR11MB6317.namprd11.prod.outlook.com (2603:10b6:930:3f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Wed, 1 Jun 2022 17:20:22 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::2d06:ec38:937a:da73]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::2d06:ec38:937a:da73%6]) with mapi id 15.20.5314.013; Wed, 1 Jun 2022 17:20:21 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH v2 6/6] avcodec/qsvdec: Implement SEI parsing for QSV decoders Thread-Index: AQHYdZcDZ7rccjx9YEOzdebSEV2w2q06zI8A Date: Wed, 1 Jun 2022 17:20:21 +0000 Message-ID: References: <23de6d2774741423dbd981b33afa67975d28749e.1654074366.git.ffmpegagent@gmail.com> In-Reply-To: <23de6d2774741423dbd981b33afa67975d28749e.1654074366.git.ffmpegagent@gmail.com> 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: b44cc4ab-3dbc-40a4-45e3-08da43f3022f x-ms-traffictypediagnostic: CY5PR11MB6317: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: GkBm/jNoGjqcNxJHyYS0KYLL3B5QsGKiiqbIy4ULbWSTiAiMXElXr7Yy9iizRsgKuNqefugBXmn4I6DObpftOPFlzoVbCnVJJXyjocKs26EopA6437Oiv0rjHCYAew6SX7JqFwheQV/JQiNpTx2nuSKxJbRw9e4SmOpWofnaALjCh3X74zM4ReZ2C40ld1XFHX4g9syfNRY90xvWO63purOByDuqwye0IBaKxaDIOoJe7oTUsZZ560/ZlJNdSyCn265S5nO1cEUJ7wm14k72h0V8pAqHsUtxTbN1+2+t0zZpYynx3vEdMdRSEFt2qukDCH4xo9z2V4DITsX98JoRLJdHGj4QjiMwwjcAcXp3RfI3ZyOYF0w41FMLlKX0s+GTTKwBRsPnR68/Ld9FWmq8i1MzBrLwxini4jZrROMVZFNibzWl5NbV3Z/DQZ+5tcrlHuhdFpMOPwdETy/5FTk1GHHDG3Nc5ASfdQv1bqWWe9+qqTUcUiIgRTMUYduemB81DjgWPJGcCf3At5++wkqn1UgrTvWI0EtS0lO6w7ozF3s5XPIgnLQznVMiPayHfgFFR55F/Hll7bIZTTkh4ceE51fEKIRzAthBUXtdEi3Wuf5xkhOTNcv7n8U0Tf17LDvIxU7X/oeMiQ5/YTLefgNMRW6VqGPvaaHTvsjiB+LUNvVPy/kR+swJ2SqGgFKDGUhyzFK+axotBB1zmRuuEV5sXHkIUQqSEDsc8pQt0Y/aP28= 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:(13230001)(366004)(6506007)(6512007)(26005)(66476007)(36756003)(2906002)(71200400001)(6486002)(83380400001)(86362001)(8676002)(91956017)(5660300002)(76116006)(316002)(66946007)(66556008)(66446008)(122000001)(6916009)(64756008)(38100700002)(82960400001)(4326008)(186003)(8936002)(508600001)(2616005)(38070700005)(54906003)(99106002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bEVqSkZrNkNYSXRVajhMWDRTTHRRa0tIS1VVeEMwU0NseWNwZVIxc1djTGpM?= =?utf-8?B?OVpIWEhFczU2N01VZzlKZXgzN3I5Zkt6eDRNREtMeFFRYlZnSWFlbDFnNVdV?= =?utf-8?B?bzl1cFBhRE9LSnUvRlBQR05XdE1lM25qSWsvSzM4YVZsVWF3TzRnYk5jK1V1?= =?utf-8?B?dm8vUkxidzBlWUV1bXd5LzgyNkxxb01qcHY4M29LcFBLTDREek5aQ3N4YW1U?= =?utf-8?B?ZHg1M2hoUHdOYnRJUUFoY2s0VGUwSVpJaXcrU1luYllPUXQzcEVhazN6eVRN?= =?utf-8?B?U3M0bTFBTi8wZ1FTblB6SXZoSjBhbGZFeXQzUHNzb3lhOTlHN1Y3ZU8wdDdK?= =?utf-8?B?SUg3VEJMaHdSeEFmSEZXZTJsek55T2o0cVQyM2d6OEZUazRkK243cE5sNVVH?= =?utf-8?B?bEY1ZG9Nc0R5SE8xemQyTFdYaGlRZWtFMm14amJBc1FoamRPSkRCOVl2VlNO?= =?utf-8?B?K1hmOVdLY1NtVDArSFNVRGJ4ay9PV2NMSEp2RFlzNmxqZng1WHErdkNKQ294?= =?utf-8?B?d3FZWEhYYUlRQzJtYkVYRXZreno4RWNjMzBFZVljTE1qVFdVSnowbklyNHEz?= =?utf-8?B?Q3Q3YzBlRDdlbG5Uekhsais0L1Q3NjRFUC9aOUdZZ0hINHZMRWFxNml5eTJX?= =?utf-8?B?WXdpVXJIa05lUXVYQ2tEZjl0eHh0aU5KR0FmL2Y5ZVNoWXhUYWRvWHdVaU5Q?= =?utf-8?B?S1VRL2ZZZDljdVYzODNiRGtqeDlQZmhmWHpienNOelFZV01FQWNRMEFVbUQ4?= =?utf-8?B?Rmk1L0hJeUNQN2ZoSXkyVVI2Syt4eEVlbHZrUTlPeFpZblUzQlQ0MTdYZ28r?= =?utf-8?B?cWtlbUdZR1NVdjZLNmcwSGpzOHB6UFhMZU9ZSEtVc3lxYlBLcTkrM3BVMzN6?= =?utf-8?B?Vzl3d2NCSzJJTWdncFNraVVZNjhFbERkSlZ5b2lmTmdGVEdtbE55SytlcVpM?= =?utf-8?B?MVZIaUQvYk5mK3lnVHdpSUVDSW9EYWIxNEhvQytVRndvWjBLcWk5SVIyOCsz?= =?utf-8?B?MmpMdGRRQkpHcStETndZcWVGajRzdkJ5VmFCODFrNm9TS1BKbEFQYkRVY0Yw?= =?utf-8?B?aVhCaGE2Q0NtUTBHWVBqVGlOM1Z5dGFYZHR5ZzM4dm5LeVFCZ1F4bmZDV2Qx?= =?utf-8?B?QTVhK0lGZGM2VU1ZQ1hFZkdpdWRNM0UzaTh4TW8rZXhGYmZuVEd0RHpJdDVV?= =?utf-8?B?YnEzSFgxYXFXNjJOcmtNcHpNbTZEck1KM0Z4MDhCdk5aMjROakxPUTlMYTdw?= =?utf-8?B?bjZZVDh2Z3dDM1FENzBQNjYvbnZWa0RlSWphY1NDU2NHQ0tJRE43WDdGQTI2?= =?utf-8?B?UXBFVGRVNGRjckJXL0dTU2dhaWdZRUhiUmtjNkYvOTRyWnhoOElaTmhFNGc4?= =?utf-8?B?N0thanc0SnNDL2Z2N2kvZzUwbjlSM3EwdVZzU1NCTXNlSjhVZUE3WU10NXFh?= =?utf-8?B?c2FESHJWTHpaVzBsdFBRRGVJM1l3d0svaERmME1mNWg4TEFaMzlOcW1aNk91?= =?utf-8?B?UjJ1YWFTMVdIR1haVnZlQ2hqdVBrOVZtcDBST0g0TUdBb2FqaVJyR1ZEMldN?= =?utf-8?B?clFCYWdqckV0TzBlVTFpVXl5UUlNTmIwdW1MVXhhTGMxK2ZOV3lwTjRTWUlk?= =?utf-8?B?RUVsR1E0bVhvaS85TEw4Q2FsL0wvK2dsWTlsRDhOa2ZZT3FWczJ6eDhSV2NI?= =?utf-8?B?bklKS0VBenA5YWt6RkJqazV3dUo5Z2I0OWRRZmJrd011aFdkREhUQ2xhSTVW?= =?utf-8?B?ZjdMcGh0cGJCNDNBeUVCOEdWME1LdktIb0E4VGxPQ1ZMQnJFNUk1VDI1bjZ1?= =?utf-8?B?a0ozS1VHVUJUZ2h5dS95dFZ5QTF0OVdteG1kVGlINzlhaFIwVDlIaU0xQXlT?= =?utf-8?B?Q1dBWXVGako3RW9rSzllcEp0TzhRaE5DRFc4VEtTdnU1WlB4Z1VSMFVTVDl6?= =?utf-8?B?eGxmbFM5bnJDZFpHMDBaMlJDSDM1Uk1iVWNHTFVIVmgxSjExMHgwb2tndjhh?= =?utf-8?B?Vll4ZWJSNnNCOGIrQTRraEFnR2h5WWxpdVVCY0NvTkdGcnVOSGhnOGNPWTM5?= =?utf-8?B?QVhvN2xLWldENDgwWU5Cb2tSeHFGL091aHE1ZG5pZnpFdGNCNC9MQXMvSHg1?= =?utf-8?B?bHhiY1FaRnRiU2t0TGtmakN1MWQxYUVQQ0F0bmluUFJzbVZVL3ZrY09rRXdq?= =?utf-8?B?ZjRSd3FlYXNIQldiQ3pqN0hwME04cEpjVUNydk9ISVU0MmpkQjZjQ3VhZ0JC?= =?utf-8?B?V2owTUR3YmNoZDdoKzBFTE5qcm1FZjNtYXNTeUZXUFc1TGpVTGFQNmh0VkU1?= =?utf-8?B?SnlaMk1uZGEzYWp3aVZaYmZNYU1uMEpaSExkK0VORTFjTzFpb3lCd1hYMzRL?= =?utf-8?Q?sFjI+BMgJm0kLZ0Q=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: b44cc4ab-3dbc-40a4-45e3-08da43f3022f X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2022 17:20:21.8800 (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: iU/NuIHUzdJUbjhoXYxf3HXN7m6umd4UXYqHA6LnPED5s76keJVA/ldxA+wYIhIveZnsyyX7vzin3YFcSNHz3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR11MB6317 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v2 6/6] 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: "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 Wed, 2022-06-01 at 09:06 +0000, softworkz wrote: > From: softworkz > > Signed-off-by: softworkz > --- > libavcodec/qsvdec.c | 234 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 234 insertions(+) > > diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c > index 5fc5bed4c8..3fc5dc3f20 100644 > --- a/libavcodec/qsvdec.c > +++ b/libavcodec/qsvdec.c > @@ -49,6 +49,12 @@ > #include "hwconfig.h" > #include "qsv.h" > #include "qsv_internal.h" > +#include "h264dec.h" > +#include "h264_sei.h" > +#include "hevcdec.h" > +#include "hevc_ps.h" > +#include "hevc_sei.h" > +#include "mpeg12.h" > > [...] > + > +static int parse_sei_hevc(AVCodecContext* avctx, QSVContext* q, QSVFrame* > out) > +{ > + HEVCSEI sei = { 0 }; > + HEVCParamSets ps = { 0 }; ps is not used. > + GetBitContext gb = { 0 }; > + mfxPayload payload = { 0, .Data = &q->payload_buffer[0], .BufSize = > sizeof(q->payload_buffer) }; > + 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_h264_sei_decode(&sei, &gb, NULL, avctx); The type of &sei is HEVCSEI *, however the type of the first argument of ff_h264_sei_decode() is H264SEIContext *. ff_h264_sei_decode() can't be used to parse hevc sei. BRs Haihao > + > + 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_side_data(avctx, &sei, NULL, out->frame); > + > + return 0; > +} > + > +static int parse_sei_mpeg12(AVCodecContext* avctx, QSVContext* q, AVFrame* > out) > +{ > + Mpeg1Context *mpeg_ctx = &q->mpeg_ctx; > + mfxPayload payload = { 0, .Data = &q->payload_buffer[0], .BufSize = > sizeof(q->payload_buffer) }; > + 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); > + > + start++; > + > + ff_mpeg_decode_user_data(avctx, mpeg_ctx, &payload.Data[start], > (int)((payload.NumBit + 7) / 8) - start); > + > + av_log(avctx, AV_LOG_DEBUG, "mfxPayload Type: %d Numbits %d start %d > -> %.s\n", payload.Type, payload.NumBit, start, (char > *)(&payload.Data[start])); > + } > + > + if (!out) > + return 0; > + > + if (mpeg_ctx->a53_buf_ref) { > + > + AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, > AV_FRAME_DATA_A53_CC, mpeg_ctx->a53_buf_ref); > + if (!sd) > + av_buffer_unref(&mpeg_ctx->a53_buf_ref); > + mpeg_ctx->a53_buf_ref = NULL; > + } > + > + if (mpeg_ctx->has_stereo3d) { > + AVStereo3D *stereo = av_stereo3d_create_side_data(out); > + if (!stereo) > + return AVERROR(ENOMEM); > + > + *stereo = mpeg_ctx->stereo3d; > + mpeg_ctx->has_stereo3d = 0; > + } > + > + if (mpeg_ctx->has_afd) { > + AVFrameSideData *sd = av_frame_new_side_data(out, AV_FRAME_DATA_AFD, > 1); > + if (!sd) > + return AVERROR(ENOMEM); > + > + *sd->data = mpeg_ctx->afd; > + mpeg_ctx->has_afd = 0; > + } > + > + return 0; > +} > > static int qsv_decode(AVCodecContext *avctx, QSVContext *q, > AVFrame *frame, int *got_frame, > @@ -636,6 +851,8 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext > *q, > insurf, &outsurf, sync); > if (ret == MFX_WRN_DEVICE_BUSY) > av_usleep(500); > + else if (avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO) > + parse_sei_mpeg12(avctx, q, NULL); > > } while (ret == MFX_WRN_DEVICE_BUSY || ret == MFX_ERR_MORE_SURFACE); > > @@ -677,6 +894,23 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext > *q, > return AVERROR_BUG; > } > > + switch (avctx->codec_id) { > + case AV_CODEC_ID_MPEG2VIDEO: > + ret = parse_sei_mpeg12(avctx, q, out_frame->frame); > + break; > + case AV_CODEC_ID_H264: > + ret = parse_sei_h264(avctx, q, out_frame->frame); > + break; > + case AV_CODEC_ID_HEVC: > + ret = parse_sei_hevc(avctx, q, out_frame); > + break; > + default: > + ret = 0; > + } > + > + if (ret < 0) > + av_log(avctx, AV_LOG_ERROR, "Error parsing SEI data: %d\n", ret); > + > out_frame->queued += 1; > > aframe = (QSVAsyncFrame){ sync, out_frame }; _______________________________________________ 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".