Commit | Line | Data |
---|---|---|
2ba45a60 DM |
1 | FFSERVER_REFFILE = $(SRC_PATH)/tests/ffserver.regression.ref |
2 | ||
3 | THREADS = 1 | |
4 | VREF = tests/vsynth1/00.pgm | |
5 | AREF = tests/data/asynth1.sw | |
6 | ||
7 | FATEW = 34 | |
8 | FATEH = 34 | |
9 | ||
10 | $(AREF): CMP= | |
11 | ||
12 | ffservertest: ffserver$(EXESUF) tests/vsynth1/00.pgm tests/data/asynth1.sw | |
13 | @echo | |
14 | @echo "Unfortunately ffserver is broken and therefore its regression" | |
15 | @echo "test fails randomly. Treat the results accordingly." | |
16 | @echo | |
17 | $(SRC_PATH)/tests/ffserver-regression.sh $(FFSERVER_REFFILE) $(SRC_PATH)/tests/ffserver.conf | |
18 | ||
19 | OBJDIRS += tests/data tests/vsynth1 tests/data/filtergraphs | |
20 | ||
21 | $(VREF): tests/videogen$(HOSTEXESUF) | tests/vsynth1 | |
22 | $(M)./$< 'tests/vsynth1/' | |
23 | ||
24 | $(AREF): tests/audiogen$(HOSTEXESUF) | tests/data | |
25 | $(M)./$< $@ | |
26 | ||
27 | tests/data/asynth-%.wav: tests/audiogen$(HOSTEXESUF) | tests/data | |
28 | $(M)./$< $@ $(subst -, ,$*) | |
29 | ||
30 | tests/data/vsynth1.yuv: tests/videogen$(HOSTEXESUF) | tests/data | |
31 | $(M)$< $@ | |
32 | ||
33 | tests/data/vsynth2.yuv: tests/rotozoom$(HOSTEXESUF) | tests/data | |
f6fa7814 DM |
34 | $(M)$< $(SRC_PATH)/tests/reference.pnm $@ |
35 | ||
36 | tests/data/vsynth_lena.yuv: tests/rotozoom$(HOSTEXESUF) | tests/data | |
2ba45a60 DM |
37 | $(M)$< $(SAMPLES)/lena.pnm $@ |
38 | ||
39 | tests/data/vsynth3.yuv: tests/videogen$(HOSTEXESUF) | tests/data | |
40 | $(M)$< $@ $(FATEW) $(FATEH) | |
41 | ||
f6fa7814 DM |
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 | |
2ba45a60 | 45 | |
f6fa7814 | 46 | tests/data/ffprobe-test.nut: ffmpeg$(EXESUF) tests/test_copy.ffmeta |
2ba45a60 DM |
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]" \ | |
f6fa7814 | 49 | -f ffmetadata -i $(TARGET_PATH)/tests/test_copy.ffmeta \ |
2ba45a60 DM |
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 \ | |
f6fa7814 | 53 | -y $(TARGET_PATH)/$@ 2>/dev/null |
2ba45a60 DM |
54 | |
55 | tests/data/%.sw tests/data/asynth% tests/data/vsynth%.yuv tests/vsynth%/00.pgm tests/data/%.nut: TAG = GEN | |
56 | ||
57 | tests/data/filtergraphs/%: TAG = COPY | |
58 | tests/data/filtergraphs/%: $(SRC_PATH)/tests/filtergraphs/% | tests/data/filtergraphs | |
59 | $(M)cp $< $@ | |
60 | ||
61 | RUNNING_FATE := $(filter check fate%,$(filter-out fate-rsync,$(MAKECMDGOALS))) | |
62 | ||
63 | # Check sanity of dependencies when running FATE tests. | |
64 | ifneq (,$(RUNNING_FATE)) | |
65 | CHKCFG = $(if $($(1))$(!$(1)),$($(1)), $(error No such config: $(1))) | |
66 | endif | |
67 | ||
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)))), \ | |
72 | yes) | |
73 | ||
74 | ENCDEC = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER \ | |
75 | $(firstword $(2))_MUXER $(lastword $(2))_DEMUXER) | |
76 | ||
77 | ENCDEC2 = $(call ALLYES, $(firstword $(1))_ENCODER $(lastword $(1))_DECODER \ | |
78 | $(firstword $(2))_ENCODER $(lastword $(2))_DECODER \ | |
79 | $(firstword $(3))_MUXER $(lastword $(3))_DEMUXER) | |
80 | ||
81 | DEMDEC = $(call ALLYES, $(1)_DEMUXER $(2:%=%_DECODER)) | |
82 | ENCMUX = $(call ALLYES, $(1:%=%_ENCODER) $(2)_MUXER) | |
83 | ||
84 | DEMMUX = $(call ALLYES, $(1)_DEMUXER $(2)_MUXER) | |
85 | ||
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) | |
89 | ||
90 | PARSERDEMDEC = $(call ALLYES, $(1)_PARSER $(2)_DEMUXER $(3)_DECODER) | |
91 | ||
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 | |
96 | ||
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 | |
f6fa7814 | 137 | include $(SRC_PATH)/tests/fate/mpeg4.mak |
2ba45a60 DM |
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 | |
156 | ||
157 | FATE_FFMPEG += $(FATE_FFMPEG-yes) $(FATE_AVCONV) $(FATE_AVCONV-yes) | |
158 | FATE-$(CONFIG_FFMPEG) += $(FATE_FFMPEG) | |
159 | FATE-$(CONFIG_FFPROBE) += $(FATE_FFPROBE) | |
160 | ||
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) | |
165 | ||
166 | FATE += $(FATE-yes) | |
167 | ||
168 | RSYNC_OPTIONS-$(HAVE_RSYNC_CONTIMEOUT) += --contimeout=60 | |
169 | RSYNC_OPTIONS = -vrltLW --timeout=60 $(RSYNC_OPTIONS-yes) | |
170 | ||
171 | $(FATE_FFMPEG) $(FATE_SAMPLES_AVCONV) $(FATE_SAMPLES_FFMPEG): ffmpeg$(EXESUF) | |
172 | ||
173 | $(FATE_FFPROBE) $(FATE_SAMPLES_FFPROBE): ffprobe$(EXESUF) | |
174 | ||
175 | ifdef SAMPLES | |
176 | FATE += $(FATE_FULL) $(FATE_FULL-yes) | |
177 | FATE += $(FATE_EXTERN) | |
178 | fate-rsync: | |
179 | rsync $(RSYNC_OPTIONS) rsync://fate-suite.ffmpeg.org/fate-suite/ $(SAMPLES) | |
180 | else | |
181 | fate:: | |
182 | @echo "warning: only a subset of the fate tests will be run because SAMPLES is not specified" | |
183 | fate-rsync: | |
184 | @echo "use 'make fate-rsync SAMPLES=/path/to/samples' to sync the fate suite" | |
185 | $(FATE_EXTERN): | |
186 | @echo "$@ requires external samples and SAMPLES not specified"; false | |
187 | endif | |
188 | ||
189 | FATE_UTILS = base64 tiny_psnr tiny_ssim | |
190 | ||
191 | TOOL = ffmpeg | |
192 | ||
193 | fate:: $(FATE) | |
194 | ||
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)' | |
198 | ||
199 | fate-list: | |
200 | @printf '%s\n' $(sort $(FATE)) | |
201 | ||
202 | coverage.info: TAG = LCOV | |
203 | coverage.info: | |
204 | $(M)lcov -q -d $(CURDIR) -b $(SRC_PATH) --capture | \ | |
205 | sed "s,$(CURDIR)/\./,$(CURDIR)/," > $@ | |
206 | $(M)lcov -q --remove $@ "/usr*" -o $@ | |
207 | ||
208 | lcov: TAG = GENHTML | |
209 | lcov: coverage.info | |
210 | $(M)genhtml -q -o $(CURDIR)/lcov $< | |
211 | ||
212 | lcov-reset: TAG = LCOV | |
213 | lcov-reset: | |
214 | $(M)lcov -d $(CURDIR) --zerocounters | |
215 | $(Q)$(RM) -f coverage.info | |
216 | ||
217 | clean:: testclean | |
218 | ||
219 | testclean: | |
220 | $(RM) -r tests/vsynth1 tests/data tools/lavfi-showfiltfmts$(EXESUF) | |
221 | $(RM) $(CLEANSUFFIXES:%=tests/%) | |
222 | $(RM) $(TESTTOOLS:%=tests/%$(HOSTEXESUF)) | |
f6fa7814 | 223 | $(RM) tests/pixfmts.mak tests/test_copy.ffmeta |
2ba45a60 DM |
224 | |
225 | -include $(wildcard tests/*.d) | |
226 | ||
227 | .PHONY: fate* lcov lcov-reset | |
228 | .INTERMEDIATE: coverage.info |