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 2E3C6427E1 for ; Tue, 31 May 2022 09:40:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9044868B64F; Tue, 31 May 2022 12:40:52 +0300 (EEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7E3AD68B4B3 for ; Tue, 31 May 2022 12:40:45 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653990050; x=1685526050; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=nbJMgLDNeeLTfHtCGN9bAcFGzq/42HL7K9ug+4jCiHU=; b=Ri4BnTdkM1Q7R/ir+MHLVCjlOax7pafWLRs+4Jv1Hp+3uvUySIbUA60M mOn51ciMvoE/EMzp2tZWAUGjl9b0CfT9R5jWJM058qCc15EOX8/wtucsR n0FdVxGYf3FIDCHCUyYvmsaGnPUmF93Wrv53LDPVtpYcKelUq7cUicD3x qXm6PIrLUdPLkrL6C7IymvgPMfbQMiSt4r0TWvRXePu3uoGJ09BIZ/65T QiljpLSr7fqgSkV+w9kiFsx7Lw8MJ4ac1UdcDR+MGM5P7cy0ZwjnVnIUJ hxqTliaTydSOqtnsxqfY8A3/PGEKTBm93kKKjBg55iCH2yIc1JVGc854C A==; X-IronPort-AV: E=McAfee;i="6400,9594,10363"; a="274008573" X-IronPort-AV: E=Sophos;i="5.91,264,1647327600"; d="scan'208";a="274008573" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2022 02:40:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,264,1647327600"; d="scan'208";a="576325072" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga007.jf.intel.com with ESMTP; 31 May 2022 02:40:43 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 31 May 2022 02:40:43 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 31 May 2022 02:40:42 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 31 May 2022 02:40:42 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.43) 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; Tue, 31 May 2022 02:40:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FmX8EP975bImD4R0PT8wzZsKujV9esRGudm8CwUhT1j+UHbM9nfDHV5Md8rPhNa8ffaPfmxTV5vm6UA7wGPZrgnL6P3J0E+0yQo/Ie47iJ94sRUeMcAFLcr9z7JekYfxmYnxdAFg21Wc1t7b1fAJKhyfgohhpB/VTKXUIJyJgj/KeF7PJFvg3k8cbtatQz+dyTBf9lr1GJkE1L9t+zhsRxq0gdFEVRa0TUYmzrjQYWTLzPeM+EB9O5Ee5JPkcoRLR95opXHwxHAJ3uXoo0dyf6LwJ/ivhEqUDvsooIBS2pqvbc6F/9IpgFOS3v9Di2K5fHj9aA/AvBPGxJQhjdoIlw== 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=nbJMgLDNeeLTfHtCGN9bAcFGzq/42HL7K9ug+4jCiHU=; b=M8KKH0oVGCYS+FqCjMeUO5fWP1ecYEg5CAo4R/srZakvsY14V4EMQIzBezIuYjYBiT+3yQ5skZ4ErKm2UQSvE/bGWTpE/hXDUQ7Kt9OZ1s0CYPAzI3vgmdFlfBGG2kbKRq6GfDx4XOZL/96jsuVVQh2aEl59LtCVTrLawPnbJdsphWEmf2XWnaYVe6Hr7snZtdWyzIs/cD0u4aZIzXfD8h7/dMfsovB28P6wEgDtjkfSaV1uqcQzYkrd/1XqD/KmurOQid5rmuNrpotGhwskrgwGR5u1FtJxnugZMLZ5hD/OWiGuKfxtCeqh8UiXPZWwH8AT3iQFt52qiVQiHovF9w== 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 PH0PR11MB4952.namprd11.prod.outlook.com (2603:10b6:510:40::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Tue, 31 May 2022 09:40:40 +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.5293.019; Tue, 31 May 2022 09:40:40 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH 4/6] avcodec/hevcdec: make set_side_data() accessible Thread-Index: AQHYcNgBZVGab44/H0WnIHrwRGEqX604w0gA Date: Tue, 31 May 2022 09:40:40 +0000 Message-ID: <9f064489202bab1329400b5973b0e684e3e5efbd.camel@intel.com> References: <485d7f913d6e2d600ccb9dc0f81e6eaf498804d4.1653552529.git.ffmpegagent@gmail.com> In-Reply-To: <485d7f913d6e2d600ccb9dc0f81e6eaf498804d4.1653552529.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: b421473a-af4c-4de9-3b83-08da42e99fc0 x-ms-traffictypediagnostic: PH0PR11MB4952: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: vJaoJ/Xn9ukPBaIDkgrhOzwv2CEkdW1I7Sm26f1/B7i/kavtqNmoKhHtfk+uODOZ91/j54gDcGl2Db/XdcmNFm19aQDE5G3F/mb07hZBgicdufLMI0AKIzPieUhF3E3Buv4+Gti+E1oad63s7SkQU3DJlPdbuUaGy4EN/O1NNv01X0zmud23cdayQG35vo35PzSiT/82lmk4P0/pXjYMRlD9EtgSZQrYS6uHVuCzPQww33tO1jImDLjmMgMn6sip4k+s2e1F0bgJiAP2Cn5SwlbmHGT60NJMDQd9qPo7ay4jPZfzoAWxIkwvm6IoYeCa5ZDmcRqBIlt6b3N5HOybzcv1M8trXK26wLBu4zh05T3SoiEvoViY69Aw6gLxeA045VYAUuxF3Us2e7F1OpHiarSKCXZUM19zRdy+Uwo8Qu/oGxH52jpXnF39I8rvOxGvu8XE3mgKH8G3M1Kqd/d4Nv0LNCDoiB4l6OgrUgzUs9JOs2EVuQawtFGdoiW83Szu9nzV4a7hJ7/bDdjo/fJ9qKDwolZAE7J28j/xj4Fn30MqcZXMY5lhHlhq+A6oit4TlG+joR5iFi3LVEdMZEAEyqPr+SHsgu85rKSIhCMYD9WDK2gHUQwi+FkWJDRnBG2jiSgEqXRYVappjju6p9W2H40B7OH32kZ3Zy3PKB7xa08mlIqHqCc5YPlszbrop+8XXBOIovi+7ze8uKkS0lO3EtyHhIgru0XNABX0Iiz6tt/sD+Ls1LU+L+qdAGX3vUsT++cGjfyNXYPIN9axju9H3A== 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)(66446008)(64756008)(66476007)(36756003)(508600001)(66946007)(66556008)(186003)(76116006)(91956017)(83380400001)(122000001)(4326008)(38070700005)(2616005)(86362001)(2906002)(38100700002)(82960400001)(6506007)(26005)(6512007)(71200400001)(5660300002)(8936002)(30864003)(6486002)(6916009)(316002)(8676002)(99106002)(309714004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VEgvNWs2RzNnTHUzWHhhZndOSGk3Z1JsVWJ3UVhENUxrQnNHL2JYNzNseG42?= =?utf-8?B?MXNKZGh5dldLbFljSTJrZXRpNGtucy9wakR3dnZZUHUzdFI5dHhFWHMvVnJs?= =?utf-8?B?eTB6Vk5zTEVScm5GTlkrMXVHTEdWaDlVRWg3V3d4TG5zaFc5RUREakxSMDM0?= =?utf-8?B?SzFKLy8wL1dHYXBQK3NpemUvU0dPUzhiMUY1L0hwSUdFb2gxeFJMNlJZUlhC?= =?utf-8?B?ejhFQjlPUDBSZk5MbU1wTmhEZlVOR1VRYXExcGN4TThKTXVKaWZBcHFvdlNa?= =?utf-8?B?UWUra2htdmdUY08zZ0g4YmoxeUJ0cER2ZDcveXVUTkZuY1ZGTm1mT1NLTnJ3?= =?utf-8?B?cXBGR0s3OUxMMVhLVHBwcFR3VHE3OTRmemp1VG1BZ25HdE5ESytVMzEwTWNE?= =?utf-8?B?TFFFd0tTRmV0bldiTU1Md1dYV2dUN1hIOXNBblhlSXl2a1RsZVdDOVFZcExk?= =?utf-8?B?b1EveUtQaEcvVFUvb0VYQk5mcUd0VG03OC9OQ2ZpMEZnbFhJVkxzcXI0emZn?= =?utf-8?B?QUxFbWk5cElYMi90dklpa0EwdDVJbU9memFQYTc0bWk4dURrSEF0dFpTRjlZ?= =?utf-8?B?SFFuTVcrNzBrTnV0bjJ5WHo3eERhTFpkWFBBQ1pYZm1jR3JkbEQ0VEk5WENP?= =?utf-8?B?STRGc2lIOTFQUFVGZUttTlcycHhlbDdNRExZU0hlN1crRGFpSHJDWTlaVG9t?= =?utf-8?B?czQ2MjhKMHV3Y1ExZSsrRDM4WTF6OEdUOXIwNmNNdnBmbTk4cUFoWHhsZ0Fy?= =?utf-8?B?TXQ5MzNhNGV5MCs2aHo0SW5RZ1VMeEEyZnNDOHBnWktSM2EvZGlKWThhajZI?= =?utf-8?B?dTd0NzAxK2tHWjhndHVRM0p5ektYTkY4MmNodXEyWWMzN1NwUnFYdzRKa0JQ?= =?utf-8?B?NjZzZjVlNmlOenNmYjYybHNaS2NMVUdyMFI1bDExVzJqNFQ4ZllYaVEzUUhO?= =?utf-8?B?dWxlYWFKc3VCRnJ5bjFMMXZ1ZmxjMWZCUXNxTmVXdVhCdGVUTE54TjRjd3Zs?= =?utf-8?B?Y2tNbzJ5VXZ0RGV1ZEw1blJ2eGJjbXBGZDVMOWx0VWl4Z0RraTI1N2d3aThF?= =?utf-8?B?RThUTjA5Rk84OEluTGh3dnZVRFBnZkhwY3I2TTBCeWV0L0ZTZ1hyNjVSTGx0?= =?utf-8?B?SXdwOURNelEyVUZNMHhBZlJwMzBEWmxnTGVyaFpQNG14TDNrbFpjeCt3cW5F?= =?utf-8?B?cGxUa0dzdlg5Z2RUWlRGVGh0ODUrR0RJdkdtcE5tMGt4ODVNUytKVDhLV0ZU?= =?utf-8?B?aHd6Y2lvWXpEWkdrbWlNTkw2MEtyUjVTNkIzZXdKY1N0aGd3ME4rNDJXcTEr?= =?utf-8?B?bHgvWlNOMTRSMlZleHdOWnZGNWR3UmE2K1o5WmVBR29MeTdFZDdISUt6UElC?= =?utf-8?B?TmdoY004ZVpaSjRXSklseFI5a2lQZW1URVJNeFdaMmd6eE16c1p6TUw2UnBP?= =?utf-8?B?VzYvaHZ2MGYyRDAzTm1wMG9Vci9tRUFiOTFwL0V5MTRQT2lpZWprMUUzMmFU?= =?utf-8?B?aWU4N0E5L0IySVJMRHJ1WXJSdkhFeFVRdHp1S21Idno4ME90cGtyb00zVjRi?= =?utf-8?B?YmRPMTEzdlpTWStuR1hCUStmOENodCs5aEUrcS85Q3Urbm0xTlVnMitzL0I1?= =?utf-8?B?OEx2Q3dXSjh6djR2Nm9yR2tNUE9PZUZaVVJVNlVVU0FyRnRla2Y0VHBlWmdz?= =?utf-8?B?ZlZZbUR4dHpXYWRaTk5rdHIyOVNpL2JyQ1R6bmF4N1lnVHowb0k1UEFjZFFj?= =?utf-8?B?aElkMWJoUnk5MEhVR0F6UGRjOEZEaHpsR2tZa2ttdDVtdE9odldtU0hQZUNt?= =?utf-8?B?UnI1Wm9vOXFza0lHbGREN1VvZnBNQlREZTE3SUtwY3dZS3o0ajhRR2pnRFR3?= =?utf-8?B?bjlMbHZVM3huWmVZUXF2ZkJVeGVrbFprbU1uMmVyVC8yZXJRYU1IVWRFR2Vp?= =?utf-8?B?WXRJOVIweW9tY04yZ3NQbFVCbTMzOU5na3JvdTVKQjVoUVIrYnlXdW5nVVhJ?= =?utf-8?B?SldsMkh3U0d3aHQ4UFU2enMwVENEWTR6R0pYS3N1TTBqRDBzZ2dOendwV0RX?= =?utf-8?B?blRTd0wwWnUrVnp6MGFYbnYyNEZVZWJ6NzY2WDVGM09ZUitjb3pZZnIvUUhU?= =?utf-8?B?UFFma1ZIR1d5WGNNME83dG0xQWtJek9QV0ROcENaUFRxeVYyY2s0ZTBTbDNE?= =?utf-8?B?anZLbHFXVGRweXNnTFVtZkZraUpUaFJDK3BZNFhEQUk2bDAvVE5lY2dnZXRL?= =?utf-8?B?dU9jMVErajg5NHlsUzNvUmhTM0tnUkQ5TUtOSWtWdWc1a3VGTHFFTzIwdkJY?= =?utf-8?B?dU1TUWZOb1pMcklidHVOZyt1d2tQSWRWVXF4bU9lWmJnbGxXSHJBZlRNREh6?= =?utf-8?Q?5c+HOXT1gQhSLHUk=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: b421473a-af4c-4de9-3b83-08da42e99fc0 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2022 09:40:40.0866 (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: 6c1Hd8UhwJb2XYHY00Ud5pzo2kvA02pqiBFqZWU1uRWw9kqp762n+goE1YMQ904FugZ48OEesBuFpe1Hq+yl6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4952 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH 4/6] avcodec/hevcdec: make set_side_data() accessible 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" 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 Thu, 2022-05-26 at 08:08 +0000, softworkz wrote: > From: softworkz > > Signed-off-by: softworkz > --- > libavcodec/hevcdec.c | 117 +++++++++++++++++++++---------------------- > libavcodec/hevcdec.h | 2 + > 2 files changed, 60 insertions(+), 59 deletions(-) > > diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c > index f782ea6394..ff22081b46 100644 > --- a/libavcodec/hevcdec.c > +++ b/libavcodec/hevcdec.c > @@ -2726,23 +2726,22 @@ error: > return res; > } > > -static int set_side_data(HEVCContext *s) > +int ff_set_side_data(AVCodecContext *logctx, HEVCSEI *sei, HEVCContext *s, How about to use ff_hevc as prefix ? This function is used for hevc only Thanks Haihao > AVFrame *out) > { > - AVFrame *out = s->ref->frame; > - int ret; > + int ret = 0; > > - if (s->sei.frame_packing.present && > - s->sei.frame_packing.arrangement_type >= 3 && > - s->sei.frame_packing.arrangement_type <= 5 && > - s->sei.frame_packing.content_interpretation_type > 0 && > - s->sei.frame_packing.content_interpretation_type < 3) { > + if (sei->frame_packing.present && > + sei->frame_packing.arrangement_type >= 3 && > + sei->frame_packing.arrangement_type <= 5 && > + sei->frame_packing.content_interpretation_type > 0 && > + sei->frame_packing.content_interpretation_type < 3) { > AVStereo3D *stereo = av_stereo3d_create_side_data(out); > if (!stereo) > return AVERROR(ENOMEM); > > - switch (s->sei.frame_packing.arrangement_type) { > + switch (sei->frame_packing.arrangement_type) { > case 3: > - if (s->sei.frame_packing.quincunx_subsampling) > + if (sei->frame_packing.quincunx_subsampling) > stereo->type = AV_STEREO3D_SIDEBYSIDE_QUINCUNX; > else > stereo->type = AV_STEREO3D_SIDEBYSIDE; > @@ -2755,21 +2754,21 @@ static int set_side_data(HEVCContext *s) > break; > } > > - if (s->sei.frame_packing.content_interpretation_type == 2) > + if (sei->frame_packing.content_interpretation_type == 2) > stereo->flags = AV_STEREO3D_FLAG_INVERT; > > - if (s->sei.frame_packing.arrangement_type == 5) { > - if (s->sei.frame_packing.current_frame_is_frame0_flag) > + if (sei->frame_packing.arrangement_type == 5) { > + if (sei->frame_packing.current_frame_is_frame0_flag) > stereo->view = AV_STEREO3D_VIEW_LEFT; > else > stereo->view = AV_STEREO3D_VIEW_RIGHT; > } > } > > - if (s->sei.display_orientation.present && > - (s->sei.display_orientation.anticlockwise_rotation || > - s->sei.display_orientation.hflip || s- > >sei.display_orientation.vflip)) { > - double angle = s->sei.display_orientation.anticlockwise_rotation * > 360 / (double) (1 << 16); > + if (sei->display_orientation.present && > + (sei->display_orientation.anticlockwise_rotation || > + sei->display_orientation.hflip || sei->display_orientation.vflip)) { > + double angle = sei->display_orientation.anticlockwise_rotation * 360 > / (double) (1 << 16); > AVFrameSideData *rotation = av_frame_new_side_data(out, > AV_FRAME_DATA_DISP > LAYMATRIX, > sizeof(int32_t) * > 9); > @@ -2788,17 +2787,17 @@ static int set_side_data(HEVCContext *s) > * (1 - 2 * !!s->sei.display_orientation.vflip); > av_display_rotation_set((int32_t *)rotation->data, angle); > av_display_matrix_flip((int32_t *)rotation->data, > - s->sei.display_orientation.hflip, > - s->sei.display_orientation.vflip); > + sei->display_orientation.hflip, > + sei->display_orientation.vflip); > } > > // Decrement the mastering display flag when IRAP frame has > no_rasl_output_flag=1 > // so the side data persists for the entire coded video sequence. > - if (s->sei.mastering_display.present > 0 && > + if (s && sei->mastering_display.present > 0 && > IS_IRAP(s) && s->no_rasl_output_flag) { > - s->sei.mastering_display.present--; > + sei->mastering_display.present--; > } > - if (s->sei.mastering_display.present) { > + if (sei->mastering_display.present) { > // HEVC uses a g,b,r ordering, which we convert to a more natural > r,g,b > const int mapping[3] = {2, 0, 1}; > const int chroma_den = 50000; > @@ -2811,25 +2810,25 @@ static int set_side_data(HEVCContext *s) > > for (i = 0; i < 3; i++) { > const int j = mapping[i]; > - metadata->display_primaries[i][0].num = s- > >sei.mastering_display.display_primaries[j][0]; > + metadata->display_primaries[i][0].num = sei- > >mastering_display.display_primaries[j][0]; > metadata->display_primaries[i][0].den = chroma_den; > - metadata->display_primaries[i][1].num = s- > >sei.mastering_display.display_primaries[j][1]; > + metadata->display_primaries[i][1].num = sei- > >mastering_display.display_primaries[j][1]; > metadata->display_primaries[i][1].den = chroma_den; > } > - metadata->white_point[0].num = s- > >sei.mastering_display.white_point[0]; > + metadata->white_point[0].num = sei->mastering_display.white_point[0]; > metadata->white_point[0].den = chroma_den; > - metadata->white_point[1].num = s- > >sei.mastering_display.white_point[1]; > + metadata->white_point[1].num = sei->mastering_display.white_point[1]; > metadata->white_point[1].den = chroma_den; > > - metadata->max_luminance.num = s->sei.mastering_display.max_luminance; > + metadata->max_luminance.num = sei->mastering_display.max_luminance; > metadata->max_luminance.den = luma_den; > - metadata->min_luminance.num = s->sei.mastering_display.min_luminance; > + metadata->min_luminance.num = sei->mastering_display.min_luminance; > metadata->min_luminance.den = luma_den; > metadata->has_luminance = 1; > metadata->has_primaries = 1; > > - av_log(s->avctx, AV_LOG_DEBUG, "Mastering Display Metadata:\n"); > - av_log(s->avctx, AV_LOG_DEBUG, > + av_log(logctx, AV_LOG_DEBUG, "Mastering Display Metadata:\n"); > + av_log(logctx, AV_LOG_DEBUG, > "r(%5.4f,%5.4f) g(%5.4f,%5.4f) b(%5.4f %5.4f) wp(%5.4f, > %5.4f)\n", > av_q2d(metadata->display_primaries[0][0]), > av_q2d(metadata->display_primaries[0][1]), > @@ -2838,31 +2837,31 @@ static int set_side_data(HEVCContext *s) > av_q2d(metadata->display_primaries[2][0]), > av_q2d(metadata->display_primaries[2][1]), > av_q2d(metadata->white_point[0]), av_q2d(metadata- > >white_point[1])); > - av_log(s->avctx, AV_LOG_DEBUG, > + av_log(logctx, AV_LOG_DEBUG, > "min_luminance=%f, max_luminance=%f\n", > av_q2d(metadata->min_luminance), av_q2d(metadata- > >max_luminance)); > } > // Decrement the mastering display flag when IRAP frame has > no_rasl_output_flag=1 > // so the side data persists for the entire coded video sequence. > - if (s->sei.content_light.present > 0 && > + if (s && sei->content_light.present > 0 && > IS_IRAP(s) && s->no_rasl_output_flag) { > - s->sei.content_light.present--; > + sei->content_light.present--; > } > - if (s->sei.content_light.present) { > + if (sei->content_light.present) { > AVContentLightMetadata *metadata = > av_content_light_metadata_create_side_data(out); > if (!metadata) > return AVERROR(ENOMEM); > - metadata->MaxCLL = s->sei.content_light.max_content_light_level; > - metadata->MaxFALL = s->sei.content_light.max_pic_average_light_level; > + metadata->MaxCLL = sei->content_light.max_content_light_level; > + metadata->MaxFALL = sei->content_light.max_pic_average_light_level; > > - av_log(s->avctx, AV_LOG_DEBUG, "Content Light Level Metadata:\n"); > - av_log(s->avctx, AV_LOG_DEBUG, "MaxCLL=%d, MaxFALL=%d\n", > + av_log(logctx, AV_LOG_DEBUG, "Content Light Level Metadata:\n"); > + av_log(logctx, AV_LOG_DEBUG, "MaxCLL=%d, MaxFALL=%d\n", > metadata->MaxCLL, metadata->MaxFALL); > } > > - if (s->sei.a53_caption.buf_ref) { > - HEVCSEIA53Caption *a53 = &s->sei.a53_caption; > + if (sei->a53_caption.buf_ref) { > + HEVCSEIA53Caption *a53 = &sei->a53_caption; > > AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, > AV_FRAME_DATA_A53_CC, a53->buf_ref); > if (!sd) > @@ -2870,8 +2869,8 @@ static int set_side_data(HEVCContext *s) > a53->buf_ref = NULL; > } > > - for (int i = 0; i < s->sei.unregistered.nb_buf_ref; i++) { > - HEVCSEIUnregistered *unreg = &s->sei.unregistered; > + for (int i = 0; i < sei->unregistered.nb_buf_ref; i++) { > + HEVCSEIUnregistered *unreg = &sei->unregistered; > > if (unreg->buf_ref[i]) { > AVFrameSideData *sd = av_frame_new_side_data_from_buf(out, > @@ -2882,9 +2881,9 @@ static int set_side_data(HEVCContext *s) > unreg->buf_ref[i] = NULL; > } > } > - s->sei.unregistered.nb_buf_ref = 0; > + sei->unregistered.nb_buf_ref = 0; > > - if (s->sei.timecode.present) { > + if (s && sei->timecode.present) { > uint32_t *tc_sd; > char tcbuf[AV_TIMECODE_STR_SIZE]; > AVFrameSideData *tcside = av_frame_new_side_data(out, > AV_FRAME_DATA_S12M_TIMECODE, > @@ -2893,25 +2892,25 @@ static int set_side_data(HEVCContext *s) > return AVERROR(ENOMEM); > > tc_sd = (uint32_t*)tcside->data; > - tc_sd[0] = s->sei.timecode.num_clock_ts; > + tc_sd[0] = sei->timecode.num_clock_ts; > > for (int i = 0; i < tc_sd[0]; i++) { > - int drop = s->sei.timecode.cnt_dropped_flag[i]; > - int hh = s->sei.timecode.hours_value[i]; > - int mm = s->sei.timecode.minutes_value[i]; > - int ss = s->sei.timecode.seconds_value[i]; > - int ff = s->sei.timecode.n_frames[i]; > + int drop = sei->timecode.cnt_dropped_flag[i]; > + int hh = sei->timecode.hours_value[i]; > + int mm = sei->timecode.minutes_value[i]; > + int ss = sei->timecode.seconds_value[i]; > + int ff = sei->timecode.n_frames[i]; > > tc_sd[i + 1] = av_timecode_get_smpte(s->avctx->framerate, drop, > hh, mm, ss, ff); > av_timecode_make_smpte_tc_string2(tcbuf, s->avctx->framerate, > tc_sd[i + 1], 0, 0); > av_dict_set(&out->metadata, "timecode", tcbuf, 0); > } > > - s->sei.timecode.num_clock_ts = 0; > + sei->timecode.num_clock_ts = 0; > } > > - if (s->sei.film_grain_characteristics.present) { > - HEVCSEIFilmGrainCharacteristics *fgc = &s- > >sei.film_grain_characteristics; > + if (s && sei->film_grain_characteristics.present) { > + HEVCSEIFilmGrainCharacteristics *fgc = &sei- > >film_grain_characteristics; > AVFilmGrainParams *fgp = av_film_grain_params_create_side_data(out); > if (!fgp) > return AVERROR(ENOMEM); > @@ -2965,8 +2964,8 @@ static int set_side_data(HEVCContext *s) > fgc->present = fgc->persistence_flag; > } > > - if (s->sei.dynamic_hdr_plus.info) { > - AVBufferRef *info_ref = av_buffer_ref(s->sei.dynamic_hdr_plus.info); > + if (sei->dynamic_hdr_plus.info) { > + AVBufferRef *info_ref = av_buffer_ref(sei->dynamic_hdr_plus.info); > if (!info_ref) > return AVERROR(ENOMEM); > > @@ -2976,7 +2975,7 @@ static int set_side_data(HEVCContext *s) > } > } > > - if (s->rpu_buf) { > + if (s && s->rpu_buf) { > AVFrameSideData *rpu = av_frame_new_side_data_from_buf(out, > AV_FRAME_DATA_DOVI_RPU_BUFFER, s->rpu_buf); > if (!rpu) > return AVERROR(ENOMEM); > @@ -2984,10 +2983,10 @@ static int set_side_data(HEVCContext *s) > s->rpu_buf = NULL; > } > > - if ((ret = ff_dovi_attach_side_data(&s->dovi_ctx, out)) < 0) > + if (s && (ret = ff_dovi_attach_side_data(&s->dovi_ctx, out)) < 0) > return ret; > > - if (s->sei.dynamic_hdr_vivid.info) { > + if (s && s->sei.dynamic_hdr_vivid.info) { > AVBufferRef *info_ref = av_buffer_ref(s->sei.dynamic_hdr_vivid.info); > if (!info_ref) > return AVERROR(ENOMEM); > @@ -3046,7 +3045,7 @@ static int hevc_frame_start(HEVCContext *s) > goto fail; > } > > - ret = set_side_data(s); > + ret = ff_set_side_data(s->avctx, &s->sei, s, s->ref->frame); > if (ret < 0) > goto fail; > > diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h > index de861b88b3..d4001466f6 100644 > --- a/libavcodec/hevcdec.h > +++ b/libavcodec/hevcdec.h > @@ -690,6 +690,8 @@ void ff_hevc_hls_residual_coding(HEVCContext *s, int x0, > int y0, > > void ff_hevc_hls_mvd_coding(HEVCContext *s, int x0, int y0, int > log2_cb_size); > > +int ff_set_side_data(AVCodecContext *logctx, HEVCSEI *sei, HEVCContext *s, > AVFrame *out); > + > extern const uint8_t ff_hevc_qpel_extra_before[4]; > extern const uint8_t ff_hevc_qpel_extra_after[4]; > extern const uint8_t ff_hevc_qpel_extra[4]; _______________________________________________ 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".