1cabdff1aSopenharmony_ciFATE_MOV = fate-mov-3elist \
2cabdff1aSopenharmony_ci           fate-mov-3elist-1ctts \
3cabdff1aSopenharmony_ci           fate-mov-1elist-1ctts \
4cabdff1aSopenharmony_ci           fate-mov-1elist-noctts \
5cabdff1aSopenharmony_ci           fate-mov-elist-starts-ctts-2ndsample \
6cabdff1aSopenharmony_ci           fate-mov-1elist-ends-last-bframe \
7cabdff1aSopenharmony_ci           fate-mov-2elist-elist1-ends-bframe \
8cabdff1aSopenharmony_ci           fate-mov-3elist-encrypted \
9cabdff1aSopenharmony_ci           fate-mov-frag-encrypted \
10cabdff1aSopenharmony_ci           fate-mov-tenc-only-encrypted \
11cabdff1aSopenharmony_ci           fate-mov-invalid-elst-entry-count \
12cabdff1aSopenharmony_ci           fate-mov-gpmf-remux \
13cabdff1aSopenharmony_ci           fate-mov-440hz-10ms \
14cabdff1aSopenharmony_ci           fate-mov-ibi-elst-starts-b \
15cabdff1aSopenharmony_ci           fate-mov-elst-ends-betn-b-and-i \
16cabdff1aSopenharmony_ci           fate-mov-frag-overlap \
17cabdff1aSopenharmony_ci           fate-mov-bbi-elst-starts-b \
18cabdff1aSopenharmony_ci           fate-mov-neg-firstpts-discard-frames \
19cabdff1aSopenharmony_ci           fate-mov-stream-shorter-than-movie \
20cabdff1aSopenharmony_ci# FIXME: Uncomment these two lines once the test files are uploaded to the fate
21cabdff1aSopenharmony_ci# server.
22cabdff1aSopenharmony_ci#           fate-mov-avif-demux-still-image-1-item \
23cabdff1aSopenharmony_ci#           fate-mov-avif-demux-still-image-multiple-items \
24cabdff1aSopenharmony_ci
25cabdff1aSopenharmony_ciFATE_MOV_FFPROBE = fate-mov-neg-firstpts-discard \
26cabdff1aSopenharmony_ci                   fate-mov-neg-firstpts-discard-vorbis \
27cabdff1aSopenharmony_ci                   fate-mov-aac-2048-priming \
28cabdff1aSopenharmony_ci                   fate-mov-zombie \
29cabdff1aSopenharmony_ci                   fate-mov-init-nonkeyframe \
30cabdff1aSopenharmony_ci                   fate-mov-displaymatrix \
31cabdff1aSopenharmony_ci                   fate-mov-spherical-mono \
32cabdff1aSopenharmony_ci                   fate-mov-guess-delay-1 \
33cabdff1aSopenharmony_ci                   fate-mov-guess-delay-2 \
34cabdff1aSopenharmony_ci                   fate-mov-guess-delay-3 \
35cabdff1aSopenharmony_ci                   fate-mov-mp4-with-mov-in24-ver \
36cabdff1aSopenharmony_ci                   fate-mov-mp4-extended-atom \
37cabdff1aSopenharmony_ci
38cabdff1aSopenharmony_ciFATE_MOV_FASTSTART = fate-mov-faststart-4gb-overflow \
39cabdff1aSopenharmony_ci
40cabdff1aSopenharmony_ciFATE_SAMPLES_AVCONV += $(FATE_MOV)
41cabdff1aSopenharmony_ciFATE_SAMPLES_FFPROBE += $(FATE_MOV_FFPROBE)
42cabdff1aSopenharmony_ciFATE_SAMPLES_FASTSTART += $(FATE_MOV_FASTSTART)
43cabdff1aSopenharmony_ci
44cabdff1aSopenharmony_ci# Make sure we handle edit lists correctly in normal cases.
45cabdff1aSopenharmony_cifate-mov-1elist-noctts: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-1elist-noctts.mov
46cabdff1aSopenharmony_cifate-mov-1elist-1ctts: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-1elist-1ctts.mov
47cabdff1aSopenharmony_cifate-mov-3elist: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-3elist.mov
48cabdff1aSopenharmony_cifate-mov-3elist-1ctts: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-3elist-1ctts.mov
49cabdff1aSopenharmony_ci
50cabdff1aSopenharmony_ci# Edit list with encryption
51cabdff1aSopenharmony_cifate-mov-3elist-encrypted: CMD = framemd5 -decryption_key 12345678901234567890123456789012 -i $(TARGET_SAMPLES)/mov/mov-3elist-encrypted.mov
52cabdff1aSopenharmony_ci
53cabdff1aSopenharmony_ci# Fragmented encryption with senc boxes in movie fragments.
54cabdff1aSopenharmony_cifate-mov-frag-encrypted: CMD = framemd5 -decryption_key 12345678901234567890123456789012 -i $(TARGET_SAMPLES)/mov/mov-frag-encrypted.mp4
55cabdff1aSopenharmony_ci
56cabdff1aSopenharmony_ci# Full-sample encryption and constant IV using only tenc atom (no senc/saio/saiz).
57cabdff1aSopenharmony_cifate-mov-tenc-only-encrypted: CMD = framemd5 -decryption_key 12345678901234567890123456789012 -i $(TARGET_SAMPLES)/mov/mov-tenc-only-encrypted.mp4
58cabdff1aSopenharmony_ci
59cabdff1aSopenharmony_ci# Makes sure that the CTTS is also modified when we fix avindex in mov.c while parsing edit lists.
60cabdff1aSopenharmony_cifate-mov-elist-starts-ctts-2ndsample: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-elist-starts-ctts-2ndsample.mov
61cabdff1aSopenharmony_ci
62cabdff1aSopenharmony_ci# Makes sure that we handle edit lists ending on a B-frame correctly.
63cabdff1aSopenharmony_ci# The last frame in decoding order which is B-frame should be output, but the last but-one P-frame shouldn't be
64cabdff1aSopenharmony_ci# output.
65cabdff1aSopenharmony_cifate-mov-1elist-ends-last-bframe: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-1elist-ends-last-bframe.mov
66cabdff1aSopenharmony_ci
67cabdff1aSopenharmony_ci# Makes sure that we handle timestamps of packets in case of multiple edit lists with one of them ending on a B-frame correctly.
68cabdff1aSopenharmony_cifate-mov-2elist-elist1-ends-bframe: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-2elist-elist1-ends-bframe.mov
69cabdff1aSopenharmony_ci
70cabdff1aSopenharmony_ci# Makes sure that if edit list ends on a B-frame but before the I-frame, then we output the B-frame but discard the I-frame.
71cabdff1aSopenharmony_cifate-mov-elst-ends-betn-b-and-i: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/elst_ends_betn_b_and_i.mp4
72cabdff1aSopenharmony_ci
73cabdff1aSopenharmony_ci# Makes sure that we handle edit lists and start padding correctly.
74cabdff1aSopenharmony_cifate-mov-440hz-10ms: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/440hz-10ms.m4a -af aresample
75cabdff1aSopenharmony_ci
76cabdff1aSopenharmony_ci# Makes sure that we handle invalid edit list entry count correctly.
77cabdff1aSopenharmony_cifate-mov-invalid-elst-entry-count: CMD = framemd5 -idct simple -flags +bitexact -i $(TARGET_SAMPLES)/mov/invalid_elst_entry_count.mov
78cabdff1aSopenharmony_ci
79cabdff1aSopenharmony_ci# Makes sure that 1st key-frame is picked when,
80cabdff1aSopenharmony_ci#    i) One B-frame between 2 key-frames
81cabdff1aSopenharmony_ci#   ii) Edit list starts on B-frame.
82cabdff1aSopenharmony_ci#  iii) Both key-frames have their DTS < edit list start
83cabdff1aSopenharmony_ci# i.e.  Pts Order: I-B-I
84cabdff1aSopenharmony_cifate-mov-ibi-elst-starts-b: CMD = framemd5 -flags +bitexact -i $(TARGET_SAMPLES)/mov/mov_ibi_elst_starts_b.mov
85cabdff1aSopenharmony_ci
86cabdff1aSopenharmony_ci# Makes sure that we handle overlapping framgments
87cabdff1aSopenharmony_cifate-mov-frag-overlap: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/frag_overlap.mp4
88cabdff1aSopenharmony_ci
89cabdff1aSopenharmony_ci# Makes sure that we pick the right frames according to edit list when there is no keyframe with PTS < edit list start.
90cabdff1aSopenharmony_ci# For example, when video starts on a B-frame, and edit list starts on that B-frame too.
91cabdff1aSopenharmony_ci# GOP structure : B B I in presentation order.
92cabdff1aSopenharmony_cifate-mov-bbi-elst-starts-b: CMD = framemd5 -flags +bitexact -acodec aac_fixed -i $(TARGET_SAMPLES)/h264/twofields_packet.mp4 -af aresample
93cabdff1aSopenharmony_ci
94cabdff1aSopenharmony_ci# Makes sure that the stream start_time is not negative when the first packet is a DISCARD packet with negative timestamp.
95cabdff1aSopenharmony_cifate-mov-neg-firstpts-discard: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=start_time -bitexact $(TARGET_SAMPLES)/mov/mov_neg_first_pts_discard.mov
96cabdff1aSopenharmony_ci
97cabdff1aSopenharmony_ci# Makes sure that the VORBIS audio stream start_time is not negative when the first few packets are DISCARD packets
98cabdff1aSopenharmony_ci# with negative timestamps (skip_samples is not set for Vorbis, so ffmpeg computes start_time as negative if not specified by demuxer).
99cabdff1aSopenharmony_cifate-mov-neg-firstpts-discard-vorbis: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=start_time -bitexact $(TARGET_SAMPLES)/mov/mov_neg_first_pts_discard_vorbis.mp4
100cabdff1aSopenharmony_ci
101cabdff1aSopenharmony_ci# Makes sure that expected frames are generated for mov_neg_first_pts_discard.mov with -vsync cfr
102cabdff1aSopenharmony_cifate-mov-neg-firstpts-discard-frames: CMD = framemd5 -flags +bitexact -i $(TARGET_SAMPLES)/mov/mov_neg_first_pts_discard.mov -vsync cfr
103cabdff1aSopenharmony_ci
104cabdff1aSopenharmony_ci# Makes sure that no frame is dropped/duplicated with fps filter due to start_time / duration miscalculations.
105cabdff1aSopenharmony_cifate-mov-stream-shorter-than-movie: CMD = framemd5 -flags +bitexact -i $(TARGET_SAMPLES)/mov/mov_stream_shorter_than_movie.mov -vf fps=fps=24 -an
106cabdff1aSopenharmony_ci
107cabdff1aSopenharmony_cifate-mov-aac-2048-priming: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_packets -print_format compact $(TARGET_SAMPLES)/mov/aac-2048-priming.mov
108cabdff1aSopenharmony_ci
109cabdff1aSopenharmony_cifate-mov-zombie: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_streams -show_packets -show_frames -bitexact -print_format compact $(TARGET_SAMPLES)/mov/white_zombie_scrunch-part.mov
110cabdff1aSopenharmony_ci
111cabdff1aSopenharmony_cifate-mov-init-nonkeyframe: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_packets -print_format compact -select_streams v $(TARGET_SAMPLES)/mov/mp4-init-nonkeyframe.mp4
112cabdff1aSopenharmony_ci
113cabdff1aSopenharmony_cifate-mov-displaymatrix: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=display_aspect_ratio,sample_aspect_ratio:stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mov/displaymatrix.mov
114cabdff1aSopenharmony_ci
115cabdff1aSopenharmony_cifate-mov-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mov/spherical.mov
116cabdff1aSopenharmony_ci
117cabdff1aSopenharmony_cifate-mov-gpmf-remux: CMD = md5 -i $(TARGET_SAMPLES)/mov/fake-gp-media-with-real-gpmf.mp4 -map 0 -c copy -fflags +bitexact -f mp4
118cabdff1aSopenharmony_cifate-mov-gpmf-remux: CMP = oneline
119cabdff1aSopenharmony_cifate-mov-gpmf-remux: REF = 6361cf3c2b9e6962c2eafbda138125f4
120cabdff1aSopenharmony_ci
121cabdff1aSopenharmony_cifate-mov-guess-delay-1: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=has_b_frames -select_streams v $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4
122cabdff1aSopenharmony_cifate-mov-guess-delay-2: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=has_b_frames -select_streams v $(TARGET_SAMPLES)/h264/h264_3bf_pyramid_nobsrestriction.mp4
123cabdff1aSopenharmony_cifate-mov-guess-delay-3: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=has_b_frames -select_streams v $(TARGET_SAMPLES)/h264/h264_4bf_pyramid_nobsrestriction.mp4
124cabdff1aSopenharmony_ci
125cabdff1aSopenharmony_cifate-mov-faststart-4gb-overflow: CMD = run tools/qt-faststart$(EXESUF) $(TARGET_SAMPLES)/mov/faststart-4gb-overflow.mov $(TARGET_PATH)/faststart-4gb-overflow-output.mov > /dev/null ; do_md5sum faststart-4gb-overflow-output.mov | cut -d " " -f1 ; rm faststart-4gb-overflow-output.mov
126cabdff1aSopenharmony_cifate-mov-faststart-4gb-overflow: CMP = oneline
127cabdff1aSopenharmony_cifate-mov-faststart-4gb-overflow: REF = bc875921f151871e787c4b4023269b29
128cabdff1aSopenharmony_ci
129cabdff1aSopenharmony_cifate-mov-mp4-with-mov-in24-ver: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=codec_name -select_streams 1 $(TARGET_SAMPLES)/mov/mp4-with-mov-in24-ver.mp4
130cabdff1aSopenharmony_ci
131cabdff1aSopenharmony_cifate-mov-mp4-extended-atom: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_packets -print_format compact -select_streams v $(TARGET_SAMPLES)/mov/extended_atom_size_probe
132cabdff1aSopenharmony_ci
133cabdff1aSopenharmony_ciFATE_MOV_FFMPEG_FFPROBE-$(call REMUX, MP4 MOV, OGG_DEMUXER VORBIS_DECODER) \
134cabdff1aSopenharmony_ci                          += fate-mov-mp4-chapters
135cabdff1aSopenharmony_cifate-mov-mp4-chapters: CMD = transcode ogg $(TARGET_SAMPLES)/vorbis/vorbis_chapter_extension_demo.ogg mp4 "-c copy" "-c copy -t 0.1" "-show_chapters"
136cabdff1aSopenharmony_ci
137cabdff1aSopenharmony_ciFATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, PNG, MP4 MOV, MJPEG_DECODER SCALE_FILTER) \
138cabdff1aSopenharmony_ci                          += fate-mov-cover-image
139cabdff1aSopenharmony_cifate-mov-cover-image: CMD = transcode mov $(TARGET_SAMPLES)/cover_art/Owner-iTunes_9.0.3.15.m4a mp4 "-map 0 -map 0:v -c:a copy -c:v:0 copy -filter:v:1 scale -c:v:1 png" "-map 0 -t 0.1 -c copy" "-show_entries stream_disposition=attached_pic:stream=index,codec_name"
140cabdff1aSopenharmony_ci
141cabdff1aSopenharmony_ciFATE_MOV_FFMPEG_FFPROBE-$(call TRANSCODE, TTML SUBRIP, MP4 MOV, SRT_DEMUXER TTML_MUXER) += fate-mov-mp4-ttml-stpp fate-mov-mp4-ttml-dfxp
142cabdff1aSopenharmony_cifate-mov-mp4-ttml-stpp: CMD = transcode srt $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 "-map 0:s -c:s ttml -time_base:s 1:1000" "-map 0 -c copy" "-of json -show_entries packet:stream=index,codec_type,codec_tag_string,codec_tag,codec_name,time_base,start_time,duration_ts,duration,nb_frames,nb_read_packets:stream_tags"
143cabdff1aSopenharmony_cifate-mov-mp4-ttml-dfxp: CMD = transcode srt $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt mp4 "-map 0:s -c:s ttml -time_base:s 1:1000 -tag:s dfxp -strict unofficial" "-map 0 -c copy" "-of json -show_entries packet:stream=index,codec_type,codec_tag_string,codec_tag,codec_name,time_base,start_time,duration_ts,duration,nb_frames,nb_read_packets:stream_tags"
144cabdff1aSopenharmony_ci
145cabdff1aSopenharmony_ci# FIXME: Uncomment these two tests once the test files are uploaded to the fate
146cabdff1aSopenharmony_ci# server.
147cabdff1aSopenharmony_ci# avif demuxing - still image with 1 item.
148cabdff1aSopenharmony_ci#fate-mov-avif-demux-still-image-1-item: CMD = framemd5 -i $(TARGET_SAMPLES)/avif/still_image.avif -c:v copy
149cabdff1aSopenharmony_ci
150cabdff1aSopenharmony_ci# avif demuxing - still image with multiple items. only the primary item will be
151cabdff1aSopenharmony_ci# parsed.
152cabdff1aSopenharmony_ci#fate-mov-avif-demux-still-image-multiple-items: CMD = framemd5 -i $(TARGET_SAMPLES)/avif/still_image_exif.avif -c:v copy
153cabdff1aSopenharmony_ci
154cabdff1aSopenharmony_ci# Resulting remux should have:
155cabdff1aSopenharmony_ci# 1. first audio stream with AV_DISPOSITION_HEARING_IMPAIRED
156cabdff1aSopenharmony_ci# 2. second audio stream with AV_DISPOSITION_VISUAL_IMPAIRED | DESCRIPTIONS
157cabdff1aSopenharmony_ciFATE_MOV_FFMPEG_FFPROBE-$(call REMUX, MP4 MOV, MPEGTS_DEMUXER AC3_DECODER) \
158cabdff1aSopenharmony_ci                          += fate-mov-mp4-disposition-mpegts-remux
159cabdff1aSopenharmony_cifate-mov-mp4-disposition-mpegts-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/mpegts/pmtchange.ts mp4 "-map 0:1 -map 0:2 -c copy -disposition:a:0 +hearing_impaired" "-map 0 -c copy" "-of json -show_entries stream_disposition:stream=index"
160cabdff1aSopenharmony_ci
161cabdff1aSopenharmony_ciFATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MOV_FFMPEG_FFPROBE-yes)
162cabdff1aSopenharmony_ci
163cabdff1aSopenharmony_ciFATE_MOV_FFMPEG-$(call TRANSCODE, PCM_S16LE, MOV, WAV_DEMUXER PAN_FILTER) \
164cabdff1aSopenharmony_ci                          += fate-mov-channel-description
165cabdff1aSopenharmony_cifate-mov-channel-description: tests/data/asynth-44100-1.wav tests/data/filtergraphs/mov-channel-description
166cabdff1aSopenharmony_cifate-mov-channel-description: CMD = transcode wav $(TARGET_PATH)/tests/data/asynth-44100-1.wav mov "-filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/mov-channel-description -map [outFL] -map [outFR] -map [outFC] -map [outLFE] -map [outBL] -map [outBR] -map [outDL] -map [outDR] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0"
167cabdff1aSopenharmony_ci
168cabdff1aSopenharmony_ciFATE_FFMPEG += $(FATE_MOV_FFMPEG-yes)
169cabdff1aSopenharmony_ci
170cabdff1aSopenharmony_cifate-mov: $(FATE_MOV) $(FATE_MOV_FFMPEG-yes) $(FATE_MOV_FFPROBE) $(FATE_MOV_FASTSTART) $(FATE_MOV_FFMPEG_FFPROBE-yes)
171