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 6131D49A28 for ; Sat, 27 Apr 2024 10:44:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EB3D368D292; Sat, 27 Apr 2024 13:44:29 +0300 (EEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2076.outbound.protection.outlook.com [40.92.75.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6ADEA68BDE1 for ; Sat, 27 Apr 2024 13:44:22 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fZfC4o5/gGiHVcXL4WS+npa/AY3Q+L814Paxr87fp2+gDYBDZKExdCUXvBU/Q3lXXiZ4IwZg2xEsQAu3lYOeaYJvPUOCQipmYbHeGmMpS9MiYasbx5mMb/i+yL5z5Z3QLFmtBYHLDyLzXbmjDOKbmoE10jX6on8AKhatW7aFk9zKJOR3Kt9BnmEx/kyr+L4+eRmNYHBBBgLXqCF+G526hpZUd18nbt/LQ2/xRa9eB+dDGE3BuBme/OpY2wiDWQWqkdoCOG5KWM74CSNdQz+8Ix2yU5BNuGy3h2ogfJVCYwttphrJhBwKh4qH01QciCSXJV+i4lJ6fd/DxsUe2A/sPA== 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=mdlDX8QNRSCF01CJ9jNhGyTua2J2NsS5ILW6b6nr5r4=; b=L9aDdc9v3ungaHus1z8y8/Bi5XhEHEysDmDKTndO3h3YXZDo80Lbp0hd1ZnjPe5BD4GW8D6jVOos9l+0oxAafAseRmaZr21WPe1ZH7fZjEGmsGlpbbqjMudr0z3BV25/J+LcYGUncacd+qsG07IFVZIE5ruXYB1i+COWJLXghAsKjQ997tbnUfy+vqMLg0WnPaKIvLQRhXb7YrEMDYcJiCqHoElDyQxeCkR7IGHAny/ZaFOWZTKe92t56Gwu2vAlULq/qtnmiBaONGO0TLcw2L4YngxwW7ICUeb2VyitA7lJ4aFczLAqVWdN0PTu+Ndl5RZUnsrUdtCseE9jTHUeIw== 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=mdlDX8QNRSCF01CJ9jNhGyTua2J2NsS5ILW6b6nr5r4=; b=lAiMzAMCOivHwSWPNdh49paCR6bSTX377zHMa91zQAjqFCRwQYIQVlW8mqb7txJuqJ3Y8e9aCvl8bGZLE2cyBvq/QEB3hm3KtQrlHXie2ym0cPTKXFNTSFQJJenS8PcEOddW23ttEozJ1xlgnE+qTv6eWfAx3zX5Onbed4ERWHZ+p79GrHYv9f4Jekvsa0jh0OHUQMEUndL2GjS282Eo+KJSMVUaaBOzhcEkc6drvhHpDVInS29POYN+tWP+HjjimyiFYztymS9toSuwo7FYWnKnk8N4BToaCF1zWquAeM2imgiBCH3kZeU20/DCHEY1TdCBvqcblN7MWBoheRqKhg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0097.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:170::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.31; Sat, 27 Apr 2024 10:44:20 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::1f29:8206:b8c3:45bb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::1f29:8206:b8c3:45bb%3]) with mapi id 15.20.7409.042; Sat, 27 Apr 2024 10:44:20 +0000 Message-ID: Date: Sat, 27 Apr 2024 12:44:18 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240427003623.118199-1-michael@niedermayer.cc> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20240427003623.118199-1-michael@niedermayer.cc> X-TMN: [C/xvRRwTNHuZVaPCu8QDtjksTANMGm84] X-ClientProxiedBy: ZR0P278CA0214.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::9) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <213e0bf3-f1d2-4821-a0ac-bd777b03f382@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0097:EE_ X-MS-Office365-Filtering-Correlation-Id: e78e3251-6c1a-4f6f-0f29-08dc66a6fec0 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199019|440099019|3412199016; X-Microsoft-Antispam-Message-Info: IV0Jxe0bacj85blI8OEkmHeixMsfU2G4rTrgmOJzyM+miIDcSIIyTnJ67anEjxWEq62SSG2pfbb1idp35h+j3L7uAp71y+Obn/KIB7hOdvDAbPkQS/+X/OlW0O8YhI6AryDG5ETZu3tqLd4P7WZ4QGSXVgOLETJaA2+elBi8kmTtyJNyfuGsq/7L4dMf66x4QQsM9fXVe8khFAS2fg4/z5B2wwnxPSIWDnZ4ywbLGS0tUmZ7s5ngQKPNCgmNxGE4NmUnCGqIV6ubh0x7DCDIySGRbZqU/5TnvNmOmE0CoCTEyWxGAgpZAhbgwX6UiPhizQon1dlOLnS2f3V+nV4M7P6sYO/F1laVYvpDO0LkuJbJ7x1qo9HyFuYqeXT2jRKhaVm5o2LFN4+uA4UrkCNxsFuQlyfiKYP0FWucgPtExkopE/6lI0cFUsfoSUCYibQ2cf///dJ57SC6NK/y8p7NdIXDEaFYPBLPqqY3IGikERCVxA0PL8ygrTZ+CK6k150P1ZBx0w668IB099QPUCzqjoL5jyd2579lYUU/6krYMBh8G9FbodTgoh31rT/J0ZWl X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ekptTk85RTE0VU1GbGNPeXlKMjI2NCswQ0RLaEVnMDA5MWNUeTBZYzFsenVX?= =?utf-8?B?V0RhYnV6SUMyZ1U1SjhvNmNpL014NElmdG9rSDNzSTk3N2Y0QXlVOFVlbERV?= =?utf-8?B?NWpvQ1FJSUEvd2FGWE4wNXVtdnM3RVRvVy8vSzFzZmVKS2llbE13RmJQZ2dx?= =?utf-8?B?L28rcFBVN0lQV0ZpV0lWVjlBNHkrbXQ2cGVpb3RMYjVmWFVDcFFnOXpwQTE3?= =?utf-8?B?QkRmQ3Qyb3BOelRQbFNzbGJ4ME0rVzVKTHVYcTZkYTMreTgxUUNkUzhQRDNi?= =?utf-8?B?SGJMU0NJMThrYk5zdzNIeHd2VlUvY3A4dlZObXpHOWs2NFNsVDRzNlprRDJX?= =?utf-8?B?Qyt3cTR4YTRzS3VDWk9uWVZqcHMyNHl4cGtBcGVCK1ZJUFRHM2lhTlpIMDRk?= =?utf-8?B?MWhCQ21XcnNWSE9lSVhSZWFRMW9KUkZlZEpxNmJ5VkQ5VEhGTjJ4RzJHM2t1?= =?utf-8?B?aVQwSytzOExVM2I3aEUydHgwMGNVRVpTNUkveFdxcy9nRFpVd09yQ3REL3NI?= =?utf-8?B?R3laR1ZqOVo0MmtkdkRyb0JENmJ4ajdzanZUZ09XdjBnVm1jVnQ4U3YyVEZt?= =?utf-8?B?dlFDMHQ4UkdwTCtmV3RpRHUvMmZWNFNMWVdTOXhrcmk0WllJVVVIeTREb0lU?= =?utf-8?B?TGdPWWtFRHNnTG5pYlFSQm1oeStvL3JnaklDOXE4Nmp4VkFwZ3RsbStvVEdV?= =?utf-8?B?TU40OTVqYy94Q2J3dm9Ib2FlZExtTU1tMUVCa0tWTjQ5VmZmNmU2a1ZYOVhY?= =?utf-8?B?b2Y1Z2JBMkNZQWR2b1kxYkpNK2tJMUluSFFWcy9US1ZLVGM2N3Y0a2w4UXk1?= =?utf-8?B?OTZNQzVVNFZKRzJaZzE4b01CK2l1MlU2WWJuNXhQVkRyc1p5djJTNzlLMWdL?= =?utf-8?B?bmdEb1g4MGxhUnZXTmJwc0lYL015bWJJWUtXQ2J3bHRKZkROYm53KzQ0TmZm?= =?utf-8?B?TXRCTjJWSlhzNmxYTmlRUjUwWU5VWjkvRWNwWC8yeXVQQzNiSU15VlM3ekhM?= =?utf-8?B?R2t2cDBpcERjVHpPZ1BXYy9ROER3ZW8zdTJxaWhHNHZIVG92cTFBQXJRakpF?= =?utf-8?B?WnBhZUhST2dkcWVrZ0JjcUcyS2EzNEIyQlFBbTRDSndmay9SNHM2Mk5vcjF6?= =?utf-8?B?RFNrNUNVM094azA0NXZ5VExIc2FONGJFclNQWm1yaFQva2J3OFBEMnRDYi9u?= =?utf-8?B?K1N0RE9ROHVlMDdteFg4N21NdUdUK2VnNlVpYjJ6N3NkWTZhZEJPUExNTndh?= =?utf-8?B?WVN2N0Z2QTdhbThRWENRMW5HQ0kwZ0tWbUtKK0wxVUV4NVJYM0pQYitGelJa?= =?utf-8?B?dWtoOUszNTF6TVRPR1dSbFR1UGJJR0pnMi9JelFiRk5ISUZYSWw3ZW1TcTUx?= =?utf-8?B?bnVDVG44MC93ZGsxcnZMVVdXQ3oyY2pGZCtyZTZOSmlBQWtvNmhGMFVrRmV5?= =?utf-8?B?RDdteFlCcWlOYmF5WXNOdzg3cG5tdWhYcWF0ZTBEQUsxcXg0cWNNNU9DNmF4?= =?utf-8?B?d1lXcFZZcUpLTEthU1BzY044UXNGWk1laXI5QWUwbUl0Nis0ME9FWEJYdWoz?= =?utf-8?B?QVUvRjNGaW94R1c1UzNYeWV4THNqcGhUNWNOU3kvNHdQd3pUeUtra2dWSElk?= =?utf-8?B?dVdVbDFmeFNFVHV1VER6bGR2WSs5ekRUZldCTjFLWWVGendidUdvMG5RT1NR?= =?utf-8?B?NWVzZm1vZ2ZHbWpIaFBSUGxzTzB1S09hbzhSQzdRUVc5SmVZOFBlUlF3PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e78e3251-6c1a-4f6f-0f29-08dc66a6fec0 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2024 10:44:20.6237 (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: PR3P250MB0097 Subject: Re: [FFmpeg-devel] [PATCH] avformat/framecrcenc: compute the checksum for 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: Michael Niedermayer: > This allows detecting issues in side data related code, same as what > framecrc does for before already for packet data itself. > > Signed-off-by: Michael Niedermayer > --- > libavformat/framecrcenc.c | 76 +- > tests/ref/fate/autorotate | 2 +- > tests/ref/fate/cover-art-mp3-id3v2-remux | 2 +- > tests/ref/fate/ffmpeg-bsf-input | 10 +- > tests/ref/fate/force_key_frames-source | 784 ++++++------ > tests/ref/fate/force_key_frames-source-drop | 34 +- > tests/ref/fate/force_key_frames-source-dup | 1224 +++++++++---------- > tests/ref/fate/gapless-mp3 | 6 +- > tests/ref/fate/h264_redundant_pps-side_data | 2 +- > tests/ref/fate/iamf-5_1-copy | 208 ++-- > tests/ref/fate/iamf-5_1-demux | 208 ++-- > tests/ref/fate/id3v2-priv-remux | 2 +- > tests/ref/fate/matroska-hdr10-plus-remux | 2 +- > tests/ref/fate/matroska-ogg-opus-remux | 2 +- > tests/ref/fate/matroska-opus-remux | 2 +- > tests/ref/fate/matroska-vp8-alpha-remux | 14 +- > tests/ref/fate/mov-cover-image | 2 +- > tests/ref/fate/segment-mp4-to-ts | 250 ++-- > tests/ref/fate/shortest | 100 +- > tests/ref/fate/webm-hdr10-plus-remux | 2 +- > tests/ref/fate/webm-webvtt-remux | 24 +- > 21 files changed, 1513 insertions(+), 1443 deletions(-) > > diff --git a/libavformat/framecrcenc.c b/libavformat/framecrcenc.c > index ce306a6c498..e71bfbd8777 100644 > --- a/libavformat/framecrcenc.c > +++ b/libavformat/framecrcenc.c > @@ -21,8 +21,10 @@ > > #include > > +#include "config.h" > #include "libavutil/adler32.h" > #include "libavutil/avstring.h" > +#include "libavutil/intreadwrite.h" > > #include "libavcodec/codec_id.h" > #include "libavcodec/codec_par.h" > @@ -48,6 +50,17 @@ static int framecrc_write_header(struct AVFormatContext *s) > return ff_framehash_write_header(s); > } > > +static av_unused void inline bswap(char *buf, int offset, int size) > +{ > + if (size == 8) { > + uint64_t val = AV_RN64(buf + offset); > + AV_WN64(buf + offset, av_bswap64(val)); > + } else if (size == 4) { > + uint32_t val = AV_RN32(buf + offset); > + AV_WN32(buf + offset, av_bswap32(val)); > + } > +} > + > static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) > { > uint32_t crc = av_adler32_update(0, pkt->data, pkt->size); > @@ -58,11 +71,68 @@ static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) > if (pkt->flags != AV_PKT_FLAG_KEY) > av_strlcatf(buf, sizeof(buf), ", F=0x%0X", pkt->flags); > if (pkt->side_data_elems) { > + int i; This change is wrong. > av_strlcatf(buf, sizeof(buf), ", S=%d", pkt->side_data_elems); > > - for (int i = 0; i < pkt->side_data_elems; i++) { > - av_strlcatf(buf, sizeof(buf), ", %8"SIZE_SPECIFIER, > - pkt->side_data[i].size); > + for (i=0; iside_data_elems; i++) { > + const AVPacketSideData *const sd = &pkt->side_data[i]; > + const uint8_t *data = sd->data; > + uint32_t side_data_crc = 0; > + > + switch (sd->type) { > +#if HAVE_BIGENDIAN > + uint8_t bswap_buf[FFMAX(sizeof(AVCPBProperties), > + sizeof(AVProducerReferenceTime))]; > + case AV_PKT_DATA_PALETTE: > + case AV_PKT_DATA_REPLAYGAIN: > + case AV_PKT_DATA_DISPLAYMATRIX: > + case AV_PKT_DATA_STEREO3D: > + case AV_PKT_DATA_AUDIO_SERVICE_TYPE: > + case AV_PKT_DATA_FALLBACK_TRACK: > + case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: > + case AV_PKT_DATA_SPHERICAL: > + case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: > + case AV_PKT_DATA_S12M_TIMECODE: > + for (size_t j = 0; j < sd->size / 4; j++) { > + uint8_t buf[4]; > + AV_WL32(buf, AV_RB32(sd->data + 4 * j)); > + side_data_crc = av_adler32_update(side_data_crc, buf, 4); > + } > + break; > + case AV_PKT_DATA_CPB_PROPERTIES: > +#define BSWAP(struct, field) bswap(bswap_buf, offsetof(struct, field), sizeof(((struct){0}).field)) > + if (sd->size == sizeof(AVCPBProperties)) { > + memcpy(bswap_buf, sd->data, sizeof(AVCPBProperties)); > + data = bswap_buf; > + BSWAP(AVCPBProperties, max_bitrate); > + BSWAP(AVCPBProperties, min_bitrate); > + BSWAP(AVCPBProperties, avg_bitrate); > + BSWAP(AVCPBProperties, buffer_size); > + BSWAP(AVCPBProperties, vbv_delay); > + } > + goto pod; > + case AV_PKT_DATA_PRFT: > + if (sd->size == sizeof(AVProducerReferenceTime)) { > + memcpy(bswap_buf, sd->data, sizeof(AVProducerReferenceTime)); > + data = bswap_buf; > + BSWAP(AVProducerReferenceTime, wallclock); > + BSWAP(AVProducerReferenceTime, flags); > + } > + goto pod; > + pod: > +#endif > + > + default: > + side_data_crc = av_adler32_update(0, data, sd->size); > + break; > + case AV_PKT_DATA_IAMF_MIX_GAIN_PARAM: > + case AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM: > + case AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM: > + side_data_crc = 0; > + } > + > + av_strlcatf(buf, sizeof(buf), ", %8"SIZE_SPECIFIER", 0x%08"PRIx32, > + pkt->side_data[i].size, side_data_crc); > } > } > av_strlcatf(buf, sizeof(buf), "\n"); You should mention that you are basically reverting c6ae560a18d67b9ddaa25a0338b7fb55e3312e57. - Andreas _______________________________________________ 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".