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 7CE9F4755F for ; Mon, 11 Sep 2023 18:34:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 29C0168C977; Mon, 11 Sep 2023 21:34:25 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2041.outbound.protection.outlook.com [40.92.66.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4CBCA68C610 for ; Mon, 11 Sep 2023 21:34:19 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M/zlZwaPstVTf4cHlx4WekBKMvCc2vAH9r9BQsfrEU3p97AAKXlZAy38HzEAX17HBMBxsBaydWjp/eyMBoithTXn2+AMJAv+SAa3GnJ9GGF7/ZV+VvZNUecDM1L9H4PaJii34Tt3PRt8j5oin41q7Ed0vs4el6gc73cYoGto1HBnqfnrtfqAqLEQH1Se0D+u24WL1UTf3wrUg+BlYSLvR8c3/a3EYiYB/Nq2S8kJmPsUY4buaJsvBVRoR/NGvra1OWDgXtWdcrxg2BXrI8vgi3MBdC4K04R75VJUKBdwD0a7/RdGu4C1J0nDrBe/inu/BHiDf30ceq931+VDwCOEXw== 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=R661JFau2F53O5MCjv7/xnps68i64zoaMQUztd2RLLY=; b=fNJrVu7LDoIFZ5LoSlQzWsqjazzmnBy9Ce2G6+YwHtVMRBr9uLtDFat5kWfey4W3kCHwBfH0ARc/Z++4dphiBgVaiA6cEb6s1NBFNyDyo8b2VcbsITl60zHDFlCgrX3FyMj0NMm8kbNGVuk3yZXifly9WXG/kzQV++S6J4yMdyCRQYmuF0w7Xt67TpxRoxxxvuALieLEYJvfCsQ6bP5D3rX4igqdJi1lPLpDcmEwB7kNqYG0URncWS5rNPeT1Q6MJHPxMh5ivCfwXo1QroJDgc80ntEHUCiEVet0BURAu/qvQHxe8cpcRF+Fl/MwGamv2fxBt6JmHBkuOsn43U6XFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R661JFau2F53O5MCjv7/xnps68i64zoaMQUztd2RLLY=; b=OS/ACogIBJpGDhiHDI210K0mZty4yYmShTb2vedLPOEg2+abtGmUbfCaQibgVJZX4mpsO+xjDoKLORhUIRc80wFmCXRDVCBSWDk+Z8CEKrGkj0siuAs5KPkzBnDSezqQEVenHiG8xRiI7vu3wqryEL/k+UaiaCATrvJqrME0OWOD7ACzH+5Xg1tkelMSccipbLpmr9IAcNHb81VhatwRI6EZIxI8DHeYVRuJLTcWLwxjVnUP3mv2r7roRE+L++4ncX3Spgg60rmQKgas4ZLhh82RlwPbZrBvdyTlktqtU75O6ozzTzE4D5fOQkqU0FKBcmSVECDFPj8ZhbXj019hOg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0139.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.33; Mon, 11 Sep 2023 18:34:17 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6768.029; Mon, 11 Sep 2023 18:34:17 +0000 Message-ID: Date: Mon, 11 Sep 2023 20:35:36 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230906174431.45558-1-jamrial@gmail.com> <20230906174431.45558-9-jamrial@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20230906174431.45558-9-jamrial@gmail.com> X-TMN: [38zRo8k/22HWNzFDxT/Z31HBfATub9EM] X-ClientProxiedBy: ZR2P278CA0077.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:65::6) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <812cb7e6-1b15-bd23-2042-7cf52bb4c41f@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0139:EE_ X-MS-Office365-Filtering-Correlation-Id: acd23883-9461-4ce0-d101-08dbb2f5b4da X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tv/cgDGcQzDIGNIUZBe6UZlqqDXj/cy31vwL6Cw/FLyTYCxduUI3zvh6jAnymx54RYCEwThvLxVNe7x9tc78ZMa7lXWCTfUeFvop10LOFzBdQeDR7X5QaJIqYnT3ic2/G9cGqpv2i1AVeq0WOmM+xVcqlUVEoYJC9xOmNVp+D8CPigXxeWo1PlxvQrg1dKIImD5AV1weNmfhtH0EMdXZMx5MuKXvWaSQRmkg9HpIqFX4iEMUfD99TtM00o44gXHf4pMcpB/pYJYmgq7ECOV1S7HNxHzzgNwidEi8g54mhWkHuQoJ7Wds7uAeExUDDBkvvc7l4VveXOPcP+lwT43zJH0/YZx80ET72OC8oFHuoGV2/Puyfa84/LBlEV6eQt5yI85bj3UJmWSPTQnujt5kNrN8ENh4p1KEsyS0EqdFiE1vtuLn8YVv6uTmbjj/fPj56V999iAqoDa6VL8ak7dij/xmSCpcksYwFIhBi5MJ/7AxTedCEIhqRO9Hj65V3pXWkWGea/YriCyH2xkhOqk/Z2Q2z4IwSS4V2l5GS54iV4dCBRG3nSdfUPHMMiYCGpEy X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WjlFQVNzMC9GejlPaGlUNG9oQnN3YUorbmhKQktkT2h5dlZ3eStsc0lNRi92?= =?utf-8?B?UmRObUx5SEdaRVEweXJHWE5IZzQ4Z0dNdmdxbmRWS3lUVW1zdVR5L2xLVFh2?= =?utf-8?B?VXFrYldTWFVCNi9mUmU3MDl1US95dmdPWkZLWE5SZDBpa1doN2lYcDZaY09t?= =?utf-8?B?dCs1NG1DRVpnMDVPQkZXSUM0MzlrOU5SaWlndmFIZmhRaU5GbnQ1V043ZS9M?= =?utf-8?B?ZFcycUN3d3luVWNjZU8zVFJQZWZ1dytPaEgyZitmeS9ZSDZsWVZjYkc4T01l?= =?utf-8?B?Sk4xOTNlTnoxNFhGQ0hXa1dES2UrNVJnMzBNL3dFQ2x3dzFUck1LZng1M1Yy?= =?utf-8?B?VDRyYWZCSGU3T1IwNFU0aThoSjN1Tkx5M2hsZ1pRRzV5dnMxbittTlA4K05J?= =?utf-8?B?M2NOZzV6em5adFhwNnhvM0RwNnhCbm9JRDAvNFlEWFh0N1AwVHdhcWxmaGtC?= =?utf-8?B?UmVicUV1SUEwY0lEQWJtTWpjdG9pWnZGcEl4bmlTUnYzVGo2aWovRktTSzZi?= =?utf-8?B?cHk3WlNzbm45RldwMzV5M2IxdDVjK2orcTNlL24rTGZxUUpINllBVTVCWWdE?= =?utf-8?B?RUl5T28vVGJTWVorZUhxZ1FzUVM4SEY1UXllMVRQWlRuZDRvc2Zka3c4WHBV?= =?utf-8?B?aERtUUFROGZ0YlU0NkszdlY2RlpxZHRZL0l6K2xERkNKN3RaVktzc09CWmRC?= =?utf-8?B?OHVOZlZHY2lhVEI2ZWUyMkptS2xTR0FOai9VWUdndUJIK1NaRTdheTBpQ0V5?= =?utf-8?B?NDlQMnBCTTlqSHFlajltNk5INVJQUmFRSVhhZ3E5cHp1enlQRGdlbWVjdXo4?= =?utf-8?B?RzVqUXJUMnJUL1hNWHFmdmtwZlBiMGszUE1LZkhGTklNWnlKaHY4N0dmSXNU?= =?utf-8?B?VkRlRnZEb0ZWdXE0blZ6WkM0MFZBU0NBMDh6TCtDRW1rMEhKWWx6MUxvSy9s?= =?utf-8?B?d1JGMDQwRVBtYVpkUjFXRUdzNzVLNDFlaDZwb0pKZ2xjQlp1aHAyMm9HcmJG?= =?utf-8?B?NlF2YnJqVFF3VkVzdzhsTnNXOEZjTElXdUdCZkZCOFJUT2ZwbjJ0ZUxML2Ft?= =?utf-8?B?UzFpU0MzSjNrN0xtNXNJUXZ3SWR2eU5GUzBUSElUbXpvRWZUd21wWTZjSDJx?= =?utf-8?B?SFl4bTdFS09ybWVhOUxhd0ludUFKd1ZXTnpaU1RiaUpSM3Jmckl4Wld4MGRB?= =?utf-8?B?aERVMXlTVXNyaUVNaFh6OWtqNWdpeG04RElrMXE5b1ZXZzR5MkxsUXVRTUhB?= =?utf-8?B?NE1WVm5FdTFCUzdYV0FPSWc4aTVuVkJtbGhOWE9rWWNPZUVHaFF3TzJ3UWxo?= =?utf-8?B?WklCOVE2SVRjK3NrdjVVdnVRK3l2K05qOG43cnNxZElqbmt2bjM4cFdUVGFS?= =?utf-8?B?NktxUGhLTGdtTEdsTTYwYVJ5YWErNE9OUGY0Y0lrRW5nSEVkamRnRzlEZlg4?= =?utf-8?B?dk1HdGFyMWxoR2JIMWdVV1lOMmJoY1c0N01aS1lBOEVyRnp1TWI4QVFoQVpu?= =?utf-8?B?Z3VnUWVoZHRWQ1M0VVlrVGFkSlRybFV2UXhwZEd6Ujg0bzVIL0UyWU1qZS84?= =?utf-8?B?eFR5VE5DOGlhVVU1VFNkdm0vcW5HdVpvY0NoWGVhRVhKUFowekRtT3VoU2F2?= =?utf-8?B?Qi9Zdjd6M3VLNVFXbjJVSzRyamdEcFlvQ1dNampiZTNRS3pqVTVZWEhraG5V?= =?utf-8?Q?7voWiHQhqJoFqwDVWmDS?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: acd23883-9461-4ce0-d101-08dbb2f5b4da X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2023 18:34:17.7243 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8P250MB0139 Subject: Re: [FFmpeg-devel] [PATCH 08/10] avcodec/decode: check for global side data in AVCodecContext side 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: James Almer: > Signed-off-by: James Almer > --- > libavcodec/decode.c | 55 +++++++++++++++++++++++++++++++++++++-------- > libavcodec/decode.h | 2 +- > 2 files changed, 47 insertions(+), 10 deletions(-) > > diff --git a/libavcodec/decode.c b/libavcodec/decode.c > index 169ee79acd..1a431ba7d7 100644 > --- a/libavcodec/decode.c > +++ b/libavcodec/decode.c > @@ -1409,25 +1409,31 @@ static int add_metadata_from_side_data(const AVPacket *avpkt, AVFrame *frame) > return av_packet_unpack_dictionary(side_metadata, size, frame_md); > } > > -int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, > +static const struct { > + enum AVPacketSideDataType packet; > + enum AVFrameSideDataType frame; > +} sd_global_map[] = { > + { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, > + { AV_PKT_DATA_SPHERICAL, AV_FRAME_DATA_SPHERICAL }, > + { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, > + { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, > + { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, > + { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, > + { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, > + { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS }, > +}; > + > +int ff_decode_frame_props_from_pkt(AVCodecContext *avctx, > AVFrame *frame, const AVPacket *pkt) > { > static const struct { > enum AVPacketSideDataType packet; > enum AVFrameSideDataType frame; > } sd[] = { > - { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, > { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX }, > - { AV_PKT_DATA_SPHERICAL, AV_FRAME_DATA_SPHERICAL }, > - { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, > - { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, > - { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, > - { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, > { AV_PKT_DATA_A53_CC, AV_FRAME_DATA_A53_CC }, > { AV_PKT_DATA_AFD, AV_FRAME_DATA_AFD }, > - { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, > { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE }, > - { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS }, > { AV_PKT_DATA_SKIP_SAMPLES, AV_FRAME_DATA_SKIP_SAMPLES }, > }; > > @@ -1440,6 +1446,23 @@ FF_DISABLE_DEPRECATION_WARNINGS > FF_ENABLE_DEPRECATION_WARNINGS > #endif > > + for (int i = 0; i < FF_ARRAY_ELEMS(sd_global_map); i++) { > + size_t size; > + uint8_t *packet_sd = av_packet_get_side_data(pkt, sd_global_map[i].packet, &size); > + if (packet_sd) { > + AVFrameSideData *frame_sd; > + > + av_log(avctx, AV_LOG_DEBUG, > + "Overwriting global side data of type \"%s\" in output frame with side data " > + "from input packet.\n", av_packet_side_data_name(sd_global_map[i].packet)); Overwriting? Is it guaranteed that the frame has the side data at all? And if it had, why would you overwrite it at all? After all, if the decoder added something, isn't this to be preferred to stuff from AVPacket side data? Apart from that: packet_sd should be const. > + > + av_frame_remove_side_data(frame, sd_global_map[i].frame); > + frame_sd = av_frame_new_side_data(frame, sd_global_map[i].frame, size); > + if (!frame_sd) > + return AVERROR(ENOMEM); > + memcpy(frame_sd->data, packet_sd, size); > + } > + } > for (int i = 0; i < FF_ARRAY_ELEMS(sd); i++) { > size_t size; > uint8_t *packet_sd = av_packet_get_side_data(pkt, sd[i].packet, &size); > @@ -1476,6 +1499,20 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) > const AVPacket *pkt = avctx->internal->last_pkt_props; > int ret; > > + for (int i = 0; i < FF_ARRAY_ELEMS(sd_global_map); i++) { > + const AVPacketSideData *packet_sd = ff_get_coded_side_data(avctx, > + sd_global_map[i].packet); > + if (packet_sd) { > + AVFrameSideData *frame_sd = av_frame_new_side_data(frame, > + sd_global_map[i].frame, > + packet_sd->size); > + if (!frame_sd) > + return AVERROR(ENOMEM); > + > + memcpy(frame_sd->data, packet_sd->data, packet_sd->size); > + } > + } > + > if (!(ffcodec(avctx->codec)->caps_internal & FF_CODEC_CAP_SETS_FRAME_PROPS)) { > ret = ff_decode_frame_props_from_pkt(avctx, frame, pkt); > if (ret < 0) > diff --git a/libavcodec/decode.h b/libavcodec/decode.h > index a52152e4a7..52e5aafc34 100644 > --- a/libavcodec/decode.h > +++ b/libavcodec/decode.h > @@ -67,7 +67,7 @@ int ff_decode_get_packet(AVCodecContext *avctx, AVPacket *pkt); > /** > * Set various frame properties from the provided packet. > */ > -int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, > +int ff_decode_frame_props_from_pkt(AVCodecContext *avctx, > AVFrame *frame, const AVPacket *pkt); > > /** _______________________________________________ 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".