PR #23986 opened by Romain Beauxis (toots)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23986
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23986.patch

I'm having second thoughts on b0c702aec2 after reviewing 
https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23985. With iTunes using the 
`descr` field of `COMM` metadata, the pattern of placing `descr` as key will be 
more common that I thought.

With the current default, all these metadata round-trip as both `COMM` and 
custom `TXXX` metadata which is not practical not user-friendly.

The changes in the PR makes the legacy `descr` as key be opt-in so it can still 
be enabled in case legacy users want to keep them but it remains disabled by 
default and everything gets removed with the next major version bump.


From 0810b1c45feb987e3bcbed577c7d46f52de1bfc5 Mon Sep 17 00:00:00 2001
From: Romain Beauxis <[email protected]>
Date: Sun, 2 Aug 2026 12:48:45 -0500
Subject: [PATCH] Make legacy id3v2 COMMM descr-as-key behavior opt-in

---
 doc/APIchanges                                |  5 ++++
 libavformat/aacdec.c                          |  2 +-
 libavformat/avformat.h                        | 12 ++++++++
 libavformat/demux.c                           |  2 +-
 libavformat/hls.c                             |  2 +-
 libavformat/id3v2.c                           | 11 +++----
 libavformat/id3v2.h                           |  3 +-
 libavformat/mpegts.c                          |  2 +-
 libavformat/options_table.h                   |  3 ++
 libavformat/version.h                         |  4 +--
 tests/fate/id3v2.mak                          | 16 ++++++----
 tests/ref/fate/id3v2-comm-dashed-descriptor   |  2 --
 tests/ref/fate/id3v2-comm-descriptor          |  2 --
 tests/ref/fate/id3v2-comm-descriptor-no-lang  |  2 --
 .../fate/id3v2-comm-foo-lang-as-descriptor    |  2 --
 tests/ref/fate/id3v2-comm-invalid-lang        |  2 --
 tests/ref/fate/id3v2-comm-lang-as-descriptor  |  2 --
 tests/ref/fate/id3v2-comm-long-descriptor     |  2 --
 tests/ref/fate/id3v2-comm-multi-invalid-lang  |  2 --
 tests/ref/fate/id3v2-comm-sort                |  2 --
 tests/ref/fate/id3v2-comm-sort-               |  2 --
 tests/ref/fate/id3v2-comm-sort-eng            |  2 --
 .../ref/fate/id3v2-reenc-delete-metadata-keep |  6 ++--
 .../id3v2-reenc-delete-metadata-keep-format   |  6 ++--
 tests/ref/fate/id3v2-reenc-remux-keep         |  7 ++---
 tests/ref/fate/id3v2-wma-comm                 |  5 ----
 tests/ref/fate/id3v2-wma-comm-asf_o           |  5 ----
 tests/ref/fate/id3v2-wma-comm-legacy-keys     | 30 +++++++++++++++++++
 28 files changed, 82 insertions(+), 61 deletions(-)
 create mode 100644 tests/ref/fate/id3v2-wma-comm-legacy-keys

diff --git a/doc/APIchanges b/doc/APIchanges
index 7907af9290..38b81b968d 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,11 @@ The last version increases of all libraries were on 2026-06-23.
 
 API changes, most recent first:
 
+2026-08-xx - xxxxxxxxxx - lavf 63.6.100 - avformat.h
+  Add AVFMT_FLAG_LEGACY_ID3V2_COMM_KEYS. The deprecated export of id3v2 COMM
+  descriptors as bare metadata tag names is now opt-in through this flag,
+  only the <tag>-<description>-<lang> tag is exported by default.
+
 2026-07-04 - xxxxxxxxxx - lavc 63.7.100 - codec_id.h
   Add AV_CODEC_ID_PCM_DVDA.
 
diff --git a/libavformat/aacdec.c b/libavformat/aacdec.c
index fef3c69f0b..bf2a04d091 100644
--- a/libavformat/aacdec.c
+++ b/libavformat/aacdec.c
@@ -147,7 +147,7 @@ static int handle_id3(AVFormatContext *s, AVPacket *pkt)
         return ret;
 
     ffio_init_read_context(&pb, pkt->data, pkt->size);
