FATE_FFMPEG-$(call FILTERFRAMECRC, COLOR) += fate-ffmpeg-filter_complex fate-ffmpeg-filter_complex: CMD = framecrc -filter_complex color=d=1:r=5 -fflags +bitexact # Ticket 6603 FATE_FFMPEG-$(call FILTERFRAMECRC, AEVALSRC ASETNSAMPLES ARESAMPLE, AC3_FIXED_ENCODER) += fate-ffmpeg-filter_complex_audio fate-ffmpeg-filter_complex_audio: CMD = framecrc -auto_conversion_filters -filter_complex "aevalsrc=0:d=0.1,asetnsamples=1537" -c ac3_fixed # Ticket 6375, use case of NoX FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MOV, PNG ALAC, ARESAMPLE_FILTER) += fate-ffmpeg-attached_pics fate-ffmpeg-attached_pics: CMD = threads=2 framecrc -i $(TARGET_SAMPLES)/lossless-audio/inside.m4a -threads 1 -max_muxing_queue_size 16 -af aresample FATE_SAMPLES_FFMPEG-$(call FILTERDEMDEC, COLORKEY OVERLAY SCALE, MPEGPS IMAGE_PPM_PIPE, CAVS PPM, CAVSVIDEO_PARSER) += fate-ffmpeg-filter_colorkey fate-ffmpeg-filter_colorkey: tests/data/filtergraphs/colorkey fate-ffmpeg-filter_colorkey: CMD = framecrc -auto_conversion_filters -idct simple -fflags +bitexact -flags +bitexact -sws_flags +accurate_rnd+bitexact -i $(TARGET_SAMPLES)/cavs/cavs.mpg -fflags +bitexact -flags +bitexact -sws_flags +accurate_rnd+bitexact -i $(TARGET_SAMPLES)/lena.pnm -an -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/colorkey -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -qscale 2 -frames:v 10 FATE_FFMPEG-$(call FILTERFRAMECRC, COLOR) += fate-ffmpeg-lavfi fate-ffmpeg-lavfi: CMD = framecrc -lavfi color=d=1:r=5 -fflags +bitexact FATE_FFMPEG-$(call FILTERFRAMECRC, TESTSRC2 FORMAT SETPARAMS SCALE, LAVFI_INDEV WRAPPED_AVFRAME_DECODER MPEG2VIDEO_ENCODER) += fate-ffmpeg-chroma-location fate-ffmpeg-chroma-location: CMD = framecrc -auto_conversion_filters -f lavfi -i testsrc2=s=64x64:r=25:d=1,format=yuv420p,setparams=chroma_location=topleft -sws_flags +accurate_rnd+bitexact -flags +bitexact -idct simple -dct fastint -threads 1 -c:v mpeg2video -qscale:v 2 -frames:v 1 FATE_FFMPEG-$(if $(CONFIG_SMALL),no,$(call ALLYES, TESTSRC2_FILTER SCALE_FILTER FORMAT_FILTER LAVFI_INDEV WRAPPED_AVFRAME_DECODER RAWVIDEO_ENCODER NULL_MUXER)) += fate-ffmpeg-print-graphs-compact fate-ffmpeg-print-graphs-compact: CMD = ffmpeg -f lavfi -i testsrc2=s=64x64:r=25:d=0.08 -filter_complex "[0:v]scale=32:32,format=yuv420p[v]" -map "[v]" -c:v rawvideo -print_graphs_file - -print_graphs_format compact -f null - FATE_FFMPEG-$(call ENCDEC2, MPEG4, RAWVIDEO, AVI, RAWVIDEO_DEMUXER FRAMECRC_MUXER) += fate-force_key_frames fate-force_key_frames: tests/data/vsynth1.yuv fate-force_key_frames: CMD = enc_dec \ "rawvideo -s 352x288 -pix_fmt yuv420p" tests/data/vsynth1.yuv \ avi "-c mpeg4 -g 240 -qscale 10 -force_key_frames 0.5,0:00:01.5" \ framecrc "" "-skip_frame nokey" # test -force_key_frames source with and without framerate conversion # * we don't care about the actual video content, so replace it with # a 2x2 black square to speed up encoding # * force mpeg2video to only emit keyframes when explicitly requested fate-force_key_frames-source: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra_refresh.h264 \ -vf crop=2:2,drawbox=color=black:t=fill \ -c:v mpeg2video -g 400 -sc_threshold 99999 \ -force_key_frames source fate-force_key_frames-source-drop: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra_refresh.h264 \ -vf crop=2:2,drawbox=color=black:t=fill \ -c:v mpeg2video -g 400 -sc_threshold 99999 \ -force_key_frames source -r 1 fate-force_key_frames-source-dup: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra_refresh.h264 \ -vf crop=2:2,drawbox=color=black:t=fill \ -c:v mpeg2video -g 400 -sc_threshold 99999 \ -force_key_frames source -r 39 -force_fps -strict experimental fate-force_key_frames-scd_metadata: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra_refresh.h264 \ -vf scdet=threshold=10,crop=2:2,drawbox=color=black:t=fill \ -c:v mpeg2video -g 400 \ -force_key_frames scd_metadata FATE_SAMPLES_FFMPEG-$(call ENCDEC, MPEG2VIDEO H264, FRAMECRC H264, H264_PARSER CROP_FILTER DRAWBOX_FILTER SCDET_FILTER PIPE_PROTOCOL) += \ fate-force_key_frames-source fate-force_key_frames-source-drop fate-force_key_frames-source-dup fate-force_key_frames-scd_metadata # Tests that the video is properly autorotated using the contained # display matrix and that the generated file does not contain # a display matrix any more. FATE_SAMPLES_FFMPEG_FFPROBE-$(call TRANSCODE, MPEG2VIDEO, MOV, H264_DECODER EXTRACT_EXTRADATA_BSF) += fate-autorotate fate-autorotate: CMD = transcode "mov" $(TARGET_SAMPLES)/filter/sample-in-issue-505.mov mov "-c:v mpeg2video -an" "-c copy -t 0.5" "-show_entries stream_side_data_list" FATE_SAMPLES_FFMPEG-$(call FILTERDEMDEC, OVERLAY SCALE, RAWVIDEO VOBSUB, RAWVIDEO DVDSUB, DVDSUB_ENCODER) += fate-sub2video fate-sub2video: tests/data/vsynth_lena.yuv fate-sub2video: CMD = framecrc -auto_conversion_filters \ -f rawvideo -r 5 -s 352x288 -pix_fmt yuv420p -i $(TARGET_PATH)/tests/data/vsynth_lena.yuv \ -ss 132 -i $(TARGET_SAMPLES)/sub/vobsub.idx \ -filter_complex "sws_flags=+accurate_rnd+bitexact\;[0:0]scale=720:480[v]\;[v][1:0]overlay[v2]" \ -map "[v2]" -c:v rawvideo -threads 1 -map 1:s -c:s dvdsub # Very basic sub2video example, decode and convert to AVFrame with sub2video. # Attempt to not touch timestamps. FATE_SAMPLES_FFMPEG-$(call FRAMECRC, VOBSUB, DVDSUB, SCALE_FILTER) += fate-sub2video_basic fate-sub2video_basic: CMD = framecrc -auto_conversion_filters \ -i $(TARGET_SAMPLES)/sub/vobsub.idx \ -pix_fmt bgra \ -fps_mode passthrough -copyts \ -filter_complex "sws_flags=+accurate_rnd+bitexact\;[0:s:0]scale" \ -c:v rawvideo -threads 1 # Time-limited run with a sample that doesn't require seeking and # contains samples within the initial period. FATE_SAMPLES_FFMPEG-$(call FRAMECRC, SUP, PGSSUB, SCALE_FILTER RAWVIDEO_ENCODER) += fate-sub2video_time_limited fate-sub2video_time_limited: CMD = framecrc -auto_conversion_filters \ -i $(TARGET_SAMPLES)/sub/pgs_sub.sup \ -pix_fmt bgra \ -fps_mode passthrough -copyts \ -t 15 \ -filter_complex "sws_flags=+accurate_rnd+bitexact\;[0:s:0]scale" \ -c:v rawvideo -threads 1 FATE_FFMPEG-$(call ENCDEC, PCM_S16LE, PCM_S16LE) += fate-unknown_layout-pcm fate-unknown_layout-pcm: $(AREF) fate-unknown_layout-pcm: CMD = md5 \ -guess_layout_max 0 -f s16le -ac 1 -ar 44100 -i $(TARGET_PATH)/$(AREF) -f s16le FATE_FFMPEG-$(call FILTERDEMDECENCMUX, ARESAMPLE, PCM_S32LE, PCM_S32LE, AC3_FIXED, AC3) += fate-unknown_layout-ac3 fate-unknown_layout-ac3: $(AREF) fate-unknown_layout-ac3: CMD = md5 -auto_conversion_filters \ -guess_layout_max 0 -f s32le -ac 1 -ar 44100 -i $(TARGET_PATH)/$(AREF) \ -f ac3 -flags +bitexact -c ac3_fixed FATE_FFMPEG-$(call FILTERDEMDEC, AMIX ARESAMPLE SINE, RAWVIDEO, \ PCM_S16LE RAWVIDEO, LAVFI_INDEV \ MPEG4_ENCODER AC3_FIXED_ENCODER) \ += fate-shortest fate-shortest: tests/data/vsynth1.yuv fate-shortest: CMD = framecrc -auto_conversion_filters -f lavfi -i "sine=3000:d=10" -f lavfi -i "sine=1000:d=1" -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -idct simple -f rawvideo -s 352x288 -pix_fmt yuv420p -i $(TARGET_PATH)/tests/data/vsynth1.yuv -filter_complex "[0:a:0][1:a:0]amix=inputs=2[audio]" -map 2:v:0 -map "[audio]" -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -idct simple -dct fastint -qscale 10 -threads 1 -c:v mpeg4 -c:a ac3_fixed -shortest # test interleaving video with a sparse subtitle stream FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MATROSKA,, COLOR_FILTER VOBSUB_DEMUXER \ RAWVIDEO_ENCODER MATROSKA_MUXER) += fate-shortest-sub fate-shortest-sub: CMD = transcode \ vobsub $(TARGET_SAMPLES)/sub/vobsub.idx matroska \ "-filter_complex 'color=s=1x1:rate=1:duration=400' -pix_fmt rgb24 -allow_raw_vfw 1 -c:s copy -c:v rawvideo" \ "-map 0 -c copy -shortest -shortest_buf_duration 40 -max_delay 1" # Basic test for fix_sub_duration, which calculates duration based on the # following subtitle's pts. FATE_SAMPLES_FFMPEG-$(call FILTERDEMDECENCMUX, MOVIE, MPEGVIDEO, \ MPEG2VIDEO, SUBRIP, SRT, LAVFI_INDEV \ MPEGVIDEO_PARSER CCAPTION_DECODER PIPE_PROTOCOL) \ += fate-ffmpeg-fix_sub_duration fate-ffmpeg-fix_sub_duration: CMD = fmtstdout srt -fix_sub_duration \ -real_time 1 -f lavfi \ -i "movie=$(TARGET_SAMPLES)/sub/Closedcaption_rollup.m2v[out0+subcc]" # Basic test for fix_sub_duration_heartbeat, which causes a buffered subtitle # to be pushed out when a video keyframe is received from an encoder. FATE_SAMPLES_FFMPEG-$(call FILTERDEMDECENCMUX, MOVIE, MPEGVIDEO, \ MPEG2VIDEO, SUBRIP, SRT, LAVFI_INDEV \ MPEGVIDEO_PARSER CCAPTION_DECODER \ MPEG2VIDEO_ENCODER NULL_MUXER PIPE_PROTOCOL) \ += fate-ffmpeg-fix_sub_duration_heartbeat fate-ffmpeg-fix_sub_duration_heartbeat: CMD = fmtstdout srt -fix_sub_duration \ -real_time 1 -f lavfi \ -i "movie=$(TARGET_SAMPLES)/sub/Closedcaption_rollup.m2v[out0+subcc]" \ -map 0:v -map 0:s -fix_sub_duration_heartbeat:v:0 \ -c:v mpeg2video -b:v 2M -g 30 -sc_threshold 1000000000 \ -c:s srt \ -f null - # FIXME: disabling comparison against reference as after ffmpeg multithreading # went in, this test started depending on how far the input side # progressed compared to how quickly the output encoded packets, # causing spurious failures on the CI. fate-ffmpeg-fix_sub_duration_heartbeat: CMP = null # FIXME: the integer AAC decoder does not produce the same output on all platforms # so until that is fixed we use the volume filter to silence the data FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MATROSKA, H264 AAC_FIXED, PCM_S32LE_ENCODER VOLUME_FILTER ARESAMPLE_FILTER) += fate-ffmpeg-streamloop-transcode-av fate-ffmpeg-streamloop-transcode-av: CMD = \ framecrc -auto_conversion_filters -stream_loop 3 -c:a aac_fixed -i $(TARGET_SAMPLES)/mkv/1242-small.mkv \ -af volume=0:precision=fixed -c:a pcm_s32le FATE_STREAMCOPY-$(call REMUX, MP4 MOV, EAC3_DEMUXER) += fate-copy-trac3074 fate-copy-trac3074: CMD = transcode eac3 $(TARGET_SAMPLES)/eac3/csi_miami_stereo_128_spx.eac3\ mp4 "-codec copy -map 0" "-codec copy" FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO DVVIDEO, MOV, PCM_S16LE_DECODER) += fate-copy-trac236 fate-copy-trac236: CMD = transcode mov $(TARGET_SAMPLES)/mov/fcp_export8-236.mov\ mov "-codec copy -map 0" FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO MPEG2VIDEO, MXF, MPEGTS_DEMUXER MPEGVIDEO_PARSER MPEGAUDIO_PARSER MP2_DECODER ARESAMPLE_FILTER PCM_S16LE_DECODER) += fate-copy-trac4914 fate-copy-trac4914: CMD = transcode mpegts $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\ mxf "-c:a pcm_s16le -af aresample -c:v copy" FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO MPEG2VIDEO, AVI, MPEGTS_DEMUXER MPEGVIDEO_PARSER MPEGAUDIO_PARSER EXTRACT_EXTRADATA_BSF MP2_DECODER ARESAMPLE_FILTER) += fate-copy-trac4914-avi fate-copy-trac4914-avi: CMD = transcode mpegts $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\ avi "-c:a copy -c:v copy" "-af aresample" FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO H264, AVI, H264_DEMUXER H264_PARSER EXTRACT_EXTRADATA_BSF) += fate-copy-trac2211-avi fate-copy-trac2211-avi: CMD = transcode "h264 -r 14" $(TARGET_SAMPLES)/h264/bbc2.sample.h264\ avi "-c:v copy" ifneq (,$(filter fate-lavf-apng,$(FATE_LAVF_VIDEO))) FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO APNG, APNG) += fate-copy-apng endif fate-copy-apng: fate-lavf-apng fate-lavf-apng: KEEP_FILES ?= 1 fate-copy-apng: CMD = transcode apng tests/data/lavf/lavf.apng apng "-c:v copy" FATE_STREAMCOPY-$(call DEMMUX, OGG, OGG) += fate-limited_input_seek fate-limited_input_seek-copyts fate-limited_input_seek: CMD = md5 -ss 1.5 -t 1.3 -i $(TARGET_SAMPLES)/vorbis/moog_small.ogg -c:a copy -fflags +bitexact -f ogg fate-limited_input_seek-copyts: CMD = md5 -ss 1.5 -t 1.3 -i $(TARGET_SAMPLES)/vorbis/moog_small.ogg -c:a copy -copyts -fflags +bitexact -f ogg FATE_STREAMCOPY-$(call REMUX, PSP MOV, H264_PARSER H264_DECODER) += fate-copy-psp fate-copy-psp: CMD = transcode "mov" $(TARGET_SAMPLES)/h264/wwwq_cut.mp4\ psp "-c copy" "-codec copy" FATE_STREAMCOPY-$(call FRAMEMD5, FLV, H264, H264_PARSER) += fate-ffmpeg-streamloop-copy fate-ffmpeg-streamloop-copy: CMD = framemd5 -stream_loop 2 -i $(TARGET_SAMPLES)/flv/streamloop.flv -c copy tests/data/audio_shorter_than_video.nut: TAG = GEN tests/data/audio_shorter_than_video.nut: tests/data/vsynth_lena.yuv tests/data/audio_shorter_than_video.nut: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin \ -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -idct simple -f rawvideo -s 352x288 -pix_fmt yuv420p -i $(TARGET_PATH)/tests/data/vsynth_lena.yuv \ -f lavfi -i "sine=1000:d=1" \ -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -idct simple -dct fastint -qscale 10 -c:v mpeg4 -threads 1 -c:a pcm_s16le -bitexact \ -y $(TARGET_PATH)/tests/data/audio_shorter_than_video.nut 2>/dev/null FATE_STREAMCOPY-$(call FRAMEMD5, NUT, RAWVIDEO PCM_S16LE MPEG4, \ RAWVIDEO_DEMUXER LAVFI_INDEV \ MPEG4_ENCODER PCM_S16LE_ENCODER \ SINE_FILTER ARESAMPLE_FILTER AMIX_FILTER \ NUT_MUXER AC3_FIXED_ENCODER) \ += fate-copy-shortest1 fate-copy-shortest2 fate-copy-shortest1 fate-copy-shortest2: tests/data/audio_shorter_than_video.nut fate-copy-shortest1: CMD = framemd5 -auto_conversion_filters -fflags +bitexact -flags +bitexact -f lavfi -i "sine=3000:d=10" -f lavfi -i "sine=1000:d=1" -i $(TARGET_PATH)/tests/data/audio_shorter_than_video.nut -filter_complex "[0:a:0][1:a:0]amix=inputs=2[audio]" -map 2:v:0 -map "[audio]" -fflags +bitexact -flags +bitexact -c:v copy -c:a ac3_fixed -shortest fate-copy-shortest2: CMD = framemd5 -auto_conversion_filters -fflags +bitexact -flags +bitexact -f lavfi -i "sine=3000:d=10" -i $(TARGET_PATH)/tests/data/audio_shorter_than_video.nut -filter_complex "[0:a:0][1:a:0]amix=inputs=2[audio]" -map 1:v:0 -map "[audio]" -fflags +bitexact -flags +bitexact -c:v copy -c:a ac3_fixed -shortest fate-streamcopy: $(FATE_STREAMCOPY-yes) FATE_SAMPLES_FFMPEG-yes += $(FATE_STREAMCOPY-yes) FATE_SAMPLES_FFMPEG-$(call TRANSCODE, RAWVIDEO, MATROSKA, MOV_DEMUXER QTRLE_DECODER) += fate-rgb24-mkv fate-rgb24-mkv: CMD = transcode "mov" $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov\ matroska "-c:v rawvideo -threads 1 -pix_fmt rgb24 -allow_raw_vfw 1 -frames:v 1" FATE_SAMPLES_FFMPEG-$(call REMUX, MOV, AAC_DEMUXER AAC_DECODER AAC_PARSER AAC_ADTSTOASC_BSF) += fate-adtstoasc_ticket3715 fate-adtstoasc_ticket3715: CMD = transcode "aac" $(TARGET_SAMPLES)/aac/foo.aac\ mov "-c copy -bsf:a aac_adtstoasc" "-codec copy" FATE_SAMPLES_FFMPEG-$(call REMUX, H264, MOV_DEMUXER H264_MP4TOANNEXB_BSF H264_PARSER H264_DECODER EXTRACT_EXTRADATA_BSF) += fate-h264_mp4toannexb_ticket2991 fate-h264_mp4toannexb_ticket2991: CMD = transcode "mp4" $(TARGET_SAMPLES)/h264/wwwq_cut.mp4\ h264 "-c:v copy -bsf:v h264_mp4toannexb" "-codec copy" FATE_SAMPLES_FFMPEG-$(call TRANSCODE, MPEG4 MPEG2VIDEO, AVI, MPEGPS_DEMUXER MPEGVIDEO_DEMUXER MPEGVIDEO_PARSER EXTRACT_EXTRADATA_BSF REMOVE_EXTRADATA_BSF) += fate-ffmpeg-bsf-remove-k fate-ffmpeg-bsf-remove-r fate-ffmpeg-bsf-remove-e fate-ffmpeg-bsf-remove-k: CMD = transcode "mpeg" $(TARGET_SAMPLES)/mpeg2/matrixbench_mpeg2.lq1.mpg\ avi "-bsf:v remove_extra=k" "-codec copy" fate-ffmpeg-bsf-remove-r: CMD = transcode "mpeg" $(TARGET_SAMPLES)/mpeg2/matrixbench_mpeg2.lq1.mpg\ avi "-bsf:v remove_extra=keyframe" "-codec copy" fate-ffmpeg-bsf-remove-e: CMD = transcode "mpeg" $(TARGET_SAMPLES)/mpeg2/matrixbench_mpeg2.lq1.mpg\ avi "-bsf:v remove_extra=e" "-codec copy" FATE_SAMPLES_FFMPEG-$(call DEMMUX, APNG, FRAMECRC, SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-setts-bsf fate-ffmpeg-setts-bsf: CMD = framecrc -i $(TARGET_SAMPLES)/apng/clock.png -c:v copy -bsf:v "setts=duration=if(eq(NEXT_PTS\,NOPTS)\,PREV_OUTDURATION\,(NEXT_PTS-PTS)/2):ts=PTS/2" -fflags +bitexact FATE_SAMPLES_FFMPEG-$(call DEMMUX, AAC, FRAMECRC, AAC_PARSER TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-pts fate-ffmpeg-trim-bsf-dts fate-ffmpeg-trim-bsf-pkt fate-ffmpeg-trim-bsf-dts-pts fate-ffmpeg-trim-bsf-pts-dts fate-ffmpeg-trim-bsf-pts-duration fate-ffmpeg-trim-bsf-dts-duration fate-ffmpeg-trim-bsf-samples fate-ffmpeg-trim-bsf-msec fate-ffmpeg-trim-bsf-rel fate-ffmpeg-trim-bsf-duration-zero fate-ffmpeg-trim-bsf-pkt-rel fate-ffmpeg-trim-bsf-untrimmed fate-ffmpeg-trim-bsf-pts: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1806336:end=18063360 fate-ffmpeg-trim-bsf-dts: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=3612672:start_type=dts:end=10838016:end_type=dts fate-ffmpeg-trim-bsf-dts-pts: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=3612672:start_type=dts:end=18063360 fate-ffmpeg-trim-bsf-pts-dts: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1806336:end=10838016:end_type=dts fate-ffmpeg-trim-bsf-pts-duration: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1806336:end=1000:end_type=dur_ts fate-ffmpeg-trim-bsf-dts-duration: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=3612672:start_type=dts:end=1000:end_type=dur_ts fate-ffmpeg-trim-bsf-pkt: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=5:start_type=pkt_index:end=15:end_type=pkt_index fate-ffmpeg-trim-bsf-samples: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=903168:end=17160192 fate-ffmpeg-trim-bsf-msec: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1000:start_type=msec_pt:end=5000:end_type=dur_t_msec fate-ffmpeg-trim-bsf-rel: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1806336:start_rel=1:end=1000:end_type=dur_ts fate-ffmpeg-trim-bsf-duration-zero: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1806336:end=0:end_type=dur_ts fate-ffmpeg-trim-bsf-pkt-rel: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=1806336:end=5:end_type=pkt_index:end_rel=1 fate-ffmpeg-trim-bsf-untrimmed: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=903168:end=17160192:trim_packets=0 # Both trims land on the same 1024 sample packet, 256 off each end. The composed # skip leaves a 512 sample frame. FATE_SAMPLES_FFMPEG-$(call FRAMECRC, AAC, AAC, AAC_PARSER TRIM_BSF ARESAMPLE_FILTER) += fate-ffmpeg-trim-bsf-skip-samples fate-ffmpeg-trim-bsf-skip-samples: CMD = framecrc -bsf:a trim=start=2257920,trim=end=3161088 -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a pcm_s16le -af aresample # Both bounds fall in a presentation gap the first packet's duration is stretched # over, where only the decoded sample count places them. FATE_SAMPLES_FFMPEG-$(call DEMMUX, AAC, FRAMECRC, AAC_PARSER TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-gap-end fate-ffmpeg-trim-bsf-gap-start fate-ffmpeg-trim-bsf-gap-end: CMD = framecrc -copyts -bsf:a "setts=duration=if(eq(N\,0)\,18063360\,DURATION):pts=PTS+if(gte(N\,1)\,16257024\,0),trim=end=9031680" -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy fate-ffmpeg-trim-bsf-gap-start: CMD = framecrc -copyts -bsf:a "setts=duration=if(eq(N\,0)\,18063360\,DURATION):pts=PTS+if(gte(N\,1)\,16257024\,0),trim=start=9031680" -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -frames:a 1 # The same gap where the size gives no sample count, so no bound falls inside the # packet and it is judged whole. FATE_SAMPLES_FFMPEG-$(call DEMMUX, OGG, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-opus-gap-end fate-ffmpeg-trim-bsf-opus-gap-start fate-ffmpeg-trim-bsf-opus-gap-end: CMD = framecrc -copyts -bsf:a "setts=duration=if(eq(N\,0)\,10000\,DURATION):pts=PTS+if(gte(N\,1)\,9040\,0),trim=end=9188" -i $(TARGET_SAMPLES)/audiomatch/tones_opus_48000_stereo.opus -c:a copy fate-ffmpeg-trim-bsf-opus-gap-start: CMD = framecrc -copyts -bsf:a "setts=duration=if(eq(N\,0)\,10000\,DURATION):pts=PTS+if(gte(N\,1)\,9040\,0),trim=start=9188" -i $(TARGET_SAMPLES)/audiomatch/tones_opus_48000_stereo.opus -c:a copy -frames:a 2 # The 2112 sample priming spans three packets, so a trim from 512 stays inside # it and carries the 1088 samples left over to the second packet. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming fate-ffmpeg-trim-bsf-priming: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a trim=start=512 # Same priming with the durations erased. The codec frame size still leaves the # packet at 1024, carrying 1088 samples of priming rather than the whole 2112. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming-nodur fate-ffmpeg-trim-bsf-priming-nodur: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a setts=duration=0,trim=start=1:start_type=pkt_index -frames:a 3 # The skip counts decoded samples, so a gap opened after the dropped packet # leaves the same 1088. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming-gap fate-ffmpeg-trim-bsf-priming-gap: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a "setts=pts=PTS+if(gte(N\,1)\,10000\,0),trim=start=1:start_type=pkt_index" -frames:a 2 # Nor does the packet the skip lands on need a timestamp at all. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming-nopts fate-ffmpeg-trim-bsf-priming-nopts: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a "setts=pts=if(gte(N\,1)\,NOPTS\,PTS),trim=start=1:start_type=pkt_index" -frames:a 2 # The same gap with the duration stretched across it. A duration places the next # packet and does not count this one's samples. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming-gap-duration fate-ffmpeg-trim-bsf-priming-gap-duration: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a "setts=duration=if(eq(N\,0)\,11024\,DURATION):pts=PTS+if(gte(N\,1)\,10000\,0),trim=start=1:start_type=pkt_index" -frames:a 1 # The end is measured from the first sample the stream contributes, which the # priming pushes to 4160, leaving the last packet a 960 sample tail skip. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming-duration fate-ffmpeg-trim-bsf-priming-duration: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a trim=start=512:end=2048:end_type=dur_ts # Untouched mode has no sample space, so a dropped packet takes its skip along. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-priming-untrimmed fate-ffmpeg-trim-bsf-priming-untrimmed: CMD = framecrc -copyts -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.m4a -c:a copy -bsf:a trim=start=1:start_type=pkt_index:trim_packets=0 -frames:a 3 # The composed skips cover 800 + 300 of the 1024 samples, leaving nothing. FATE_SAMPLES_FFMPEG-$(call DEMMUX, AAC, FRAMECRC, AAC_PARSER TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-skip-samples-empty fate-ffmpeg-trim-bsf-skip-samples-empty: CMD = framecrc -i $(TARGET_SAMPLES)/audiomatch/tones_afconvert_16000_mono_aac_lc.adts -c:a copy -bsf:a trim=start=3217536,trim=end=3083472 FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-pts fate-ffmpeg-trim-bsf-video-dts fate-ffmpeg-trim-bsf-video-dts-pts fate-ffmpeg-trim-bsf-video-pts-dts fate-ffmpeg-trim-bsf-video-dts-duration fate-ffmpeg-trim-bsf-video-pts-duration fate-ffmpeg-trim-bsf-video-pkt fate-ffmpeg-trim-bsf-video-samples fate-ffmpeg-trim-bsf-video-untrimmed fate-ffmpeg-trim-bsf-video-pts: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=60:end=600 fate-ffmpeg-trim-bsf-video-dts: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=120:start_type=dts:end=360:end_type=dts fate-ffmpeg-trim-bsf-video-dts-pts: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=120:start_type=dts:end=600 fate-ffmpeg-trim-bsf-video-pts-dts: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=60:end=360:end_type=dts fate-ffmpeg-trim-bsf-video-dts-duration: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=120:start_type=dts:end=100:end_type=dur_ts fate-ffmpeg-trim-bsf-video-pts-duration: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=60:end=100:end_type=dur_ts fate-ffmpeg-trim-bsf-video-pkt: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=5:start_type=pkt_index:end=15:end_type=pkt_index fate-ffmpeg-trim-bsf-video-samples: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=30:end=150 fate-ffmpeg-trim-bsf-video-untrimmed: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v trim=start=30:end=150:trim_packets=0 # A pts past the end with a dts before it drops its packet without ending the # stream, and three in-range packets follow. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-reordered fate-ffmpeg-trim-bsf-video-reordered: CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4 -map 0:v:0 -c:v copy -bsf:v trim=end=1600 # The held packets carry the discard flag. B-frames placed before the bound after # it was crossed are held the same way. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-preroll fate-ffmpeg-trim-bsf-video-preroll-overflow fate-ffmpeg-trim-bsf-video-preroll: CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4 -map 0:v:0 -c:v copy -bsf:v trim=start=4096:preroll=1 # A group that does not fit is dropped whole, leaving the output the one an # unset preroll gives. fate-ffmpeg-trim-bsf-video-preroll-overflow: CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4 -map 0:v:0 -c:v copy -bsf:v trim=start=4096:preroll=1:preroll_size=3 # Decoding the held packets leaves the frames in range as the untrimmed stream # decodes them. FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MOV, H264, TRIM_BSF) += fate-ffmpeg-trim-bsf-video-preroll-decoded fate-ffmpeg-trim-bsf-video-preroll-decoded: CMD = framecrc -bsf:v trim=start=4096:preroll=1 -i $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4 -map 0:v:0 # Only the group the bound falls in is held, the keyframe at packet 11 starting # the window over. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MPEGPS, FRAMECRC, MPEG2VIDEO_DECODER MPEGVIDEO_DEMUXER MPEGVIDEO_PARSER EXTRACT_EXTRADATA_BSF TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-preroll-keyframe fate-ffmpeg-trim-bsf-video-preroll-on-keyframe fate-ffmpeg-trim-bsf-video-preroll-keyframe: CMD = framecrc -i $(TARGET_SAMPLES)/mpeg2/matrixbench_mpeg2.lq1.mpg -map 0:v:0 -c:v copy -bsf:v trim=start=15:start_type=pkt_index:preroll=1 fate-ffmpeg-trim-bsf-video-preroll-on-keyframe: CMD = framecrc -i $(TARGET_SAMPLES)/mpeg2/matrixbench_mpeg2.lq1.mpg -map 0:v:0 -c:v copy -bsf:v trim=start=11:start_type=pkt_index:preroll=1 # Input bsfs are flushed between loops, so each pass drops its own first packet. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-flush fate-ffmpeg-trim-bsf-video-flush-rel fate-ffmpeg-trim-bsf-video-flush: CMD = framecrc -stream_loop 1 -bsf:v trim=start=1:start_type=pkt_index -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy fate-ffmpeg-trim-bsf-video-flush-rel: CMD = framecrc -stream_loop 1 -bsf:v trim=start=120:start_rel=1 -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-mixed-axes fate-ffmpeg-trim-bsf-video-mixed-axes-empty fate-ffmpeg-trim-bsf-video-mixed-axes: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v setts=pts=PTS+100,trim=start=10:start_type=dts:end=140:end_type=pts fate-ffmpeg-trim-bsf-video-mixed-axes-empty: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v setts=pts=PTS+100,trim=start=30:start_type=dts:end=120:end_type=pts # The first packet has no pts to be placed by, so both bounds are measured from # the second one. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-nopts-duration fate-ffmpeg-trim-bsf-video-nopts-rel fate-ffmpeg-trim-bsf-video-nopts-empty fate-ffmpeg-trim-bsf-video-nopts-duration: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v "setts=pts=if(eq(N\,0)\,NOPTS\,PTS),trim=end=100:end_type=dur_ts" fate-ffmpeg-trim-bsf-video-nopts-rel: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v "setts=pts=if(eq(N\,0)\,NOPTS\,PTS),trim=start=120:start_rel=1:end=600" fate-ffmpeg-trim-bsf-video-nopts-empty: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v "setts=pts=NOPTS,trim=end=100:end_type=dur_ts" # The dts start falls inside the first packet, and the duration runs from the # presentation time it is trimmed to. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-partial-dts-duration fate-ffmpeg-trim-bsf-video-partial-dts-duration: CMD = framecrc -i $(TARGET_SAMPLES)/qtrle/aletrek-rle.mov -map 0:v:0 -c:v copy -bsf:v setts=pts=PTS+100,trim=start=30:start_type=dts:end=100:end_type=dur_ts # Without a dts, nothing proves a later pts cannot come back into range, so an # out of range pts only drops its packet. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF SETTS_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-reordered-nodts fate-ffmpeg-trim-bsf-video-reordered-nodts: CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4 -map 0:v:0 -c:v copy -bsf:v "setts=pts=PTS:dts=NOPTS,trim=end=1600" # A relative packet count is measured on the exported packets, so a packet the # pts start drops does not count against it. FATE_SAMPLES_FFMPEG-$(call DEMMUX, MOV, FRAMECRC, TRIM_BSF PIPE_PROTOCOL) += fate-ffmpeg-trim-bsf-video-reordered-count fate-ffmpeg-trim-bsf-video-reordered-count: CMD = framecrc -i $(TARGET_SAMPLES)/h264/h264_3bf_nopyramid_nobsrestriction.mp4 -map 0:v:0 -c:v copy -bsf:v trim=start=1100:end=3:end_type=pkt_index:end_rel=1 FATE_TIME_BASE-$(call PARSERDEMDEC, MPEGVIDEO, MPEGPS, MPEG2VIDEO, MPEGVIDEO_DEMUXER MXF_MUXER) += fate-time_base fate-time_base: CMD = md5 -i $(TARGET_SAMPLES)/mpeg2/dvd_single_frame.vob -an -sn -c:v copy -r 25 -fflags +bitexact -f mxf FATE_SAMPLES_FFMPEG-yes += $(FATE_TIME_BASE-yes) # test -r used as an input option fate-ffmpeg-input-r: CMD = framecrc -r 27 -idct simple -bitexact -i $(TARGET_SAMPLES)/mpeg2/sony-ct3.bs FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MPEGVIDEO, MPEG2VIDEO) += fate-ffmpeg-input-r # file with completely undecodable TTA audio stream # by default should exit with error code 69 fate-ffmpeg-error-rate-fail: CMD = ffmpeg -i $(TARGET_SAMPLES)/mkv/h264_tta_undecodable.mkv -c:v copy -f null -; test $$? -eq 69 fate-ffmpeg-error-rate-pass: CMD = ffmpeg -i $(TARGET_SAMPLES)/mkv/h264_tta_undecodable.mkv -c:v copy -f null - -max_error_rate 1 FATE_SAMPLES_FFMPEG-$(call ENCDEC, PCM_S16LE TTA, NULL MATROSKA) += fate-ffmpeg-error-rate-fail fate-ffmpeg-error-rate-pass fate-ffmpeg-no-overwrite: CMP = null fate-ffmpeg-no-overwrite: CMD = out=tests/data/fate/no-overwrite.wav; touch $$out; ffmpeg -f lavfi -i anullsrc -t 0.01 -c:a pcm_u8 -f wav -n $$out; ret=$$?; rm -f $$out; test $$ret -ne 0 FATE_FFMPEG-$(call ALLYES, LAVFI_INDEV ANULLSRC_FILTER PCM_U8_DECODER PCM_U8_ENCODER WAV_MUXER FILE_PROTOCOL) += fate-ffmpeg-no-overwrite # test input -bsf # use -stream_loop, because it tests flushing bsfs fate-ffmpeg-bsf-input: CMD = framecrc -stream_loop 2 -bsf setts=PTS*2 -i $(TARGET_SAMPLES)/hevc/extradata-reload-multi-stsd.mov -c copy FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MOV, , SETTS_BSF) += fate-ffmpeg-bsf-input # Test behaviour when a complex filtergraph returns EOF on one of its inputs, # but other inputs are still active. # cf. #10803 fate-ffmpeg-filter-in-eof: tests/data/vsynth1.yuv fate-ffmpeg-filter-in-eof: CMD = framecrc \ -f rawvideo -s 352x288 -pix_fmt yuv420p -t 1 -i $(TARGET_PATH)/tests/data/vsynth1.yuv \ -f rawvideo -s 352x288 -pix_fmt yuv420p -t 1 -i $(TARGET_PATH)/tests/data/vsynth1.yuv \ -filter_complex "[0][1]concat" -c:v rawvideo FATE_FFMPEG-$(call FRAMECRC, RAWVIDEO, RAWVIDEO, CONCAT_FILTER) += fate-ffmpeg-filter-in-eof # Test termination on streamcopy with -t as an output option. fate-ffmpeg-streamcopy-t: tests/data/vsynth1.yuv fate-ffmpeg-streamcopy-t: CMP = null fate-ffmpeg-streamcopy-t: CMD = ffmpeg \ -stream_loop -1 -f rawvideo -s 352x288 -pix_fmt yuv420p -i $(TARGET_PATH)/tests/data/vsynth1.yuv \ -c copy -f null -t 1 - FATE_FFMPEG-$(call REMUX, RAWVIDEO, NULL_MUXER) += fate-ffmpeg-streamcopy-t fate-ffmpeg-negative-t: tests/data/vsynth1.yuv fate-ffmpeg-negative-t: CMP = null fate-ffmpeg-negative-t: CMD = ffmpeg \ -stream_loop -1 -f rawvideo -s 352x288 -pix_fmt yuv420p -i $(TARGET_PATH)/tests/data/vsynth1.yuv \ -c copy -f null -t -1 -; test $$? -ne 0 FATE_FFMPEG-$(call REMUX, RAWVIDEO, NULL_MUXER) += fate-ffmpeg-negative-t fate-ffmpeg-negative-input-t: tests/data/vsynth1.yuv fate-ffmpeg-negative-input-t: CMP = null fate-ffmpeg-negative-input-t: CMD = ffmpeg \ -stream_loop -1 -f rawvideo -s 352x288 -pix_fmt yuv420p -t -1 -i $(TARGET_PATH)/tests/data/vsynth1.yuv \ -c copy -f null -; test $$? -ne 0 FATE_FFMPEG-$(call REMUX, RAWVIDEO, NULL_MUXER) += fate-ffmpeg-negative-input-t # Test loopback decoding and passing the output to a complex graph. fate-ffmpeg-loopback-decoding: tests/data/vsynth1.yuv fate-ffmpeg-loopback-decoding: CMD = transcode \ "rawvideo -s 352x288 -pix_fmt yuv420p" $(TARGET_PATH)/tests/data/vsynth1.yuv nut \ "-map 0:v:0 -c:v mpeg2video -f null - -flags +bitexact -idct simple -threads $$threads -dec 0:0 -filter_complex '[0:v][dec:0]hstack[stack]' -map '[stack]' -c:v ffv1" "" FATE_FFMPEG-$(call ENCDEC2, MPEG2VIDEO, FFV1, NUT, HSTACK_FILTER PIPE_PROTOCOL FRAMECRC_MUXER) += fate-ffmpeg-loopback-decoding # test matching by stream disposition fate-ffmpeg-spec-disposition: CMD = framecrc -i $(TARGET_SAMPLES)/mpegts/pmtchange.ts -map '0:disp:visual_impaired+descriptions:1' -c copy FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MPEGTS,,) += fate-ffmpeg-spec-disposition # test heif image merging using internally defined filtegraphs # picking the stream group if not mapping any specific stream fate-ffmpeg-heif-merge: CMD = framecrc -i $(TARGET_SAMPLES)/heif-conformance/C007.heic FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER) += fate-ffmpeg-heif-merge # mapping the stream group fate-ffmpeg-heif-merge-mapped: CMD = framecrc -i $(TARGET_SAMPLES)/heif-conformance/C007.heic -map '[0:g:0]' FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER) += fate-ffmpeg-heif-merge-mapped # binding the internal filtegraph with a caller defined filtergraph fate-ffmpeg-heif-merge-filtergraph: CMD = framecrc -i $(TARGET_SAMPLES)/heif-conformance/C007.heic -filter_complex "sws_flags=+accurate_rnd+bitexact\;[0:g:0]scale=w=1280:h=720[out]" -map "[out]" FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER SCALE_FILTER) += fate-ffmpeg-heif-merge-filtergraph