1 FFSERVER_REFFILE
= $(SRC_PATH
)/tests
/ffserver.regression.ref
4 VREF
= tests
/vsynth1
/00.pgm
5 AREF
= tests
/data
/asynth1.sw
12 ffservertest
: ffserver
$(EXESUF
) tests
/vsynth1
/00.pgm tests
/data
/asynth1.sw
14 @echo
"Unfortunately ffserver is broken and therefore its regression"
15 @echo
"test fails randomly. Treat the results accordingly."
17 $(SRC_PATH
)/tests
/ffserver-regression.sh
$(FFSERVER_REFFILE
) $(SRC_PATH
)/tests
/ffserver.conf
19 OBJDIRS
+= tests
/data tests
/vsynth1 tests
/data
/filtergraphs
21 $(VREF
): tests
/videogen
$(HOSTEXESUF
) | tests
/vsynth1
22 $(M
).
/$< 'tests/vsynth1/'
24 $(AREF
): tests
/audiogen
$(HOSTEXESUF
) | tests
/data
27 tests
/data
/asynth-
%.wav
: tests
/audiogen
$(HOSTEXESUF
) | tests
/data
28 $(M
).
/$< $@
$(subst -, ,$*)
30 tests
/data
/vsynth1.yuv
: tests
/videogen
$(HOSTEXESUF
) | tests
/data
33 tests
/data
/vsynth2.yuv
: tests
/rotozoom
$(HOSTEXESUF
) | tests
/data
34 $(M
)$< $(SRC_PATH
)/tests
/reference.pnm
$@
36 tests
/data
/vsynth_lena.yuv
: tests
/rotozoom
$(HOSTEXESUF
) | tests
/data
37 $(M
)$< $(SAMPLES
)/lena.pnm
$@
39 tests
/data
/vsynth3.yuv
: tests
/videogen
$(HOSTEXESUF
) | tests
/data
40 $(M
)$< $@
$(FATEW
) $(FATEH
)
42 tests
/test_copy.ffmeta
: TAG
= COPY
43 tests
/test_copy.ffmeta
: tests
/data
44 $(M
)cp
-f
$(SRC_PATH
)/tests
/test.ffmeta tests
/test_copy.ffmeta
46 tests
/data
/ffprobe-test.nut
: ffmpeg
$(EXESUF
) tests
/test_copy.ffmeta
47 $(M
)$(TARGET_EXEC
) .
/$< \
48 -f lavfi
-i
"aevalsrc=sin(400*PI*2*t):d=0.125[out0]; testsrc=d=0.125[out1]; testsrc=s=100x100:d=0.125[out2]" \
49 -f ffmetadata
-i
$(TARGET_PATH
)/tests
/test_copy.ffmeta \
50 -flags
+bitexact
-map
0:0 -map
0:1 -map
0:2 -map_metadata
1 \
51 -map_metadata
:s
:0 1:s
:0 -map_metadata
:s
:1 1:s
:1 \
52 -vcodec rawvideo
-acodec pcm_s16le \
53 -y
$(TARGET_PATH
)/$@
2>/dev
/null
55 tests
/data
/%.sw tests
/data
/asynth
% tests
/data
/vsynth
%.yuv tests
/vsynth
%/00.pgm tests
/data
/%.nut
: TAG
= GEN
57 tests
/data
/filtergraphs
/%: TAG
= COPY
58 tests
/data
/filtergraphs
/%: $(SRC_PATH
)/tests
/filtergraphs
/% | tests
/data
/filtergraphs
61 RUNNING_FATE
:= $(filter check fate
%,$(filter-out fate-rsync
,$(MAKECMDGOALS
)))
63 # Check sanity of dependencies when running FATE tests.
64 ifneq (,$(RUNNING_FATE
))
65 CHKCFG
= $(if
$($(1))$(!$(1)),$($(1)), $(error No such config
: $(1)))
68 ALLYES
= $(strip $(call XYES
, $(1)))
69 XYES
= $(if
$(strip $(1)), \
70 $(if
$(call CHKCFG
,CONFIG_
$(firstword $(1))), \
71 $(call XYES
, $(wordlist
2, $(words $(1)), $(1)))), \
74 ENCDEC
= $(call ALLYES
, $(firstword $(1))_ENCODER
$(lastword
$(1))_DECODER \
75 $(firstword $(2))_MUXER
$(lastword
$(2))_DEMUXER
)
77 ENCDEC2
= $(call ALLYES
, $(firstword $(1))_ENCODER
$(lastword
$(1))_DECODER \
78 $(firstword $(2))_ENCODER
$(lastword
$(2))_DECODER \
79 $(firstword $(3))_MUXER
$(lastword
$(3))_DEMUXER
)
81 DEMDEC
= $(call ALLYES
, $(1)_DEMUXER
$(2:%=%_DECODER
))
82 ENCMUX
= $(call ALLYES
, $(1:%=%_ENCODER
) $(2)_MUXER
)
84 DEMMUX
= $(call ALLYES
, $(1)_DEMUXER
$(2)_MUXER
)
86 FILTERDEMDEC
= $(call ALLYES
, $(1:%=%_FILTER
) $(2)_DEMUXER
$(3)_DECODER
)
87 FILTERDEMDECMUX
= $(call ALLYES
, $(1:%=%_FILTER
) $(2)_DEMUXER
$(3)_DECODER
$(4)_MUXER
)
88 FILTERDEMDECENCMUX
= $(call ALLYES
, $(1:%=%_FILTER
) $(2)_DEMUXER
$(3)_DECODER
$(4)_ENCODER
$(5)_MUXER
)
90 PARSERDEMDEC
= $(call ALLYES
, $(1)_PARSER
$(2)_DEMUXER
$(3)_DECODER
)
92 include $(SRC_PATH
)/tests
/fate
/acodec.mak
93 include $(SRC_PATH
)/tests
/fate
/vcodec.mak
94 include $(SRC_PATH
)/tests
/fate
/avformat.mak
95 include $(SRC_PATH
)/tests
/fate
/seek.mak
97 include $(SRC_PATH
)/tests
/fate
/aac.mak
98 include $(SRC_PATH
)/tests
/fate
/ac3.mak
99 include $(SRC_PATH
)/tests
/fate
/adpcm.mak
100 include $(SRC_PATH
)/tests
/fate
/alac.mak
101 include $(SRC_PATH
)/tests
/fate
/als.mak
102 include $(SRC_PATH
)/tests
/fate
/amrnb.mak
103 include $(SRC_PATH
)/tests
/fate
/amrwb.mak
104 include $(SRC_PATH
)/tests
/fate
/atrac.mak
105 include $(SRC_PATH
)/tests
/fate
/audio.mak
106 include $(SRC_PATH
)/tests
/fate
/bmp.mak
107 include $(SRC_PATH
)/tests
/fate
/cdxl.mak
108 include $(SRC_PATH
)/tests
/fate
/cover-art.mak
109 include $(SRC_PATH
)/tests
/fate
/demux.mak
110 include $(SRC_PATH
)/tests
/fate
/dfa.mak
111 include $(SRC_PATH
)/tests
/fate
/dpcm.mak
112 include $(SRC_PATH
)/tests
/fate
/ea.mak
113 include $(SRC_PATH
)/tests
/fate
/exif.mak
114 include $(SRC_PATH
)/tests
/fate
/ffmpeg.mak
115 include $(SRC_PATH
)/tests
/fate
/ffprobe.mak
116 include $(SRC_PATH
)/tests
/fate
/filter-audio.mak
117 include $(SRC_PATH
)/tests
/fate
/filter-video.mak
118 include $(SRC_PATH
)/tests
/fate
/flac.mak
119 include $(SRC_PATH
)/tests
/fate
/fft.mak
120 include $(SRC_PATH
)/tests
/fate
/gif.mak
121 include $(SRC_PATH
)/tests
/fate
/h264.mak
122 include $(SRC_PATH
)/tests
/fate
/hevc.mak
123 include $(SRC_PATH
)/tests
/fate
/image.mak
124 include $(SRC_PATH
)/tests
/fate
/indeo.mak
125 include $(SRC_PATH
)/tests
/fate
/libavcodec.mak
126 include $(SRC_PATH
)/tests
/fate
/libavdevice.mak
127 include $(SRC_PATH
)/tests
/fate
/libavformat.mak
128 include $(SRC_PATH
)/tests
/fate
/libavresample.mak
129 include $(SRC_PATH
)/tests
/fate
/libavutil.mak
130 include $(SRC_PATH
)/tests
/fate
/libswresample.mak
131 include $(SRC_PATH
)/tests
/fate
/lossless-audio.mak
132 include $(SRC_PATH
)/tests
/fate
/lossless-video.mak
133 include $(SRC_PATH
)/tests
/fate
/microsoft.mak
134 include $(SRC_PATH
)/tests
/fate
/monkeysaudio.mak
135 include $(SRC_PATH
)/tests
/fate
/mp3.mak
136 include $(SRC_PATH
)/tests
/fate
/mpc.mak
137 include $(SRC_PATH
)/tests
/fate
/mpeg4.mak
138 include $(SRC_PATH
)/tests
/fate
/opus.mak
139 include $(SRC_PATH
)/tests
/fate
/pcm.mak
140 include $(SRC_PATH
)/tests
/fate
/probe.mak
141 include $(SRC_PATH
)/tests
/fate
/prores.mak
142 include $(SRC_PATH
)/tests
/fate
/qt.mak
143 include $(SRC_PATH
)/tests
/fate
/qtrle.mak
144 include $(SRC_PATH
)/tests
/fate
/real.mak
145 include $(SRC_PATH
)/tests
/fate
/screen.mak
146 include $(SRC_PATH
)/tests
/fate
/subtitles.mak
147 include $(SRC_PATH
)/tests
/fate
/utvideo.mak
148 include $(SRC_PATH
)/tests
/fate
/video.mak
149 include $(SRC_PATH
)/tests
/fate
/voice.mak
150 include $(SRC_PATH
)/tests
/fate
/vorbis.mak
151 include $(SRC_PATH
)/tests
/fate
/vpx.mak
152 include $(SRC_PATH
)/tests
/fate
/vqf.mak
153 include $(SRC_PATH
)/tests
/fate
/wavpack.mak
154 include $(SRC_PATH
)/tests
/fate
/wma.mak
155 include $(SRC_PATH
)/tests
/fate
/xvid.mak
157 FATE_FFMPEG
+= $(FATE_FFMPEG-yes
) $(FATE_AVCONV
) $(FATE_AVCONV-yes
)
158 FATE-
$(CONFIG_FFMPEG
) += $(FATE_FFMPEG
)
159 FATE-
$(CONFIG_FFPROBE
) += $(FATE_FFPROBE
)
161 FATE_SAMPLES_AVCONV
+= $(FATE_SAMPLES_AVCONV-yes
)
162 FATE_SAMPLES_FFMPEG
+= $(FATE_SAMPLES_FFMPEG-yes
)
163 FATE_EXTERN-
$(CONFIG_FFMPEG
) += $(FATE_SAMPLES_AVCONV
) $(FATE_SAMPLES_FFMPEG
) $(FATE_SAMPLES_FFPROBE
)
164 FATE_EXTERN
+= $(FATE_EXTERN-yes
)
168 RSYNC_OPTIONS-
$(HAVE_RSYNC_CONTIMEOUT
) += --contimeout
=60
169 RSYNC_OPTIONS
= -vrltLW
--timeout
=60 $(RSYNC_OPTIONS-yes
)
171 $(FATE_FFMPEG
) $(FATE_SAMPLES_AVCONV
) $(FATE_SAMPLES_FFMPEG
): ffmpeg
$(EXESUF
)
173 $(FATE_FFPROBE
) $(FATE_SAMPLES_FFPROBE
): ffprobe
$(EXESUF
)
176 FATE
+= $(FATE_FULL
) $(FATE_FULL-yes
)
177 FATE
+= $(FATE_EXTERN
)
179 rsync
$(RSYNC_OPTIONS
) rsync
://fate-suite.ffmpeg.org
/fate-suite
/ $(SAMPLES
)
182 @echo
"warning: only a subset of the fate tests will be run because SAMPLES is not specified"
184 @echo
"use 'make fate-rsync SAMPLES=/path/to/samples' to sync the fate suite"
186 @echo
"$@ requires external samples and SAMPLES not specified"; false
189 FATE_UTILS
= base64 tiny_psnr tiny_ssim
195 $(FATE
) $(FATE_TESTS-no
): $(FATE_UTILS
:%=tests
/%$(HOSTEXESUF
))
196 @echo
"TEST $(@:fate-%=%)"
197 $(Q
)$(SRC_PATH
)/tests
/fate-run.sh
$@
"$(TARGET_SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' '$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' '$(SIZE_TOLERANCE)' '$(CMP_UNIT)' '$(GEN)'
200 @printf
'%s\n' $(sort $(FATE
))
202 coverage.
info: TAG
= LCOV
204 $(M
)lcov
-q
-d
$(CURDIR
) -b
$(SRC_PATH
) --capture | \
205 sed
"s,$(CURDIR)/\./,$(CURDIR)/," > $@
206 $(M
)lcov
-q
--remove
$@
"/usr*" -o
$@
210 $(M
)genhtml
-q
-o
$(CURDIR
)/lcov
$<
212 lcov-reset
: TAG
= LCOV
214 $(M
)lcov
-d
$(CURDIR
) --zerocounters
215 $(Q
)$(RM
) -f coverage.
info
220 $(RM
) -r tests
/vsynth1 tests
/data tools
/lavfi-showfiltfmts
$(EXESUF
)
221 $(RM
) $(CLEANSUFFIXES
:%=tests
/%)
222 $(RM
) $(TESTTOOLS
:%=tests
/%$(HOSTEXESUF
))
223 $(RM
) tests
/pixfmts.mak tests
/test_copy.ffmeta
225 -include $(wildcard tests
/*.d
)
227 .PHONY
: fate
* lcov lcov-reset
228 .INTERMEDIATE
: coverage.
info