[FFmpeg-devel] [PATCH 2/4] fate: Allow to test temporary files with ffprobe

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Tue Apr 14 01:11:54 EEST 2020


This is primarily intended to test that muxers correctly write chapters
or metadata; but given that it does this by having our demuxers read the
generated files, it also tests demuxers. And of course it may prove
useful for encoders, too.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
transcode() and stream_remux() both used $7 for the -keep parameter
(that is not set by any test using these two functions) despite $6 being
unused. I could have used $6 for ffprobe_opts, but the relative position
of ffprobe_opts and -keep would be switched between enc_dec() and
transcode()/stream_remux().

 tests/Makefile    |  7 +++++--
 tests/fate-run.sh | 13 +++++++++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/tests/Makefile b/tests/Makefile
index 477f5bef26..bf5b658926 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -200,11 +200,14 @@ include $(SRC_PATH)/tests/fate/xvid.mak
 FATE_FFMPEG += $(FATE_FFMPEG-yes) $(FATE_AVCONV) $(FATE_AVCONV-yes)
 FATE-$(CONFIG_FFMPEG) += $(FATE_FFMPEG)
 FATE-$(CONFIG_FFPROBE) += $(FATE_FFPROBE)
+FATE-$(call ALLYES, FFMPEG FFPROBE) += $(FATE_FFMPEG_FFPROBE)
 
 FATE_SAMPLES_AVCONV           += $(FATE_SAMPLES_AVCONV-yes)
 FATE_SAMPLES_FFMPEG           += $(FATE_SAMPLES_FFMPEG-yes)
 FATE_EXTERN-$(CONFIG_FFMPEG)  += $(FATE_SAMPLES_AVCONV) $(FATE_SAMPLES_FFMPEG)
 FATE_EXTERN-$(CONFIG_FFPROBE) += $(FATE_SAMPLES_FFPROBE)
+FATE_SAMPLES_FFMPEG_FFPROBE   += $(FATE_SAMPLES_FFMPEG_FFPROBE-yes)
+FATE_EXTERN-$(call ALLYES, FFMPEG FFPROBE) += $(FATE_SAMPLES_FFMPEG_FFPROBE)
 FATE_EXTERN                   += $(FATE_EXTERN-yes) $(FATE_SAMPLES_FASTSTART)
 
 FATE += $(FATE-yes)
@@ -212,9 +215,9 @@ FATE += $(FATE-yes)
 RSYNC_OPTIONS-$(HAVE_RSYNC_CONTIMEOUT) += --contimeout=60
 RSYNC_OPTIONS = -vrltLW --timeout=60 $(RSYNC_OPTIONS-yes)
 
-$(FATE_FFMPEG) $(FATE_SAMPLES_AVCONV) $(FATE_SAMPLES_FFMPEG): ffmpeg$(PROGSSUF)$(EXESUF)
+$(FATE_FFMPEG) $(FATE_FFMPEG_FFPROBE) $(FATE_SAMPLES_AVCONV) $(FATE_SAMPLES_FFMPEG) $(FATE_SAMPLES_FFMPEG_FFPROBE): ffmpeg$(PROGSSUF)$(EXESUF)
 
-$(FATE_FFPROBE) $(FATE_SAMPLES_FFPROBE): ffprobe$(PROGSSUF)$(EXESUF)
+$(FATE_FFPROBE) $(FATE_FFMPEG_FFPROBE) $(FATE_SAMPLES_FFPROBE) $(FATE_SAMPLES_FFMPEG_FFPROBE): ffprobe$(PROGSSUF)$(EXESUF)
 
 $(FATE_SAMPLES_FASTSTART): tools/qt-faststart$(EXESUF)
 
diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 552b3dd9df..7c6d753261 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -192,6 +192,7 @@ enc_dec(){
     enc_opt=$4
     dec_fmt=$5
     dec_opt=$6
+    ffprobe_opts=$9
     encfile="${outdir}/${test}.${enc_fmt}"
     decfile="${outdir}/${test}.out.${dec_fmt}"
     cleanfiles="$cleanfiles $decfile"
@@ -207,6 +208,8 @@ enc_dec(){
         -f $dec_fmt -y $tdecfile || return
     do_md5sum $decfile
     tests/tiny_psnr${HOSTEXECSUF} $srcfile $decfile $cmp_unit $cmp_shift
+    test -z $ffprobe_opts || \
+        run ffprobe${PROGSUF}${EXECSUF} $ffprobe_opts -v 0 $tencfile || return
 }
 
 transcode(){
@@ -215,8 +218,9 @@ transcode(){
     enc_fmt=$3
     enc_opt=$4
     final_decode=$5
+    ffprobe_opts=$7
     encfile="${outdir}/${test}.${enc_fmt}"
-    test "$7" = -keep || cleanfiles="$cleanfiles $encfile"
+    test "$6" = -keep || cleanfiles="$cleanfiles $encfile"
     tsrcfile=$(target_path $srcfile)
     tencfile=$(target_path $encfile)
     ffmpeg -f $src_fmt $DEC_OPTS -i $tsrcfile $ENC_OPTS $enc_opt $FLAGS \
@@ -225,6 +229,8 @@ transcode(){
     echo $(wc -c $encfile)
     ffmpeg $DEC_OPTS -i $tencfile $ENC_OPTS $FLAGS $final_decode \
         -f framecrc - || return
+    test -z $ffprobe_opts || \
+        run ffprobe${PROGSUF}${EXECSUF} $ffprobe_opts -v 0 $tencfile || return
 }
 
 stream_remux(){
@@ -233,14 +239,17 @@ stream_remux(){
     enc_fmt=$3
     stream_maps=$4
     final_decode=$5
+    ffprobe_opts=$7
     encfile="${outdir}/${test}.${enc_fmt}"
-    test "$7" = -keep || cleanfiles="$cleanfiles $encfile"
+    test "$6" = -keep || cleanfiles="$cleanfiles $encfile"
     tsrcfile=$(target_path $srcfile)
     tencfile=$(target_path $encfile)
     ffmpeg -f $src_fmt -i $tsrcfile $stream_maps -codec copy $FLAGS \
         -f $enc_fmt -y $tencfile || return
     ffmpeg $DEC_OPTS -i $tencfile $ENC_OPTS $FLAGS $final_decode \
         -f framecrc - || return
+    test -z $ffprobe_opts || \
+        run ffprobe${PROGSUF}${EXECSUF} $ffprobe_opts -v 0 $tencfile || return
 }
 
 # FIXME: There is a certain duplication between the avconv-related helper
-- 
2.20.1



More information about the ffmpeg-devel mailing list