• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER ZLIB) += fate-matroska-prores-zlib
2fate-matroska-prores-zlib: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/prores_zlib.mkv -c:v copy
3
4# This tests that the matroska demuxer correctly adds the icpf header atom
5# upon demuxing; it also tests bz2 decompression and unknown-length cluster.
6FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER BZLIB) += fate-matroska-prores-header-insertion-bz2
7fate-matroska-prores-header-insertion-bz2: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/prores_bz2.mkv -map 0 -c copy
8
9# This tests that the matroska demuxer supports modifying the colorspace
10# properties in remuxing (-c:v copy)
11# It also tests automatic insertion of the vp9_superframe bitstream filter
12FATE_MATROSKA-$(call DEMMUX, MATROSKA, MATROSKA) += fate-matroska-remux
13fate-matroska-remux: CMD = md5pipe -i $(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-2pass-akiyo.webm -color_trc 4 -c:v copy -fflags +bitexact -strict -2 -f matroska
14fate-matroska-remux: CMP = oneline
15fate-matroska-remux: REF = b9c7b650349972c9dce42ab79b472917
16
17FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER VORBIS_PARSER) += fate-matroska-xiph-lacing
18fate-matroska-xiph-lacing: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/xiph_lacing.mka -c:a copy
19
20# This tests that the Matroska demuxer correctly demuxes WavPack
21# without CodecPrivate; it also tests zlib compressed WavPack.
22FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER ZLIB) += fate-matroska-wavpack-missing-codecprivate
23fate-matroska-wavpack-missing-codecprivate: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/wavpack_missing_codecprivate.mka -c copy
24
25# This tests that the matroska demuxer supports decompressing
26# zlib compressed tracks (both the CodecPrivate as well as the actual frames).
27FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER ZLIB) += fate-matroska-zlib-decompression
28fate-matroska-zlib-decompression: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/subtitle_zlib.mks -c:s copy
29
30# This tests that the matroska demuxer can decompress lzo compressed tracks.
31FATE_MATROSKA-$(CONFIG_MATROSKA_DEMUXER) += fate-matroska-lzo-decompression
32fate-matroska-lzo-decompression: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/lzo.mka -c copy
33
34# This tests that the matroska demuxer correctly propagates
35# the channel layout contained in vorbis comments in the CodecPrivate
36# of flac tracks. It also tests header removal compression.
37FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER FLAC_PARSER) += fate-matroska-flac-channel-mapping
38fate-matroska-flac-channel-mapping: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/flac_channel_layouts.mka -map 0 -c:a copy
39
40# This tests that the Matroska muxer writes the channel layout
41# of FLAC tracks as a Vorbis comment in the CodecPrivate if necessary
42# and that FLAC extradata is correctly updated when a packet
43# with sidedata containing new extradata is encountered.
44# Furthermore it tests everything the matroska-flac-channel-mapping test
45# tests and it also tests the FLAC decoder and encoder, in particular
46# the latter's ability to send updated extradata.
47FATE_MATROSKA-$(call ALLYES, FLAC_DECODER FLAC_ENCODER FLAC_PARSER \
48                MATROSKA_DEMUXER MATROSKA_MUXER) += fate-matroska-flac-extradata-update
49fate-matroska-flac-extradata-update: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/flac_channel_layouts.mka \
50                                           matroska "-map 0 -map 0:0 -c flac -frames:a:2 8" "-map 0 -c copy"
51
52# This test tests demuxing Vorbis and chapters from ogg and muxing it in and
53# demuxing it from Matroska/WebM. It furthermore tests the WebM muxer, in
54# particular its DASH mode. Finally, it tests writing the Cues at the front.
55FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER OGG_DEMUXER  \
56                                 VORBIS_DECODER VORBIS_PARSER WEBM_MUXER) \
57                               += fate-webm-dash-chapters
58fate-webm-dash-chapters: CMD = transcode ogg $(TARGET_SAMPLES)/vorbis/vorbis_chapter_extension_demo.ogg webm "-c copy -cluster_time_limit 1500 -dash 1 -dash_track_number 124 -reserve_index_space 400" "-c copy -t 0.5" -show_chapters
59
60# The input file has a Block whose payload has a size of zero before reversing
61# header removal compression; it furthermore uses chained SeekHeads and has
62# level 1-elements after the Cluster. This is tested on the demuxer's side.
63# For the muxer this tests that it can correctly write huge TrackNumbers and
64# that it can expand the Cues element's length field by one byte if necessary.
65# It furthermore tests correct propagation of the description tag.
66FATE_MATROSKA_FFMPEG_FFPROBE-$(call DEMMUX, MATROSKA, MATROSKA) \
67                               += fate-matroska-zero-length-block
68fate-matroska-zero-length-block: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/zero_length_block.mks matroska "-c:s copy -dash 1 -dash_track_number 2000000000 -reserve_index_space 62 -metadata_header_padding 1 -default_mode infer_no_subs" "-c:s copy" "-show_entries stream_tags=description"
69
70# This mainly tests the Matroska muxer's ability to shift the data
71# to create enough free space to write the Cues at the front.
72# The metadata_header_padding has been chosen so that three attempts
73# to write the Cues are necessary.
74# It also tests writing PCM audio in both endiannesses and putting
75# Cues with the same timestamp in the same CuePoint as well as
76# omitting CRC-32 elements when writing Matroska.
77FATE_MATROSKA-$(call TRANSCODE, PCM_S24BE PCM_S24LE, MATROSKA, WAV_DEMUXER) \
78                += fate-matroska-move-cues-to-front
79fate-matroska-move-cues-to-front: CMD = transcode wav $(TARGET_SAMPLES)/audio-reference/divertimenti_2ch_96kHz_s24.wav matroska "-map 0 -map 0 -c:a:0 pcm_s24be -c:a:1 copy -cluster_time_limit 5 -cues_to_front yes -metadata_header_padding 7840 -write_crc32 0" "-map 0 -c copy -t 0.1"
80
81# This tests DOVI (reading from MP4 and Matroska and writing to Matroska)
82# as well as writing the Cues at the front (by shifting data) if
83# the initially reserved amount of space turns out to be insufficient.
84FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, MOV_DEMUXER HEVC_DECODER) \
85                               += fate-matroska-dovi-write-config7
86fate-matroska-dovi-write-config7: CMD = transcode mov $(TARGET_SAMPLES)/mov/dovi-p7.mp4 matroska "-map 0 -c copy -cues_to_front yes -reserve_index_space 40  -metadata_header_padding 64339" "-map 0 -c copy" "-show_entries stream_side_data_list"
87
88FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, MOV_DEMUXER     \
89                                           HEVC_DECODER AAC_DECODER) \
90                               += fate-matroska-dovi-write-config8
91fate-matroska-dovi-write-config8: CMD = transcode mov $(TARGET_SAMPLES)/hevc/dv84.mov matroska "-c copy" "-map 0 -c copy -t 0.4" "-show_entries stream_side_data_list -select_streams v"
92
93# This tests the scenario like tickets #4536, #5784 where
94# the first packet (with the overall lowest dts) is a video packet,
95# whereas an audio packet to be muxed later has the overall lowest pts
96# which happens to be negative and therefore needs to be shifted.
97# (-ss 1.09 ensures that a video frame has the lowest dts of all packets;
98# yet there is an audio packet with the overall lowest pts. output_ts_offset
99# makes the pts of the audio packet, but not the leading video packet negative
100# so that we run into the above issue.)
101FATE_MATROSKA-$(call REMUX, MATROSKA, MPEGTS_DEMUXER MPEGVIDEO_PARSER \
102                            MPEG2VIDEO_DECODER EXTRACT_EXTRADATA_BSF  \
103                            MP3FLOAT_DECODER) \
104                += fate-matroska-avoid-negative-ts
105fate-matroska-avoid-negative-ts: CMD = transcode mpegts $(TARGET_SAMPLES)/mpeg2/t.mpg matroska "-c copy -ss 1.09 -output_ts_offset -60ms" "-c copy -t 0.4"
106
107# This tests writing the MS-compatibility modes V_MS/VFW/FOURCC and A_MS/ACM.
108# It furthermore tests writing the Cues at the front if the cues_to_front
109# option is set and more than enough space has been reserved in advance.
110# (Btw: The keyframe flags of the input video stream seem wrong.)
111FATE_MATROSKA-$(call REMUX, MATROSKA, AVI_DEMUXER) += fate-matroska-ms-mode
112fate-matroska-ms-mode: CMD = transcode avi $(TARGET_SAMPLES)/vp5/potter512-400-partial.avi matroska "-map 0 -c copy -cues_to_front yes -reserve_index_space 5000" "-map 0 -c copy -t 1"
113
114# This tests Matroska's QT-compatibility mode.
115FATE_MATROSKA-$(call REMUX, MATROSKA, MOV_DEMUXER) += fate-matroska-qt-mode
116fate-matroska-qt-mode: CMD = transcode mov $(TARGET_SAMPLES)/svq1/marymary-shackles.mov matroska "-c copy" "-c copy -t 3"
117
118# This test the following features of the Matroska muxer: Writing projection
119# stream side-data; not setting any track to default if the user requested it;
120# and modifying and writing colorspace properties.
121FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, H264_DECODER H264_PARSER) \
122                               += fate-matroska-spherical-mono-remux
123fate-matroska-spherical-mono-remux: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/spherical.mkv matroska "-map 0 -map 0 -c copy -disposition:0 -default+forced -disposition:1 -default -default_mode passthrough -color_primaries:1 bt709 -color_trc:1 smpte170m -colorspace:1 bt2020c -color_range:1 pc"  "-map 0 -c copy -t 0" "-show_entries stream_side_data_list:stream_disposition=default,forced:stream=color_range,color_space,color_primaries,color_transfer"
124
125# The input file of the following test contains Content Light Level as well as
126# Mastering Display Metadata and so this test tests correct muxing and demuxing
127# of these. It furthermore also tests that this data is correctly propagated
128# when reencoding (here to ffv1).
129# Both input audio tracks are completely zero, so the noise bsf is used
130# to make this test interesting.
131FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, FFV1 PRORES, MATROSKA, MXF_DEMUXER \
132                                               PCM_S24LE_DECODER ARESAMPLE_FILTER \
133                                               PCM_S16BE_ENCODER NOISE_BSF)       \
134                               += fate-matroska-mastering-display-metadata
135fate-matroska-mastering-display-metadata: CMD = transcode mxf $(TARGET_SAMPLES)/mxf/Meridian-Apple_ProResProxy-HDR10.mxf matroska "-map 0 -map 0:0 -c:v:0 copy -c:v:1 ffv1 -c:a:0 copy -bsf:a:0 noise=amount=3 -filter:a:1 aresample -c:a:1 pcm_s16be -bsf:a:1 noise=amount=-1:drop=-4" "-map 0 -c copy" "-show_entries stream_side_data_list:stream=index,codec_name"
136
137# This test tests remuxing annex B H.264 into Matroska. It also tests writing
138# the correct interlaced flags and overriding the sample aspect ratio, leading
139# to anamorphic video. Given that the input file has lots of filler material,
140# the h264_metadata filter is used to remove it as well as the H.264 AUD.
141# The video is decoded twice to show that this did not change the decoded
142# output. Furthermore, this also tests writing PCM with bitdepth 32.
143FATE_MATROSKA_FFMPEG_FFPROBE-$(call TRANSCODE, PCM_S32LE MP2, MATROSKA,      \
144                                               MPEGTS_DEMUXER H264_PARSER    \
145                                               H264_DECODER MPEGAUDIO_PARSER \
146                                               EXTRACT_EXTRADATA_BSF         \
147                                               H264_METADATA_BSF             \
148                                               ARESAMPLE_FILTER              \
149                                               PCM_S32BE_ENCODER)            \
150                               += fate-matroska-h264-remux
151fate-matroska-h264-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/h264/h264_intra_first-small.ts matroska "-map 0:0 -map 0 -c:v copy -sar:0 3:4 -bsf:v:1 h264_metadata=aud=remove:delete_filler=1 -disposition:v +hearing_impaired -af aresample -c:a:0 pcm_s32le -c:a:1 pcm_s32be -disposition:a:0 original -metadata:s:a:0 title=swedish_silence -metadata:s:a:1 title=norwegian_silence -disposition:a:1 dub" "-map 0:v" "-show_entries stream=index,codec_name:stream_tags=title,language"
152
153# Tests writing BlockAdditional and BlockGroups with ReferenceBlock elements;
154# it also tests setting a track as suitable for hearing impaired.
155# It also tests the capability of the VP8 parser to set the keyframe flag
156# (the input file lacks ReferenceBlock elements making everything a keyframe).
157FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, VP8_PARSER)  \
158                               += fate-matroska-vp8-alpha-remux
159fate-matroska-vp8-alpha-remux: CMD = transcode matroska $(TARGET_SAMPLES)/vp8_alpha/vp8_video_with_alpha.webm matroska "-c copy -disposition +hearing_impaired -cluster_size_limit 100000" "-c copy -t 0.2" "-show_entries stream_disposition:stream_side_data_list"
160
161# The audio stream to be remuxed here has AV_DISPOSITION_VISUAL_IMPAIRED.
162FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, MATROSKA, MPEGTS_DEMUXER AC3_DECODER) \
163                               += fate-matroska-mpegts-remux
164fate-matroska-mpegts-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/mpegts/pmtchange.ts matroska "-map 0:2 -map 0:2 -c copy -disposition:a:1 -visual_impaired+hearing_impaired -default_mode infer" "-map 0 -c copy" "-show_entries stream_disposition:stream=index"
165
166FATE_MATROSKA-$(call REMUX, MATROSKA, SUP_DEMUXER) += fate-matroska-pgs-remux
167fate-matroska-pgs-remux: CMD = transcode sup $(TARGET_SAMPLES)/sub/pgs_sub.sup matroska "-copyts -c:s copy" "-copyts -c:s copy"
168
169# This test uses the setts bsf to derive the duration of every packet
170# except the last from the next packet's pts.
171FATE_MATROSKA-$(call REMUX, MATROSKA, SUP_DEMUXER PGS_FRAME_MERGE_BSF SETTS_BSF) += fate-matroska-pgs-remux-durations
172fate-matroska-pgs-remux-durations: CMD = transcode sup $(TARGET_SAMPLES)/sub/pgs_sub.sup matroska "-copyts -c:s copy -bsf pgs_frame_merge,setts=duration=if(gt(DURATION\,0)\,DURATION\,if(eq(PTS\,NOPTS)\,0\,if(eq(NEXT_PTS\,NOPTS)\,0\,NEXT_PTS-PTS))):pts=PTS" "-copyts -c:s copy"
173
174# This test muxes DVB subtitles twice into Matroska: Once normally
175# and once with durations derived via the setts filter. Said filter
176# sets the duration for every packet except the last it receives.
177# The "-t 20" also tests that the BSF is properly flushed even
178# when processing ended due to something else than the input's EOF.
179# Notice that the last packet of stream 0 before 20s is present,
180# but has no duration (like stream 1).
181FATE_MATROSKA-$(call REMUX, MATROSKA, MPEGTS_DEMUXER DVBSUB_PARSER SETTS_BSF) += fate-matroska-dvbsub-remux
182fate-matroska-dvbsub-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/sub/dvbsubtest_filter.ts matroska "-map 0:s -map 0:s -t 20 -c copy -bsf:0 setts=duration=if(gt(DURATION\,0)\,DURATION\,if(eq(PTS\,NOPTS)\,0\,if(eq(NEXT_PTS\,NOPTS)\,0\,NEXT_PTS-PTS))):pts=PTS" "-map 0 -c copy"
183
184FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER) += fate-matroska-spherical-mono
185fate-matroska-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mkv/spherical.mkv
186
187# The following test tests the various flavours of WebVTT in WebM.
188# It also tests that dispositions not supported by WebM are not written
189# (and therefore lost). It moreover tests that the muxer writes CuePoints
190# with multiple CueTrackPositions if the timestamps coincide.
191FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, WEBM MATROSKA, WEBVTT_DEMUXER) \
192                               += fate-webm-webvtt-remux
193fate-webm-webvtt-remux: CMD = transcode webvtt $(TARGET_SAMPLES)/sub/WebVTT_capability_tester.vtt webm "-map 0 -map 0 -map 0 -map 0 -c:s copy -disposition:0 original+descriptions+hearing_impaired -disposition:1 lyrics+default+metadata -disposition:2 comment+forced -disposition:3 karaoke+captions+dub" "-map 0:0 -map 0:1 -c copy" "-show_entries stream_disposition:stream=index,codec_name:packet=stream_index,pts:packet_side_data_list -show_data_hash CRC32"
194
195FATE_SAMPLES_AVCONV += $(FATE_MATROSKA-yes)
196FATE_SAMPLES_FFPROBE += $(FATE_MATROSKA_FFPROBE-yes)
197FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MATROSKA_FFMPEG_FFPROBE-yes)
198
199fate-matroska: $(FATE_MATROSKA-yes) $(FATE_MATROSKA_FFPROBE-yes) $(FATE_MATROSKA_FFMPEG_FFPROBE-yes)
200