Add FATE tests for stale metadata during re-encoding.

This commit is contained in:
Romain Beauxis
2026-05-13 20:55:55 -07:00
committed by Romain Beauxis
parent 6179982c9c
commit c1be9b4a81
13 changed files with 169 additions and 0 deletions

View File

@@ -22,6 +22,16 @@ FATE_ID3V2_RAW-$(call REMUX, MP3) += fate-id3v2-txxx
fate-id3v2-txxx: $(ID3V2_TESTBIN)
fate-id3v2-txxx: 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 foobar=baz -f mp3 -y" "$(ID3V2_TESTBIN)" mp3
FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata
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
# -map_metadata must not bypass stale metadata pruning
FATE_ID3V2_FFMPEG_FFPROBE-$(call ENCDEC, AAC MP3, NUT) += fate-id3v2-reenc-delete-metadata-map-metadata
fate-id3v2-reenc-delete-metadata-map-metadata: CMD = transcode mp3 $(TARGET_SAMPLES)/gapless/gapless-itunes.mp3 nut "-c:a aac -bitexact -map_metadata 0 -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
FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, AIFF, WAV_DEMUXER) += fate-id3v2-chapters
fate-id3v2-chapters: CMD = transcode wav $(TARGET_SAMPLES)/wav/200828-005.wav aiff "-c copy -metadata:c:0 description=foo -metadata:c:0 date=2021 -metadata:c copyright=none -metadata:c:1 genre=nonsense -write_id3v2 1" "-c copy -t 0.05" "-show_entries format_tags:chapters"

View File

@@ -297,6 +297,21 @@ fate-matroska-side-data-pref-packet: CMD = run ffprobe$(PROGSSUF)$(EXESUF) $(TAR
-select_streams v:0 -show_streams -show_frames -show_entries stream=stream_side_data:frame=frame_side_data_list -side_data_prefer_packet mastering_display_metadata,content_light_level
FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER HEVC_DECODER) += fate-matroska-side-data-pref-codec fate-matroska-side-data-pref-packet
FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata
fate-matroska-reenc-delete-metadata: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null
# -metadata:s:a:0 specifier must not suppress deletion on a non-matching (video) stream
FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-spec-scope
fate-matroska-reenc-delete-metadata-spec-scope: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -metadata:s:a:0 NUMBER_OF_BYTES=custom" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null
# stale stream tags must be pruned even for filter outputs (no ost->ist)
FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-delete-metadata-filter-output
fate-matroska-reenc-delete-metadata-filter-output: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-filter_complex '[0:v]scale=iw:ih[v]' -map '[v]' -c:v mpeg2video -bitexact -map_metadata:s:v 0:s:v" "-c copy -t 0.1" "-show_entries stream_tags" "" "" "" null
# chapter metadata is not filtered on re-encode; NUMBER_OF_FRAMES must survive
FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO HEVC, NUT MATROSKA, SCALE_FILTER) += fate-matroska-reenc-chapter-nofilter
fate-matroska-reenc-chapter-nofilter: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/hdr10tags-both.mkv nut "-map 0:v:0 -vf scale=iw:ih -c:v mpeg2video -bitexact -metadata:c:0 NUMBER_OF_FRAMES=test" "-c copy -t 0.1" "-show_entries chapter_tags" "" "" "" null
FATE_SAMPLES_AVCONV += $(FATE_MATROSKA-yes)
FATE_SAMPLES_FFPROBE += $(FATE_MATROSKA_FFPROBE-yes)
FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MATROSKA_FFMPEG_FFPROBE-yes)

View File

