fate/cover-art: Add test for writing id3v2 tags and apic with AIFF/MP3

Notice that the order of the APIC tracks is currently wrong. This is
a superposition of two bugs: (i) Both muxers write the attached
pictures in the order they arrive in the muxer and not in the
stream_index order, leading to attached pictures that are copied being
written earlier because their timestamp is AV_NOPTS_VALUE, whereas the
timestamp of the encoded pictures is 0. (ii) A bug in the id3v2 parsing
code reverses the order of the parsed pictures.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2021-04-10 21:20:00 +02:00
parent 3d76d4bf7f
commit 2f4ef9cbdf
3 changed files with 156 additions and 2 deletions

View File

@ -30,9 +30,26 @@ FATE_COVER_ART-$(CONFIG_WV_DEMUXER) += fate-cover-art-wv
fate-cover-art-wv: CMD = md5 -i $(TARGET_SAMPLES)/cover_art/luckynight_cover.wv -an -c:v copy -f rawvideo
fate-cover-art-wv: REF = 45333c983c45af54449dff10af144317
# Tests writing id3v2 tags (some with non-ASCII characters) and apics.
FATE_COVER_ART_REMUX-$(call ALLYES, FILE_PROTOCOL FLAC_DEMUXER MJPEG_DECODER \
FLAC_DECODER SCALE_FILTER PNG_ENCODER \
BMP_ENCODER PCM_S16BE_ENCODER AIFF_MUXER \
AIFF_DEMUXER BMP_DECODER PNG_DECODER \
FRAMECRC_MUXER PIPE_PROTOCOL) \
+= fate-cover-art-aiff-id3v2-remux
fate-cover-art-aiff-id3v2-remux: CMD = transcode flac $(TARGET_SAMPLES)/cover_art/cover_art.flac aiff "-map 0 -map 0:v -map 0:v -map 0:v -c:a pcm_s16be -c:v:0 copy -filter:v:1 scale -c:v:1 png -filter:v:2 scale -c:v:2 bmp -c:v:3 copy -write_id3v2 1 -metadata:g unknown_key=unknown_value -metadata compilation=foo -metadata:s:v:0 title=first -metadata:s:v:1 title=second -metadata:s:v:1 comment=Illustration -metadata:s:v:2 title=third -metadata:s:v:2 comment=Conductor -metadata:s:v:3 title=fourth -metadata:s:v:3 comment=Composer" "-map 0 -c copy -t 0.1" "" "-show_entries format_tags:stream_tags:stream_disposition=attached_pic:stream=index,codec_name"
FATE_COVER_ART_REMUX-$(call ALLYES, FILE_PROTOCOL MP3_DEMUXER MJPEG_DECODER \
SCALE_FILTER PNG_ENCODER BMP_ENCODER \
MP3_MUXER BMP_DECODER PNG_DECODER \
FRAMECRC_MUXER PIPE_PROTOCOL) \
+= fate-cover-art-mp3-id3v2-remux
fate-cover-art-mp3-id3v2-remux: CMD = transcode mp3 $(TARGET_SAMPLES)/exif/embedded_small.mp3 mp3 "-map 0 -map 0:v -map 0:v -c:a copy -filter:v:0 scale -filter:v:2 scale -c:v:0 bmp -c:v:1 copy -c:v:2 png -metadata:s:v:0 comment=Band/Orchestra" "-map 0 -c copy -t 0.1" "" "-show_entries stream_tags:stream_disposition=attached_pic:stream=index,codec_name"
FCA_TEMP-$(call ALLYES, RAWVIDEO_MUXER FILE_PROTOCOL) = $(FATE_COVER_ART-yes)
FATE_COVER_ART = $(FCA_TEMP-yes)
$(FATE_COVER_ART): CMP = oneline
FATE_SAMPLES_AVCONV += $(FATE_COVER_ART)
fate-cover-art: $(FATE_COVER_ART)
FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_COVER_ART_REMUX-yes)
fate-cover-art: $(FATE_COVER_ART) $(FATE_COVER_ART_REMUX-yes)

View File

