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 6B9FF427D3 for ; Tue, 31 May 2022 09:38:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5752468B63D; Tue, 31 May 2022 12:38:33 +0300 (EEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7665C68AF33 for ; Tue, 31 May 2022 12:38: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=1653989911; x=1685525911; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=yZwg8oTzEXw9pkQ9Nqav6eL7+brOc4L3HqWSofXVRKY=; b=ayT2ur+97xc1nuT9fFPd4XU7Tnh0VVMtW9hp1vQILYdrcfZJSo05KoTY lwEqJpKnZHTu2SxlNNDkDpGUZG35/EE0cJv8zcz3F3DRuTeg57NJy1wbA OX7tv5RspfeL/m6MhD0Mu9VX1pffK1rMe+NTN8ODkMiuFU+VBc7RJfW+E uvUmIr9HxXVIpKOJv3n3nD/oHYk3Ynvb3/TpgPHdPRw/7GPXxg7KvnOrK WMv1R+cKGzOrvMtiRDZy1boTtUJ/Vq7pVHRYxB8oRbfTFD7rS0Jm82j7T jAXcWZH+xExjCJaq1piy7potJvI9HTTFUtWX7P6NjyWj6ZCoIAy/Cmq6s A==; X-IronPort-AV: E=McAfee;i="6400,9594,10363"; a="274008145" X-IronPort-AV: E=Sophos;i="5.91,264,1647327600"; d="scan'208";a="274008145" 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:38:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,264,1647327600"; d="scan'208";a="576324149" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga007.jf.intel.com with ESMTP; 31 May 2022 02:38:23 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) 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:38:22 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX608.amr.corp.intel.com (10.22.229.21) 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:38:22 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) 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:38:22 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) by edgegateway.intel.com (134.134.137.102) 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:38:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YIZ+NpfWhYw4SGhvLyCqc9bCeoxETztcfZAHVvuR7Gp5j7ESCmiZ12BuNqz3m1vBS2ConhQhP9h6I+np6t9N5PijXX25rWGa2rrn2/3WdlNBgjGPhu46ZL6bg/J7dLyXHyjTlUMSLjwdsOmY95oVeH08Ab/THC+fBULWUnRwBvfPp0Yms9ehnKEe+dh+R11j8kSI/SAqCUbf4aIIwfCpx7RHTfXfocI88JqaH8pBfQWaLvkljfqtlnTfP5Cz5+jomcDBlkoHoJL1npj6EG4qnkME+lTVsaDUcMg1nIPrgchC3L/aeXXa3rm9bhayQwaDcIscbEtefiX2IwEg4R68vA== 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=yZwg8oTzEXw9pkQ9Nqav6eL7+brOc4L3HqWSofXVRKY=; b=j3hYPj8KnAugrT8LYWFUr+ejTgfgCngmXVgSi8aLBg2LKpFQXRNBUszeGtMRMvV9mFV+S2h4apsuSvWjG6NdbI2p1pkfChxk09FEpLHLsusDJqY6b3Da21m/OgceVu8u4dyfUxnuR1Fv4qdCa6dU4bWmRJhYZyD4PLzoBhKs/Gh6Iq624KXuyfhm+oW30RaJ5YrjckJOFaf0bjIMuDcMaeKQc+2Gshuu69CtdMOkZTF1iAigJuwPHD4lVDg6Prgc6eVfy+9fXHiOFCXMkptsn5zJhtUT4u+MNFYZ2b8iXdlkxQo1ItpynS87aE801A3NfpEhtsZFh4Nee6sXQGPvJQ== 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 BYAPR11MB2968.namprd11.prod.outlook.com (2603:10b6:a03:90::30) 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:38:19 +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:38:19 +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/H0WnIHrwRGEqX604wp+A Date: Tue, 31 May 2022 09:38:18 +0000 Message-ID: <65fd87e90d9ad7df5fe4fc767fc2ac2dec38defd.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: d1d22dc5-3282-488e-64bd-08da42e94baa x-ms-traffictypediagnostic: BYAPR11MB2968: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: CJOVFoz08LXvA5xcgWe1II1hbvBslOdsiA48R4eV/KWft2v0qvDSnNjAP9/nT7foRdUZTO9XMyiUPVklBKyIfmOsMKSa8aRJvS3M+Qs4Bn3IbijFwMHetRZJOP8+s0H1SGHbmYJdvxIqU1mOo4meMxSc/Aa6EVybaRkNRQItVl6sMST07kgTgNB+32LNNzETs1QDBXbOhkd7k7yAWwAsdJOoX9TmFsQu22rMB6Tm1EY1usi6gYZe+OSJWDeUlCb58MukIKyjC80S/9gPa084OgVeYyMxbrKGK1fsZhIfJSjziE7nLtQfhzw0s+CPqRCOjXvbbhNpaAGlNJSMPY+fEb7PZdLDDSp876OUg+kuCWw3tLJy0lfYGFTp2ZcYE6rrCchE0mWn3Nj4y6EeqdC2qnCtxtcRS9uIOCydXhkGinSkFpWFW2w9+USv6MtbZJlka3q2htHXlHxXfYl7YNXnACPAQBq0fm2lXKBX53TWogqenbqGqs80H9OqIYIcvQotaVO9mSY0fKMWF7OKQtABuiOuLB9V9z+7Gw4TXiqZz+XfSz49mHdHjXZaXtIlyoVbdygeXZORONwexWm2f7gc2j/v3Azy+8ATBMsqiDhTXqcZok0P+NzqbvSWGmWj7vGymxKMtxDV/rfYPbOjZ2dJiUnY0k8+5us/GrKfQjySzfIum+U7/ARBh1UMKyZ4FOdibQRiLiMzeokT5xU+JquY4WtRjMVRNe/CGz3A2cbwFoyi6vKVN+KY4sTlPitHmSvJlartYnomqNq0HVFZ3/vSGg== 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)(38070700005)(122000001)(86362001)(6916009)(83380400001)(36756003)(6486002)(508600001)(82960400001)(76116006)(91956017)(8676002)(66556008)(66476007)(66446008)(316002)(71200400001)(4326008)(66946007)(64756008)(2616005)(5660300002)(6506007)(186003)(38100700002)(8936002)(6512007)(26005)(2906002)(30864003)(99106002)(309714004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MENEYVNBdjlHTEQ3aWgwc1FXTjZGSkg2OG5pcDh6bVlPMjZPV3lrbHZQZFFQ?= =?utf-8?B?NHFiMTdxNk1qOTlIeEdDNnZGcEozbDluU1EweEVidnVHRjdWQk5UN3hzbFVU?= =?utf-8?B?Z2U4bXJyNWY5eS9TeGllMVBWL3FNK0dqdzJjN2t6UDdpWE5ZY2Rua1Njc1ZJ?= =?utf-8?B?UnlOYzhkRjJUTEQxNjJjRjhER3VUWUxYejduMDErRko0b3k1djhhU2dTbXYw?= =?utf-8?B?OWZYaUcyVkgxUWd4TjBzcnY2OVhhNEV3a2tpb3JQb2xtYzRZcVhWdS8rVExI?= =?utf-8?B?c3dQcDRQWGdzb1krdjBSaVpjdWNWM1RPVG8vSWx2aE5XSGt6YUNwSHh6bE1h?= =?utf-8?B?NFhLMlpHSHBBbWtPM1ZTYXZxK0xPZHArTldwOW9vbGVqUXRETU4xT3JtaE5T?= =?utf-8?B?ckNzdVR3bmFyVEhKeDNkWU9zR2NKSVp0anExcUdSV3JTNWk5VUJ1UWt4WjQr?= =?utf-8?B?RjhLclZZSmJEelA1eXZTSXQvTVlGbmlaNU9UVmZPSm9VdVFCMjU1ZDNKaUhS?= =?utf-8?B?WFRHbXQ1YW9oWE1mZE9GSXVnWXNIY3dNZmp1YjBZMVF5dTA3R054V3RTZS9W?= =?utf-8?B?ZjBxNzYxSGlpZzV5L0hoVVc0a0pDb2lCdFBFUG9qckNERG1nR3k0T0hMa2da?= =?utf-8?B?b25oeW42MWpGYWt0MUNZai8xak4zbkxRcEM4RjJZbWxnbXJ0QWJybkJ4TERO?= =?utf-8?B?TE11bUtDTmVDb0hjSFB4bmRDVWFDV25GYWFOcUU1M3VGVFlRZWtRNWdSQnFP?= =?utf-8?B?Z0Z6L0RvdXVJYVZ0bStvK2hpY0FnMDZhVGtQeGlyYlRCSlRhK0VsbTdyQklD?= =?utf-8?B?bk5yRUxsMFgvUS9YK0lhaTZZWTYvNE1CWHUxUCsyQ3FydVBTRllsbGc1ZE9O?= =?utf-8?B?ZkVlN09oWFFOUk5tWGszd0ZSYTF0SG5UaHF3em8wNnc3WkNMd1Zod1lxcUEz?= =?utf-8?B?Um9YZ2dZWXh3MlBsNnNyRzVmbXdCQ0FrV2djb2Q5eU92bzJmRVlMOWxoZW1H?= =?utf-8?B?czZUanYvTmVGdkVyZ2puN3p5SEZNZXF1aVNTQ0c5UmNaQ2xCQXl6WUxtRyty?= =?utf-8?B?ZDB3ZmwyNjFyQnZlQWxGWkp1TnFqVW51dDJQckU0SXBWamRrOXdsUVhqa3BE?= =?utf-8?B?dlpQY0FydU5nQ1ZaTVMxdjJiSHpUNlJPaXUwcSttZUkwVzBsNkh0bVBuNUNW?= =?utf-8?B?Z1hhK2x1RWZKZlRwYm1WUDhRRjFha1dhTlZyR3VXaDFHVzVydm5WbVVSNkNS?= =?utf-8?B?VDMraUx2QUFQZHAwWmFBNkhINkczL1c3bS9VRkhlSldtSmVoamt3Q3lMSk9i?= =?utf-8?B?QVlmc0Y5aVBreEUyTncxbjlXNk1rRWp5R3duZndiWXoyYlN3NWk4emhIYkZv?= =?utf-8?B?a0lzYU1peTQyUURKUEJVYUJWZ2pxcldrQTV0VTNHTlE0amRVR2tPaDA4MCt3?= =?utf-8?B?K2UwN292Wlc1WW9XRDdDQmxRSTFJMGprOE5WODg4dDAvaW02K29ZTHhlT0hX?= =?utf-8?B?OHJiNGI5c3hYaXRBSEErWDRRUUVRRjF3dThoNHBuRnhhU2RkQXgwSi9jcFV2?= =?utf-8?B?ZDFzVDRJcUdrbGJZZEhjdlpiVGlYMFRCV05XZjRSb1dOSmUwVmptMm9xNDNL?= =?utf-8?B?VzBsWjVGRzZNb2FsTjN1dWV1eFFmU2o0TkMrT1hOamRYbDBNTXFSKzUwOFpC?= =?utf-8?B?SE5YSUdrd3pNdCt6UEJ3VU42eWxVRzVQQzhVaTVPSjVVV0tzcWMxQjBHbWZX?= =?utf-8?B?YS9lNnh3alptRkpuQ25oKzkvUXlEbWNFeXlIckNRaExEc2VJeWNZOTd0eFRG?= =?utf-8?B?TTNweXJrWHc0OVdPQnFGbnNWNEpUbkJtM2hiMjBsdUxRWVByVjFNTWs4S0t3?= =?utf-8?B?WE00STNXdE91R2lybVI5c2VnWkpZQlhybjF6ZFAwRFFZaTRDR0VIRDA0QXJI?= =?utf-8?B?K3RxMFJpWC9kQjhqSm9rOWwyc2xtalh5ZWVicktJY2dKM2R1dERUMHhmQ3Na?= =?utf-8?B?NENtMDErOUplQmZwNmxnNCt3OWdzSVQwaURWcDI5bndhUFZ5YVBUZllWOWdJ?= =?utf-8?B?b1YyM0dYeUsyS1lTdWE5cWsxRWJrQ2ZnS2g3aWtNY1RxQVdCU3hsZDZuQS9E?= =?utf-8?B?WFJjK2ltTXJoSGUxZTQ1UWljTFpKTVdTd1g5Uk94UjU1dFpLUFNEcGorMm00?= =?utf-8?B?cTltTC96S3dQU2Z5U1I4YlFVUEVLRlhjSDFiUjcxM3owRlFnSmhLTm9nRkcr?= =?utf-8?B?VGF2SXV0MDRUUDJlcm9IQnZTL1MvNE5CMTAxNHBVQzVLRjlianJMNlFzRkU4?= =?utf-8?B?WUNkVDRBcUxtWVdqd0JkTGJvWFVnTllaaGVpQ0E4ZjAvMjdXWnRDTWFObUdJ?= =?utf-8?Q?auTuGyDbr+n4TJAI=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: d1d22dc5-3282-488e-64bd-08da42e94baa X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2022 09:38:19.0149 (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: ZIWdMFDhSh5kg/w5PaSvBhX3fXutPgeNpjLIxJ7/dJeXUIqDOq9fGmB2v/PhB24ahXP9nRHGohPmXVI0LP7mWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB2968 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, > 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 && So sei must be non-NULL but s may be NULL in the new function, right ? The caller should ensure s is non-NULL for the original function. It would be better to have some comment if s may be NULL now. Thanks Haihao > 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".