@@ -381,6 +381,18 @@ FATE_MOV_FFMPEG_SAMPLES-$(call REMUX, MP4 MOV, AAC_PARSER) \
+= fate-mov-mp4-edst-remainder
fate-mov-mp4-edst-remainder: CMD = stream_remux mov $(TARGET_SAMPLES)/audiomatch/tones_fdkaac_44100_stereo_aac_lc.m4a "" mp4 "" "" "-c:a copy"
# format-level branding: major_brand, minor_version, compatible_brands should be deleted on re-encode
FATE_MOV_FFMPEG_FFPROBE-$(call ENCDEC, AAC AAC, NUT MOV) += fate-mov-reenc-delete-format-metadata
fate-mov-reenc-delete-format-metadata: CMD = transcode mov $(TARGET_SAMPLES)/cover_art/Owner-iTunes_9.0.3.15.m4a nut "-map 0:a:0 -c:a aac -bitexact -t 0.1" "-c copy -t 0.1" "-show_entries format_tags" "" "" "" null
# stream-level branding: vendor_id should be deleted on re-encode
FATE_MOV_FFMPEG_FFPROBE-$(call ENCDEC, FLAC PCM_S16BE, NUT MOV) += fate-mov-reenc-delete-stream-metadata
fate-mov-reenc-delete-stream-metadata: CMD = transcode mov $(TARGET_SAMPLES)/qt-surge-suite/surge-2-16-B-twos.mov nut "-c:a flac -bitexact -t 0.1" "-c copy -t 0.1" "-show_entries stream_tags" "" "" "" null
# plain -metadata (global scope) must not suppress stream-level vendor_id pruning
FATE_MOV_FFMPEG_FFPROBE-$(call ENCDEC, FLAC PCM_S16BE, NUT MOV) += fate-mov-reenc-delete-stream-metadata-global-tag
fate-mov-reenc-delete-stream-metadata-global-tag: CMD = transcode mov $(TARGET_SAMPLES)/qt-surge-suite/surge-2-16-B-twos.mov nut "-c:a flac -bitexact -t 0.1 -metadata vendor_id=custom" "-c copy -t 0.1" "-show_entries format_tags:stream_tags" "" "" "" null
FATE_FFMPEG += $(FATE_MOV_FFMPEG-yes)
FATE_FFMPEG_FFPROBE += $(FATE_MOV_FFMPEG_FFPROBE-yes)

View File

@@ -0,0 +1,9 @@
9b854b7dbe3fb779cd75f131e52372b0 *tests/data/fate/id3v2-reenc-delete-metadata.nut
2667 tests/data/fate/id3v2-reenc-delete-metadata.nut
[FORMAT]
TAG:title=7rk
TAG:iTunPGAP=0
TAG:encoded_by=iTunes 12.7.0.166
TAG:iTunNORM= 00000362 000004C0 0000308F 00003CC5 00000DAC 00000DAC 00007D14 00007AC9 000007C1 0000175E
TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000
[/FORMAT]

View File

@@ -0,0 +1,9 @@
9b854b7dbe3fb779cd75f131e52372b0 *tests/data/fate/id3v2-reenc-delete-metadata-map-metadata.nut
2667 tests/data/fate/id3v2-reenc-delete-metadata-map-metadata.nut
[FORMAT]
TAG:title=7rk
TAG:iTunPGAP=0
TAG:encoded_by=iTunes 12.7.0.166
TAG:iTunNORM= 00000362 000004C0 0000308F 00003CC5 00000DAC 00000DAC 00007D14 00007AC9 000007C1 0000175E
TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000
[/FORMAT]

View File

@@ -0,0 +1,9 @@
263462774b77f2b20a9cb5cbe492f910 *tests/data/fate/id3v2-reenc-remux-keep.mp3
192072 tests/data/fate/id3v2-reenc-remux-keep.mp3
[FORMAT]
TAG:title=7rk
TAG:iTunPGAP=0
TAG:encoded_by=iTunes 12.7.0.166
TAG:iTunNORM= 00000362 000004C0 0000308F 00003CC5 00000DAC 00000DAC 00007D14 00007AC9 000007C1 0000175E
TAG:iTunSMPB= 00000000 00000210 0000086A 0000000000066486 00000000 0002DA9D 00000000 00000000 00000000 00000000 00000000 00000000
[/FORMAT]

View File

@@ -0,0 +1,10 @@
ee93018a787b4e9620dd27207e267ad6 *tests/data/fate/matroska-reenc-chapter-nofilter.nut
28879 tests/data/fate/matroska-reenc-chapter-nofilter.nut
[CHAPTER]
TAG:title=Schloß
TAG:NUMBER_OF_FRAMES=test
[/CHAPTER]
[CHAPTER]
TAG:title=Carro
TAG:DESCRIPTION=Chapter titles for regional variants of English/Spanish
[/CHAPTER]

View File

@@ -0,0 +1,19 @@
f3f1913ea5dffcff4789d178aed75e10 *tests/data/fate/matroska-reenc-delete-metadata.nut
28856 tests/data/fate/matroska-reenc-delete-metadata.nut
[STREAM]
TAG:encoder=Lavc mpeg2video
TAG:language=spa
TAG:BPS-eng=216040
TAG:DURATION-eng=00:00:00.400000000
TAG:NUMBER_OF_FRAMES-eng=10
TAG:NUMBER_OF_BYTES-eng=10802
TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.0.1 ('Mask Machine') 64bit
TAG:_STATISTICS_WRITING_DATE_UTC-eng=2019-02-14 12:53:10
TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
[SIDE_DATA]
[/SIDE_DATA]
[/STREAM]
[FORMAT]
TAG:DESCRIPTION=Edition description
TAG:TITLE=Edition title
[/FORMAT]