@ -0,0 +1,82 @@
d4a9481090a8bab1a3f072a8108a1d6a *tests/data/fate/cover-art-aiff-id3v2-remux.aiff
608914 tests/data/fate/cover-art-aiff-id3v2-remux.aiff
#tb 0: 1/44100
#media_type 0: audio
#codec_id 0: pcm_s16be
#sample_rate 0: 44100
#channel_layout 0: 3
#channel_layout_name 0: stereo
#tb 1: 1/90000
#media_type 1: video
#codec_id 1: bmp
#dimensions 1: 350x350
#sar 1: 0/1
#tb 2: 1/90000
#media_type 2: video
#codec_id 2: png
#dimensions 2: 350x350
#sar 2: 1/1
#tb 3: 1/90000
#media_type 3: video
#codec_id 3: mjpeg
#dimensions 3: 350x350
#sar 3: 1/1
#tb 4: 1/90000
#media_type 4: video
#codec_id 4: mjpeg
#dimensions 4: 350x350
#sar 4: 1/1
0, 0, 0, 1024, 4096, 0xdac4695d
1, 0, 0, 0, 368254, 0xfa7f4bd8
2, 0, 0, 0, 184497, 0xc33f8d44
3, 0, 0, 0, 19650, 0xd5662610
4, 0, 0, 0, 19650, 0xd5662610
0, 1024, 1024, 1024, 4096, 0xad05c909
0, 2048, 2048, 1024, 4096, 0x97e3b8f8
0, 3072, 3072, 1024, 4096, 0xb08180fa
[STREAM]
index=0
codec_name=pcm_s16be
DISPOSITION:attached_pic=0
[/STREAM]
[STREAM]
index=1
codec_name=bmp
DISPOSITION:attached_pic=1
TAG:title=third
TAG:comment=Conductor
[/STREAM]
[STREAM]
index=2
codec_name=png
DISPOSITION:attached_pic=1
TAG:title=second
TAG:comment=Illustration
[/STREAM]
[STREAM]
index=3
codec_name=mjpeg
DISPOSITION:attached_pic=1
TAG:title=fourth
TAG:comment=Composer
[/STREAM]
[STREAM]
index=4
codec_name=mjpeg
DISPOSITION:attached_pic=1
TAG:title=first
TAG:comment=Other
[/STREAM]
[FORMAT]
TAG:artist=Мельница
TAG:RATING=0
TAG:album=Ангелофрения
TAG:title=Дороги
TAG:tracktotal=11
TAG:totaltracks=11
TAG:genre=Folk
TAG:date=2012
TAG:track=2
TAG:unknown_key=unknown_value
TAG:compilation=foo
[/FORMAT]

View File

@ -0,0 +1,55 @@
c1b55a9a92226cd72d3f53ccd830d127 *tests/data/fate/cover-art-mp3-id3v2-remux.mp3
399346 tests/data/fate/cover-art-mp3-id3v2-remux.mp3
#tb 0: 1/14112000
#media_type 0: audio
#codec_id 0: mp3
#sample_rate 0: 44100
#channel_layout 0: 3
#channel_layout_name 0: stereo
#tb 1: 1/90000
#media_type 1: video
#codec_id 1: png
#dimensions 1: 263x263
#sar 1: 1/1
#tb 2: 1/90000
#media_type 2: video
#codec_id 2: bmp
#dimensions 2: 263x263
#sar 2: 0/1
#tb 3: 1/90000
#media_type 3: video
#codec_id 3: mjpeg
#dimensions 3: 263x263
#sar 3: 96/96
0, -353590, -353590, 368640, 417, 0x15848290, S=1, 10, 0x034e0055
1, 0, 0, 0, 165671, 0x7c1c8070
2, 0, 0, 0, 208350, 0x291b44d1
3, 0, 0, 0, 15760, 0x71d5c418
0, 15050, 15050, 368640, 418, 0x46f684a4
0, 383690, 383690, 368640, 418, 0x46f684a4
0, 752330, 752330, 368640, 418, 0x46f684a4
0, 1120970, 1120970, 368640, 418, 0x46f684a4
[STREAM]
index=0
codec_name=mp3
DISPOSITION:attached_pic=0
TAG:encoder=Lavf
[/STREAM]
[STREAM]
index=1
codec_name=png
DISPOSITION:attached_pic=1
TAG:comment=Other
[/STREAM]
[STREAM]
index=2
codec_name=bmp
DISPOSITION:attached_pic=1
TAG:comment=Band/Orchestra
[/STREAM]
[STREAM]
index=3
codec_name=mjpeg
DISPOSITION:attached_pic=1
TAG:comment=Other
[/STREAM]