mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 20:42:49 +08:00 
			
		
		
		
	 84757de0f5
			
		
	
	84757de0f5
	
	
	
		
			
			Setting CMP=null uses stdout from the test as the diff record in the report without further inspection. This can be useful when the exit status of the test itself determines success while the output is informative. Signed-off-by: Mans Rullgard <mans@mansr.com>
		
			
				
	
	
		
			140 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #! /bin/sh
 | |
| 
 | |
| export LC_ALL=C
 | |
| 
 | |
| base=$(dirname $0)
 | |
| . "${base}/md5.sh"
 | |
| 
 | |
| base64=tests/base64
 | |
| 
 | |
| test="${1#fate-}"
 | |
| samples=$2
 | |
| target_exec=$3
 | |
| target_path=$4
 | |
| command=$5
 | |
| cmp=${6:-diff}
 | |
| ref=${7:-"${base}/ref/fate/${test}"}
 | |
| fuzz=$8
 | |
| threads=${9:-1}
 | |
| thread_type=${10:-3}
 | |
| 
 | |
| outdir="tests/data/fate"
 | |
| outfile="${outdir}/${test}"
 | |
| errfile="${outdir}/${test}.err"
 | |
| cmpfile="${outdir}/${test}.diff"
 | |
| repfile="${outdir}/${test}.rep"
 | |
| 
 | |
| do_tiny_psnr(){
 | |
|     psnr=$(tests/tiny_psnr "$1" "$2" 2 0 0)
 | |
|     val=$(expr "$psnr" : ".*$3: *\([0-9.]*\)")
 | |
|     size1=$(expr "$psnr" : '.*bytes: *\([0-9]*\)')
 | |
|     size2=$(expr "$psnr" : '.*bytes:[ 0-9]*/ *\([0-9]*\)')
 | |
|     res=$(echo "if ($val $4 $5) 1" | bc)
 | |
|     if [ "$res" != 1 ] || [ $size1 != $size2 ]; then
 | |
|         echo "$psnr"
 | |
|         return 1
 | |
|     fi
 | |
| }
 | |
| 
 | |
| oneoff(){
 | |
|     do_tiny_psnr "$1" "$2" MAXDIFF '<=' ${fuzz:-1}
 | |
| }
 | |
| 
 | |
| stddev(){
 | |
|     do_tiny_psnr "$1" "$2" stddev  '<=' ${fuzz:-1}
 | |
| }
 | |
| 
 | |
| run(){
 | |
|     test "${V:-0}" -gt 0 && echo "$target_exec" $target_path/"$@" >&3
 | |
|     $target_exec $target_path/"$@"
 | |
| }
 | |
| 
 | |
| ffmpeg(){
 | |
|     run ffmpeg -v 0 -threads $threads -thread_type $thread_type "$@"
 | |
| }
 | |
| 
 | |
| framecrc(){
 | |
|     ffmpeg "$@" -f framecrc -
 | |
| }
 | |
| 
 | |
| framemd5(){
 | |
|     ffmpeg "$@" -f framemd5 -
 | |
| }
 | |
| 
 | |
| crc(){
 | |
|     ffmpeg "$@" -f crc -
 | |
| }
 | |
| 
 | |
| md5(){
 | |
|     ffmpeg "$@" md5:
 | |
| }
 | |
| 
 | |
| pcm(){
 | |
|     ffmpeg "$@" -vn -f s16le -
 | |
| }
 | |
| 
 | |
| regtest(){
 | |
|     t="${test#$2-}"
 | |
|     ref=${base}/ref/$2/$t
 | |
|     ${base}/${1}-regression.sh $t $2 $3 "$target_exec" "$target_path" "$threads" "$thread_type"
 | |
| }
 | |
| 
 | |
| codectest(){
 | |
|     regtest codec $1 tests/$1
 | |
| }
 | |
| 
 | |
| lavftest(){
 | |
|     regtest lavf lavf tests/vsynth1
 | |
| }
 | |
| 
 | |
| lavfitest(){
 | |
|     cleanfiles="tests/data/lavfi/${test#lavfi-}.nut"
 | |
|     regtest lavfi lavfi tests/vsynth1
 | |
| }
 | |
| 
 | |
| seektest(){
 | |
|     t="${test#seek-}"
 | |
|     ref=${base}/ref/seek/$t
 | |
|     case $t in
 | |
|         image_*) file="tests/data/images/${t#image_}/%02d.${t#image_}" ;;
 | |
|         *)       file=$(echo $t | tr _ '?')
 | |
|                  for d in acodec vsynth2 lavf; do
 | |
|                      test -f tests/data/$d/$file && break
 | |
|                  done
 | |
|                  file=$(echo tests/data/$d/$file)
 | |
|                  ;;
 | |
|     esac
 | |
|     $target_exec $target_path/tests/seek_test $target_path/$file
 | |
| }
 | |
| 
 | |
| mkdir -p "$outdir"
 | |
| 
 | |
| exec 3>&2
 | |
| $command > "$outfile" 2>$errfile
 | |
| err=$?
 | |
| 
 | |
| if [ $err -gt 128 ]; then
 | |
|     sig=$(kill -l $err 2>/dev/null)
 | |
|     test "${sig}" = "${sig%[!A-Za-z]*}" || unset sig
 | |
| fi
 | |
| 
 | |
| if test -e "$ref"; then
 | |
|     case $cmp in
 | |
|         diff)   diff -u -w "$ref" "$outfile"            >$cmpfile ;;
 | |
|         oneoff) oneoff     "$ref" "$outfile" "$fuzz"    >$cmpfile ;;
 | |
|         stddev) stddev     "$ref" "$outfile" "$fuzz"    >$cmpfile ;;
 | |
|         null)   cat               "$outfile"            >$cmpfile ;;
 | |
|     esac
 | |
|     cmperr=$?
 | |
|     test $err = 0 && err=$cmperr
 | |
|     test $err = 0 || cat $cmpfile
 | |
| else
 | |
|     echo "reference file '$ref' not found"
 | |
|     err=1
 | |
| fi
 | |
| 
 | |
| echo "${test}:${sig:-$err}:$($base64 <$cmpfile):$($base64 <$errfile)" >$repfile
 | |
| 
 | |
| test $err = 0 && rm -f $outfile $errfile $cmpfile $cleanfiles
 | |
| exit $err
 |