View File

@@ -0,0 +1,15 @@
9a7537256acd618b31e18a3d92fc907f *tests/data/fate/matroska-reenc-delete-metadata-filter-output.nut
28835 tests/data/fate/matroska-reenc-delete-metadata-filter-output.nut
[STREAM]
TAG:encoder=Lavc mpeg2video
TAG:language=spa
TAG:BPS-eng=216040
TAG:DURATION-eng=00:00:00.400000000
TAG:NUMBER_OF_FRAMES-eng=10
TAG:NUMBER_OF_BYTES-eng=10802
TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.0.1 ('Mask Machine') 64bit
TAG:_STATISTICS_WRITING_DATE_UTC-eng=2019-02-14 12:53:10
TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
[SIDE_DATA]
[/SIDE_DATA]
[/STREAM]

View File

@@ -0,0 +1,19 @@
f3f1913ea5dffcff4789d178aed75e10 *tests/data/fate/matroska-reenc-delete-metadata-spec-scope.nut
28856 tests/data/fate/matroska-reenc-delete-metadata-spec-scope.nut
[STREAM]
TAG:encoder=Lavc mpeg2video
TAG:language=spa
TAG:BPS-eng=216040
TAG:DURATION-eng=00:00:00.400000000
TAG:NUMBER_OF_FRAMES-eng=10
TAG:NUMBER_OF_BYTES-eng=10802
TAG:_STATISTICS_WRITING_APP-eng=mkvmerge v9.0.1 ('Mask Machine') 64bit
TAG:_STATISTICS_WRITING_DATE_UTC-eng=2019-02-14 12:53:10
TAG:_STATISTICS_TAGS-eng=BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
[SIDE_DATA]
[/SIDE_DATA]
[/STREAM]
[FORMAT]
TAG:DESCRIPTION=Edition description
TAG:TITLE=Edition title
[/FORMAT]

View File

@@ -0,0 +1,21 @@
31a5be81f6278f7d62e901207bf59485 *tests/data/fate/mov-reenc-delete-format-metadata.nut
894 tests/data/fate/mov-reenc-delete-format-metadata.nut
[FORMAT]
TAG:major_brand=M4A
TAG:minor_version=0
TAG:compatible_brands=M4A mp42isom
TAG:comment=The comment...
TAG:title=Owner
TAG:compilation=0
TAG:gapless_playback=0
TAG:date=2010
TAG:iTunSMPB= 00000000 00000840 000001FD 000000000013B5C3 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
TAG:Encoding Params=vers
TAG:iTunNORM= 0000085B 0000072C 00006BC3 0000D444 00004EBA 00004ED2 00008000 00008000 000037DF 000039C7
TAG:artist=The Artist
TAG:album_artist=The Album Artist
TAG:album=The Album
TAG:genre=Rock
TAG:track=2/5
TAG:disc=3/5
[/FORMAT]

View File

@@ -0,0 +1,9 @@
c3339d3d42a7f414fec083f0766fb79a *tests/data/fate/mov-reenc-delete-stream-metadata.nut
6629 tests/data/fate/mov-reenc-delete-stream-metadata.nut
[STREAM]
TAG:encoder=Lavc flac
TAG:creation_time=2002-06-02T18:38:54.000000Z
TAG:language=eng
TAG:handler_name=Apple Sound Media Handler
TAG:vendor_id=[0][0][0][0]
[/STREAM]

View File

@@ -0,0 +1,12 @@
3b2b8f248a99168fa938c9767c350dca *tests/data/fate/mov-reenc-delete-stream-metadata-global-tag.nut
6647 tests/data/fate/mov-reenc-delete-stream-metadata-global-tag.nut
[STREAM]
TAG:encoder=Lavc flac
TAG:creation_time=2002-06-02T18:38:54.000000Z
TAG:language=eng
TAG:handler_name=Apple Sound Media Handler
TAG:vendor_id=[0][0][0][0]
[/STREAM]
[FORMAT]
TAG:vendor_id=custom
[/FORMAT]