-    ff_id3v2_read_dict(&pb.pub, &metadata, ID3v2_DEFAULT_MAGIC, 
&id3v2_extra_meta);
+    ff_id3v2_read_dict(s, &pb.pub, &metadata, ID3v2_DEFAULT_MAGIC, 
&id3v2_extra_meta);
     if ((ret = ff_id3v2_parse_priv_dict(&metadata, id3v2_extra_meta)) < 0)
         goto error;
 
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index d4f10122e6..575d046dd1 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1505,6 +1505,18 @@ typedef struct AVFormatContext {
 #define AVFMT_FLAG_FAST_SEEK   0x80000 ///< Enable fast, but inaccurate seeks 
for some formats
 #define AVFMT_FLAG_AUTO_BSF   0x200000 ///< Add bitstream filters as requested 
by the muxer
 
+#if FF_API_OLD_ID3V2_COMMENT
+/**
+ * Also export ID3v2 COMM frames with a non-empty descriptor under the
+ * descriptor as metadata key, next to the "comment-<descriptor>-<lang>" key.
+ *
+ * @deprecated the bare descriptor key is ambiguous: a descriptor matching a
+ * known tag name (e.g. "album") is written back as that tag. Use the
+ * "comment-<descriptor>-<lang>" key instead.
+ */
+#define AVFMT_FLAG_LEGACY_ID3V2_COMM_KEYS 0x400000
+#endif
+
     /**
      * Maximum number of bytes read from input in order to determine stream
      * properties. Used when reading the global header and in
diff --git a/libavformat/demux.c b/libavformat/demux.c
index 193fd17739..c20c222954 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -317,7 +317,7 @@ int avformat_open_input(AVFormatContext **ps, const char 
*filename,
 
     /* e.g. AVFMT_NOFILE formats will not have an AVIOContext */
     if (s->pb && is_id3v2_format(s->iformat))
-        ff_id3v2_read_dict(s->pb, &si->id3v2_meta, ID3v2_DEFAULT_MAGIC, 
&id3v2_extra_meta);
+        ff_id3v2_read_dict(s, s->pb, &si->id3v2_meta, ID3v2_DEFAULT_MAGIC, 
&id3v2_extra_meta);
 
     if (ffifmt(s->iformat)->read_header)
         if ((ret = ffifmt(s->iformat)->read_header(s)) < 0) {
diff --git a/libavformat/hls.c b/libavformat/hls.c
index e8533aa93f..1c3c6c887f 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -1240,7 +1240,7 @@ static void parse_id3(AVFormatContext *s, AVIOContext *pb,
     static const char id3_priv_owner_audio_setup[] = 
"com.apple.streaming.audioDescription";
     ID3v2ExtraMeta *meta;
 
-    ff_id3v2_read_dict(pb, metadata, ID3v2_DEFAULT_MAGIC, extra_meta);
+    ff_id3v2_read_dict(s, pb, metadata, ID3v2_DEFAULT_MAGIC, extra_meta);
     for (meta = *extra_meta; meta; meta = meta->next) {
         if (!strcmp(meta->tag, "PRIV")) {
             ID3v2ExtraMetaPRIV *priv = &meta->data.priv;
diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c
index ad670052ff..5ae931da9b 100644
--- a/libavformat/id3v2.c
+++ b/libavformat/id3v2.c
@@ -426,10 +426,11 @@ static void read_lang_descr_tag(AVFormatContext *s, 
AVIOContext *pb,
 
     if (descriptor && *descriptor) {
 #if FF_API_OLD_ID3V2_COMMENT
-        if (!strcmp(key, "comment")) {
+        if (s && (s->flags & AVFMT_FLAG_LEGACY_ID3V2_COMM_KEYS) &&
+            !strcmp(key, "comment")) {
             av_log(s, AV_LOG_WARNING,
-                   "Deprecated: COMM descriptor '%s' used as metadata key. "
-                   "This will change in a future version.\n", descriptor);
+                   "Deprecated: COMM descriptor '%s' exported as metadata key. 
"
+                   "This will be removed in a future version.\n", descriptor);
             av_dict_set(metadata, (const char *)descriptor, (const char *)dst,
                         AV_DICT_DONT_OVERWRITE);
         }
@@ -1170,10 +1171,10 @@ static void id3v2_read_internal(AVIOContext *pb, 
AVDictionary **metadata,
         *extra_metap = extra_meta.head;
 }
 
-void ff_id3v2_read_dict(AVIOContext *pb, AVDictionary **metadata,
+void ff_id3v2_read_dict(AVFormatContext *s, AVIOContext *pb, AVDictionary 
**metadata,
                         const char *magic, ID3v2ExtraMeta **extra_meta)
 {
-    id3v2_read_internal(pb, metadata, NULL, magic, extra_meta, 0);
+    id3v2_read_internal(pb, metadata, s, magic, extra_meta, 0);
 }
 
 void ff_id3v2_read(AVFormatContext *s, const char *magic,
diff --git a/libavformat/id3v2.h b/libavformat/id3v2.h
index 9afa5a2ddc..c55cf52128 100644
--- a/libavformat/id3v2.h
+++ b/libavformat/id3v2.h
@@ -110,11 +110,12 @@ int ff_id3v2_tag_len(const uint8_t *buf);
 /**
  * Read an ID3v2 tag into specified dictionary and retrieve supported extra 
metadata.
  *
+ * @param s Used for logging and for reading demuxer options, may be NULL
  * @param metadata Parsed metadata is stored here
  * @param[out] extra_meta If not NULL, extra metadata is parsed into a list of
  * ID3v2ExtraMeta structs and *extra_meta points to the head of the list
  */
-void ff_id3v2_read_dict(AVIOContext *pb, AVDictionary **metadata, const char 
*magic, ID3v2ExtraMeta **extra_meta);
+void ff_id3v2_read_dict(AVFormatContext *s, AVIOContext *pb, AVDictionary 
**metadata, const char *magic, ID3v2ExtraMeta **extra_meta);
 
 /**
  * Read an ID3v2 tag, including supported extra metadata.
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 076020509d..8d21980089 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -1048,7 +1048,7 @@ static int timed_id3_update_metadata(AVStream *s, 
AVPacket *pkt)
     int ret = 0;
 
     ffio_init_read_context(&id3_buf, pkt->data, pkt->size);
-    ff_id3v2_read_dict(&id3_buf.pub, &metadata, ID3v2_DEFAULT_MAGIC, 
&extra_meta);
+    ff_id3v2_read_dict(NULL, &id3_buf.pub, &metadata, ID3v2_DEFAULT_MAGIC, 
&extra_meta);
     ret = ff_id3v2_parse_priv_dict(&metadata, extra_meta);
     ff_id3v2_free_extra_meta(&extra_meta);
 
diff --git a/libavformat/options_table.h b/libavformat/options_table.h
index 915c553f54..537870c5c9 100644
--- a/libavformat/options_table.h
+++ b/libavformat/options_table.h
@@ -52,6 +52,9 @@ static const AVOption avformat_options[] = {
 {"nobuffer", "reduce the latency introduced by optional buffering", 0, 
AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOBUFFER }, 0, INT_MAX, D, .unit = 
"fflags"},
 {"bitexact", "do not write random/volatile data", 0, AV_OPT_TYPE_CONST, { .i64 
= AVFMT_FLAG_BITEXACT }, 0, 0, E, .unit = "fflags" },
 {"autobsf", "add needed bsfs automatically", 0, AV_OPT_TYPE_CONST, { .i64 = 
AVFMT_FLAG_AUTO_BSF }, 0, 0, E, .unit = "fflags" },
+#if FF_API_OLD_ID3V2_COMMENT
+{"legacy_id3v2_comm_keys", "also export id3v2 COMM descriptors as bare 
metadata keys", 0, AV_OPT_TYPE_CONST, { .i64 = 
AVFMT_FLAG_LEGACY_ID3V2_COMM_KEYS }, 0, 0, D|AV_OPT_FLAG_DEPRECATED, .unit = 
"fflags" },
+#endif
 {"seek2any", "allow seeking to non-keyframes on demuxer level when supported", 
OFFSET(seek2any), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, D},
 {"analyzeduration", "specify how many microseconds are analyzed to probe the 
input", OFFSET(max_analyze_duration), AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, 
(double)INT64_MAX, D},
 {"cryptokey", "decryption key", OFFSET(key), AV_OPT_TYPE_BINARY, {.dbl = 0}, 
0, 0, D},
diff --git a/libavformat/version.h b/libavformat/version.h
index 384cbd49cc..4bde82abb4 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -31,8 +31,8 @@
 
 #include "version_major.h"
 
-#define LIBAVFORMAT_VERSION_MINOR   5
-#define LIBAVFORMAT_VERSION_MICRO 101
+#define LIBAVFORMAT_VERSION_MINOR   6
+#define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                LIBAVFORMAT_VERSION_MINOR, \
diff --git a/tests/fate/id3v2.mak b/tests/fate/id3v2.mak
index 4bde6225b1..5dafe8213f 100644
--- a/tests/fate/id3v2.mak
+++ b/tests/fate/id3v2.mak
@@ -48,7 +48,7 @@ FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += 
fate-id3v2-reenc-delet
 fate-id3v2-reenc-delete-metadata: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -t 0.1" 
"-c copy -t 0.1" "-show_entries format_tags" "" "" "" null
 
 FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += 
fate-id3v2-reenc-delete-metadata-keep
-fate-id3v2-reenc-delete-metadata-keep: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact 
-keep_metadata iTunSMPB -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" 
"" "" null
+fate-id3v2-reenc-delete-metadata-keep: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact 
-keep_metadata comment-iTunSMPB-eng -t 0.1" "-c copy -t 0.1" "-show_entries 
format_tags" "" "" "" null
 
 # -map_metadata must not bypass stale metadata pruning
 FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += 
fate-id3v2-reenc-delete-metadata-map-metadata
@@ -56,11 +56,11 @@ fate-id3v2-reenc-delete-metadata-map-metadata: CMD = 
transcode mp3 $(TARGET_SAMP
 
 # :g specifier targets format metadata — iTunSMPB lives there, so it should be 
kept
 FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += 
fate-id3v2-reenc-delete-metadata-keep-format
-fate-id3v2-reenc-delete-metadata-keep-format: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact 
-keep_metadata:g iTunSMPB -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" 
"" "" "" null
+fate-id3v2-reenc-delete-metadata-keep-format: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact 
-keep_metadata:g comment-iTunSMPB-eng -t 0.1" "-c copy -t 0.1" "-show_entries 
format_tags" "" "" "" null
 
 # :s:a specifier targets stream metadata — iTunSMPB is format-level, so it 
should still be deleted
 FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += 
fate-id3v2-reenc-delete-metadata-keep-stream
-fate-id3v2-reenc-delete-metadata-keep-stream: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact 
-keep_metadata:s:a iTunSMPB -t 0.1" "-c copy -t 0.1" "-show_entries 
format_tags" "" "" "" null
+fate-id3v2-reenc-delete-metadata-keep-stream: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact 
-keep_metadata:s:a comment-iTunSMPB-eng -t 0.1" "-c copy -t 0.1" "-show_entries 
format_tags" "" "" "" null
 
 FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, MP3) += fate-id3v2-reenc-remux-keep
 fate-id3v2-reenc-remux-keep: CMD = transcode mp3 
$(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 mp3 "-c copy" "-c copy -t 0.1" 
"-show_entries format_tags" "" "" "" null
@@ -73,15 +73,19 @@ fate-id3v2-chapters: CMD = transcode wav 
$(TARGET_SAMPLES)/wav/200828-005.wav ai
 FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, AIFF, WAV_DEMUXER FLAC_DEMUXER 
PCM_S16LE_DECODER MJPEG_DECODER ARESAMPLE_FILTER CHANNELMAP_FILTER 
PCM_S24BE_ENCODER) += fate-id3v2-utf16-bom
 fate-id3v2-utf16-bom: CMD = transcode wav 
$(TARGET_SAMPLES)/audio-reference/yo.raw-short.wav aiff "-map 0:a -map 1:v -af 
aresample,channelmap=channel_layout=hexagonal,aresample -c:a pcm_s24be -c:v 
copy -write_id3v2 1 -id3v2_version 3 -map_metadata:g:0 1:g -map_metadata:s:v 
1:g" "-c copy -t 0.05" "-show_entries 
stream=channel_layout:stream_tags:format_tags" "-i 
$(TARGET_SAMPLES)/cover_art/cover_art.flac"
 
-# Test legacy COMM descriptor behavior: non-empty descriptor becomes the key.
-# MusicMatch tools embed artist bio etc. this way.
+# Test COMM frames with a non-empty descriptor. MusicMatch tools embed artist
+# bio etc. this way.
 FATE_ID3V2_FFPROBE-$(CONFIG_ASF_DEMUXER) += fate-id3v2-wma-comm
 fate-id3v2-wma-comm: CMD = probetags 
$(TARGET_SAMPLES)/cover_art/wma_with_ID3_APIC_trimmed.wma
 
 FATE_ID3V2_FFPROBE-$(CONFIG_ASF_O_DEMUXER) += fate-id3v2-wma-comm-asf_o
 fate-id3v2-wma-comm-asf_o: CMD = probetags -f asf_o 
$(TARGET_SAMPLES)/cover_art/wma_with_ID3_APIC_trimmed.wma
 
-# Round-trip: write COMM with descriptor, read back (legacy: descriptor as 
key).
+# Same file with the deprecated descriptor-as-key export enabled.
+FATE_ID3V2_FFPROBE-$(CONFIG_ASF_DEMUXER) += fate-id3v2-wma-comm-legacy-keys
+fate-id3v2-wma-comm-legacy-keys: CMD = probetags -fflags 
+legacy_id3v2_comm_keys 
$(TARGET_SAMPLES)/cover_art/wma_with_ID3_APIC_trimmed.wma
+
+# Round-trip: write COMM with descriptor, read back.
 FATE_ID3V2_RAW-$(call REMUX, MP3) += fate-id3v2-comm-descriptor
 fate-id3v2-comm-descriptor: $(ID3V2_TESTBIN)
 fate-id3v2-comm-descriptor: CMD = run_with_temp "$(FFMPEG) -nostdin 
-hide_banner -loglevel error -i $(TARGET_SAMPLES)/id3v2/id3v2_priv.mp3 
-map_metadata -1 -c copy -fflags +bitexact -metadata 
comment-MusicMatch_Bio-eng=test -f mp3 -y" "$(ID3V2_TESTBIN)" mp3
diff --git a/tests/ref/fate/id3v2-comm-dashed-descriptor 
b/tests/ref/fate/id3v2-comm-dashed-descriptor
index 74fdb60f16..d9e925a626 100644
--- a/tests/ref/fate/id3v2-comm-dashed-descriptor
+++ b/tests/ref/fate/id3v2-comm-dashed-descriptor
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (17 bytes):|.engFoo-Bar.test.|
-Deprecated: COMM descriptor 'Foo-Bar' used as metadata key. This will change 
in a future version.
-Foo-Bar=test
 comment-Foo-Bar-eng=test
diff --git a/tests/ref/fate/id3v2-comm-descriptor 
b/tests/ref/fate/id3v2-comm-descriptor
index 456de11b2a..7cf5e6d6fc 100644
--- a/tests/ref/fate/id3v2-comm-descriptor
+++ b/tests/ref/fate/id3v2-comm-descriptor
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (24 bytes):|.engMusicMatch_Bio.test.|
-Deprecated: COMM descriptor 'MusicMatch_Bio' used as metadata key. This will 
change in a future version.
-MusicMatch_Bio=test
 comment-MusicMatch_Bio-eng=test
diff --git a/tests/ref/fate/id3v2-comm-descriptor-no-lang 
b/tests/ref/fate/id3v2-comm-descriptor-no-lang
index 25f68957e6..dd5fda4b28 100644
--- a/tests/ref/fate/id3v2-comm-descriptor-no-lang
+++ b/tests/ref/fate/id3v2-comm-descriptor-no-lang
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (24 bytes):|.undMusicMatch_Bio.test.|
-Deprecated: COMM descriptor 'MusicMatch_Bio' used as metadata key. This will 
change in a future version.
-MusicMatch_Bio=test
 comment-MusicMatch_Bio=test
diff --git a/tests/ref/fate/id3v2-comm-foo-lang-as-descriptor 
b/tests/ref/fate/id3v2-comm-foo-lang-as-descriptor
index 50259571e6..e75f962918 100644
--- a/tests/ref/fate/id3v2-comm-foo-lang-as-descriptor
+++ b/tests/ref/fate/id3v2-comm-foo-lang-as-descriptor
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (17 bytes):|.undfoo-eng.test.|
-Deprecated: COMM descriptor 'foo-eng' used as metadata key. This will change 
in a future version.
-foo-eng=test
 comment-foo-eng-und=test
diff --git a/tests/ref/fate/id3v2-comm-invalid-lang 
b/tests/ref/fate/id3v2-comm-invalid-lang
index 354b063378..cdcbfadcb7 100644
--- a/tests/ref/fate/id3v2-comm-invalid-lang
+++ b/tests/ref/fate/id3v2-comm-invalid-lang
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (13 bytes):|.undxyz.test.|
-Deprecated: COMM descriptor 'xyz' used as metadata key. This will change in a 
future version.
-xyz=test
 comment-xyz=test
diff --git a/tests/ref/fate/id3v2-comm-lang-as-descriptor 
b/tests/ref/fate/id3v2-comm-lang-as-descriptor
index 1b58d6ea5a..85e7ccd727 100644
--- a/tests/ref/fate/id3v2-comm-lang-as-descriptor
+++ b/tests/ref/fate/id3v2-comm-lang-as-descriptor
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (13 bytes):|.undeng.test.|
-Deprecated: COMM descriptor 'eng' used as metadata key. This will change in a 
future version.
-eng=test
 comment-eng-und=test
diff --git a/tests/ref/fate/id3v2-comm-long-descriptor 
b/tests/ref/fate/id3v2-comm-long-descriptor
index 722b5edfbd..94eab2aa7c 100644
--- a/tests/ref/fate/id3v2-comm-long-descriptor
+++ b/tests/ref/fate/id3v2-comm-long-descriptor
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (16 bytes):|.undfoobar.test.|
-Deprecated: COMM descriptor 'foobar' used as metadata key. This will change in 
a future version.
-foobar=test
 comment-foobar=test
diff --git a/tests/ref/fate/id3v2-comm-multi-invalid-lang 
b/tests/ref/fate/id3v2-comm-multi-invalid-lang
index 5164002f18..541029e9d4 100644
--- a/tests/ref/fate/id3v2-comm-multi-invalid-lang
+++ b/tests/ref/fate/id3v2-comm-multi-invalid-lang
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (18 bytes):|.unddesc-xyz.test.|
-Deprecated: COMM descriptor 'desc-xyz' used as metadata key. This will change 
in a future version.
-desc-xyz=test
 comment-desc-xyz=test
diff --git a/tests/ref/fate/id3v2-comm-sort b/tests/ref/fate/id3v2-comm-sort
index 7a4ee1441f..5682bba540 100644
--- a/tests/ref/fate/id3v2-comm-sort
+++ b/tests/ref/fate/id3v2-comm-sort
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (14 bytes):|.undsort.test.|
-Deprecated: COMM descriptor 'sort' used as metadata key. This will change in a 
future version.
-sort=test
 comment-sort=test
diff --git a/tests/ref/fate/id3v2-comm-sort- b/tests/ref/fate/id3v2-comm-sort-
index 7a4ee1441f..5682bba540 100644
--- a/tests/ref/fate/id3v2-comm-sort-
+++ b/tests/ref/fate/id3v2-comm-sort-
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (14 bytes):|.undsort.test.|
-Deprecated: COMM descriptor 'sort' used as metadata key. This will change in a 
future version.
-sort=test
 comment-sort=test
diff --git a/tests/ref/fate/id3v2-comm-sort-eng 
b/tests/ref/fate/id3v2-comm-sort-eng
index 01a1f6ba1c..0db7a899fa 100644
--- a/tests/ref/fate/id3v2-comm-sort-eng
+++ b/tests/ref/fate/id3v2-comm-sort-eng
@@ -1,4 +1,2 @@
 ID3v2 frame COMM (14 bytes):|.engsort.test.|
-Deprecated: COMM descriptor 'sort' used as metadata key. This will change in a 
future version.
-sort=test
 comment-sort-eng=test
diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata-keep 
b/tests/ref/fate/id3v2-reenc-delete-metadata-keep
index 2ccb64a380..bd9de3162a 100644
--- a/tests/ref/fate/id3v2-reenc-delete-metadata-keep
+++ b/tests/ref/fate/id3v2-reenc-delete-metadata-keep
@@ -1,6 +1,6 @@
-db828221356fb78b3fe2990c717672b8 
*tests/data/fate/id3v2-reenc-delete-metadata-keep.nut
-1697 tests/data/fate/id3v2-reenc-delete-metadata-keep.nut
+079ae9bb4ea16f93ac992cd988da0fbc 
*tests/data/fate/id3v2-reenc-delete-metadata-keep.nut
+1709 tests/data/fate/id3v2-reenc-delete-metadata-keep.nut
 [FORMAT]
 TAG:title=7rk
-TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 
00000000 00000000 00000000 00000000 00000000 00000000
+TAG:comment-iTunSMPB-eng= 00000000 00000210 0000086A 0000000000066486 00000000 
0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000
 [/FORMAT]
diff --git a/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format 
b/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
index c96b381876..d146b6a1e5 100644
--- a/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
+++ b/tests/ref/fate/id3v2-reenc-delete-metadata-keep-format
@@ -1,6 +1,6 @@
-db828221356fb78b3fe2990c717672b8 
*tests/data/fate/id3v2-reenc-delete-metadata-keep-format.nut
-1697 tests/data/fate/id3v2-reenc-delete-metadata-keep-format.nut
+079ae9bb4ea16f93ac992cd988da0fbc 
*tests/data/fate/id3v2-reenc-delete-metadata-keep-format.nut
+1709 tests/data/fate/id3v2-reenc-delete-metadata-keep-format.nut
 [FORMAT]
 TAG:title=7rk
-TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 
00000000 00000000 00000000 00000000 00000000 00000000
+TAG:comment-iTunSMPB-eng= 00000000 00000210 0000086A 0000000000066486 00000000 
0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000
 [/FORMAT]
diff --git a/tests/ref/fate/id3v2-reenc-remux-keep 
b/tests/ref/fate/id3v2-reenc-remux-keep
index f005e6a420..63de286bee 100644
--- a/tests/ref/fate/id3v2-reenc-remux-keep
+++ b/tests/ref/fate/id3v2-reenc-remux-keep
@@ -1,12 +1,9 @@
-3183f143906fd8064f574448f26a50e6 *tests/data/fate/id3v2-reenc-remux-keep.mp3
-192351 tests/data/fate/id3v2-reenc-remux-keep.mp3
+2b846fc3fd4b5fbb0cd97113b72e7ce6 *tests/data/fate/id3v2-reenc-remux-keep.mp3
+192081 tests/data/fate/id3v2-reenc-remux-keep.mp3
 [FORMAT]
 TAG:title=7rk
-TAG:iTunPGAP=0
 TAG:comment-iTunPGAP-eng=0
 TAG:encoded_by=iTunes 12.7.0.166
-TAG:iTunNORM= 00000362 000004C0 0000308F 00003CC5 00000DAC 00000DAC 00007D14 
00007AC9 000007C1 0000175E
 TAG:comment-iTunNORM-eng= 00000362 000004C0 0000308F 00003CC5 00000DAC 
00000DAC 00007D14 00007AC9 000007C1 0000175E
-TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 
00000000 00000000 00000000 00000000 00000000 00000000
 TAG:comment-iTunSMPB-eng= 00000000 00000210 0000086A 0000000000066486 00000000 
0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000
 [/FORMAT]
diff --git a/tests/ref/fate/id3v2-wma-comm b/tests/ref/fate/id3v2-wma-comm
index e2f19f5077..21f009d82b 100644
--- a/tests/ref/fate/id3v2-wma-comm
+++ b/tests/ref/fate/id3v2-wma-comm
@@ -10,16 +10,11 @@ TAG:album=Tombé du Ciel
 TAG:genre=Inconnu
 TAG:comment-eng=
 TAG:lyrics-eng=
-TAG:MusicMatch_Bio=
 TAG:comment-MusicMatch_Bio-eng=
 TAG:TLEN=286000
-TAG:MusicMatch_Tempo=
 TAG:comment-MusicMatch_Tempo-eng=
-TAG:MusicMatch_Mood=
 TAG:comment-MusicMatch_Mood-eng=
-TAG:MusicMatch_Preference=
 TAG:comment-MusicMatch_Preference-eng=
-TAG:MusicMatch_Situation=
 TAG:comment-MusicMatch_Situation-eng=
 TAG:track=5
 TAG:composer=Jacques Higelin
diff --git a/tests/ref/fate/id3v2-wma-comm-asf_o 
b/tests/ref/fate/id3v2-wma-comm-asf_o
index 5d8e02aac6..e5751ba3f1 100644
--- a/tests/ref/fate/id3v2-wma-comm-asf_o
+++ b/tests/ref/fate/id3v2-wma-comm-asf_o
@@ -12,16 +12,11 @@ TAG:album=Tombé du Ciel
 TAG:genre=Inconnu
 TAG:comment-eng=
 TAG:lyrics-eng=
-TAG:MusicMatch_Bio=
 TAG:comment-MusicMatch_Bio-eng=
 TAG:TLEN=286000
-TAG:MusicMatch_Tempo=
 TAG:comment-MusicMatch_Tempo-eng=
-TAG:MusicMatch_Mood=
 TAG:comment-MusicMatch_Mood-eng=
-TAG:MusicMatch_Preference=
 TAG:comment-MusicMatch_Preference-eng=
-TAG:MusicMatch_Situation=
 TAG:comment-MusicMatch_Situation-eng=
 TAG:WM/TrackNumber=5
 TAG:WM/Composer=Jacques Higelin
diff --git a/tests/ref/fate/id3v2-wma-comm-legacy-keys 
b/tests/ref/fate/id3v2-wma-comm-legacy-keys
new file mode 100644
index 0000000000..e2f19f5077
--- /dev/null
+++ b/tests/ref/fate/id3v2-wma-comm-legacy-keys
@@ -0,0 +1,30 @@
+[FORMAT]
+TAG:title=Piste 5
+TAG:artist=Higelin
+TAG:WM/Track=4
+TAG:WMFSDKVersion=8.00.00.4477
+TAG:WMFSDKNeeded=0.0.0.0000
+TAG:WM/GenreID=Inconnu
+TAG:track=00
+TAG:album=Tombé du Ciel
+TAG:genre=Inconnu
+TAG:comment-eng=
+TAG:lyrics-eng=
+TAG:MusicMatch_Bio=
+TAG:comment-MusicMatch_Bio-eng=
+TAG:TLEN=286000
+TAG:MusicMatch_Tempo=
+TAG:comment-MusicMatch_Tempo-eng=
+TAG:MusicMatch_Mood=
+TAG:comment-MusicMatch_Mood-eng=
+TAG:MusicMatch_Preference=
+TAG:comment-MusicMatch_Preference-eng=
+TAG:MusicMatch_Situation=
+TAG:comment-MusicMatch_Situation-eng=
+TAG:track=5
+TAG:composer=Jacques Higelin
+TAG:WM/EncodingTime=127518048290000000
+TAG:album_artist=Jacques Higelin
+TAG:WM/Provider=User Feedback
+TAG:creation_time=2003-03-23T11:52:22.967000Z
+[/FORMAT]
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to