annotate run-tests.sh @ 28:69ee50c19c0c tip

Add decimate-b
author Chris Cannam
date Tue, 22 Oct 2013 08:59:42 +0100
parents 20ed07459176
children
rev   line source
Chris@19 1 #!/bin/bash
Chris@19 2
Chris@19 3 mydir="`dirname $0`"
Chris@19 4
Chris@19 5 # Our input sweep is at 96kHz, so these factors correspond to 48, 24,
Chris@19 6 # 12, 6, 3, and 1.5kHz.
Chris@19 7
Chris@19 8 factors="2 4 8 16 32 64"
Chris@24 9 signals="sweep lengthy"
Chris@28 10 impls="zoh decimate decimate_b resample_hq resample_mq resample_lq src"
Chris@19 11
Chris@19 12 original=96000
Chris@19 13
Chris@26 14 resample="$mydir/qm-dsp-resample/resample"
Chris@23 15 decimate="$mydir/qm-dsp-decimate/decimate"
Chris@28 16 decimate_b="$mydir/qm-dsp-decimate/decimate-b"
Chris@23 17
Chris@24 18 indir="$mydir"/testsignals
Chris@24 19
Chris@24 20 outdir="$mydir"/out
Chris@24 21 mkdir -p "$outdir"
Chris@24 22
Chris@23 23 if [ ! -x "$resample" ]; then
Chris@26 24 echo "Program $resample not found: make not run, or make failed?"
Chris@23 25 exit 1
Chris@23 26 fi
Chris@23 27
Chris@23 28 if [ ! -x "$decimate" ]; then
Chris@26 29 echo "Program $decimate not found: make not run, or make failed?"
Chris@23 30 exit 1
Chris@23 31 fi
Chris@23 32
Chris@28 33 if [ ! -x "$decimate_b" ]; then
Chris@28 34 echo "Program $decimate_b not found: make not run, or make failed?"
Chris@28 35 exit 1
Chris@28 36 fi
Chris@28 37
Chris@23 38 if ! sndfile-resample 2>&1 | grep -q samplerate ; then
Chris@23 39 echo "Program sndfile-resample not found in PATH?"
Chris@23 40 exit 1
Chris@23 41 fi
Chris@23 42
Chris@24 43 if ! sndfile-info 2>&1 | grep -q libsndfile ; then
Chris@24 44 echo "Program sndfile-info not found in PATH?"
Chris@24 45 exit 1
Chris@24 46 fi
Chris@24 47
Chris@19 48 do_src() {
Chris@19 49 factor="$1"
Chris@19 50 infile="$2"
Chris@19 51 outfile="$3"
Chris@22 52 time sndfile-resample -to "$(($original/$factor))" "$infile" "$outfile"
Chris@19 53 }
Chris@19 54
Chris@24 55 do_zoh() {
Chris@19 56 factor="$1"
Chris@19 57 infile="$2"
Chris@19 58 outfile="$3"
Chris@24 59 time sndfile-resample -to "$(($original/$factor))" -c 3 "$infile" "$outfile"
Chris@19 60 }
Chris@19 61
Chris@20 62 do_resample_hq() {
Chris@19 63 factor="$1"
Chris@19 64 infile="$2"
Chris@19 65 outfile="$3"
Chris@23 66 time "$resample" --snr 100 --bandwidth 0.02 --to "$(($original/$factor))" "$infile" "$outfile"
Chris@20 67 }
Chris@20 68
Chris@20 69 do_resample_mq() {
Chris@20 70 factor="$1"
Chris@20 71 infile="$2"
Chris@20 72 outfile="$3"
Chris@23 73 time "$resample" --snr 70 --bandwidth 0.03 --to "$(($original/$factor))" "$infile" "$outfile"
Chris@20 74 }
Chris@20 75
Chris@20 76 do_resample_lq() {
Chris@20 77 factor="$1"
Chris@20 78 infile="$2"
Chris@20 79 outfile="$3"
Chris@23 80 time "$resample" --snr 50 --bandwidth 0.05 --to "$(($original/$factor))" "$infile" "$outfile"
Chris@19 81 }
Chris@19 82
Chris@21 83 decimate_twice() {
Chris@21 84 first="$1"
Chris@21 85 second="$2"
Chris@21 86 infile="$3"
Chris@21 87 outfile="$4"
Chris@23 88 "$decimate" --by "$first" "$infile" "$outfile".tmp
Chris@23 89 "$decimate" --by "$second" "$outfile".tmp "$outfile"
Chris@21 90 rm "$outfile".tmp
Chris@21 91 }
Chris@21 92
Chris@19 93 do_decimate() {
Chris@19 94 factor="$1"
Chris@19 95 infile="$2"
Chris@19 96 outfile="$3"
Chris@22 97 time case "$factor" in
Chris@21 98 16) decimate_twice 4 4 "$infile" "$outfile";;
Chris@21 99 32) decimate_twice 8 4 "$infile" "$outfile";;
Chris@21 100 64) decimate_twice 8 8 "$infile" "$outfile";;
Chris@23 101 *) "$decimate" --by "$factor" "$infile" "$outfile";;
Chris@21 102 esac
Chris@19 103 }
Chris@19 104
Chris@28 105 do_decimate_b() {
Chris@28 106 factor="$1"
Chris@28 107 infile="$2"
Chris@28 108 outfile="$3"
Chris@28 109 time "$decimate_b" --by "$factor" "$infile" "$outfile"
Chris@28 110 }
Chris@28 111
Chris@24 112 for s in $signals; do
Chris@24 113 for f in $factors; do
Chris@24 114 for impl in $impls; do
Chris@24 115 echo "signal $s, factor $f, impl $impl..."
Chris@24 116 stem="$s"_"$f"_"$impl"
Chris@24 117 do_$impl "$f" "$indir"/*"$s"*.wav "$outdir"/"$stem".wav > "$outdir"/"$stem".log 2>&1
Chris@24 118 done
Chris@19 119 done
Chris@19 120 done
Chris@19 121
Chris@24 122 # timings
Chris@24 123
Chris@24 124 lengthyframes=`sndfile-info testsignals/sine-lengthy.wav | grep '^Frames' | awk '{ print $3; }'`
Chris@24 125
Chris@24 126 for f in $factors; do
Chris@24 127 echo "For $lengthyframes input frames, decimation factor $f..."
Chris@24 128 for log in out/lengthy_"$f"_*.log; do
Chris@24 129 impl=`basename "$log" .log | sed 's/^.*lengthy_[0-9]*_//'`
Chris@24 130 seconds=`grep '^real' "$log" | tail -1 | sed 's/^.*m\([0-9.]*\)s$/\1/'`
Chris@24 131 fps=`echo "$lengthyframes $seconds / p" | dc`
Chris@24 132 fps=`printf "%11d" "$fps"`
Chris@24 133 echo "$fps fps [$seconds s]: $impl"
Chris@24 134 done | sort -rn
Chris@24 135 echo
Chris@24 136 done
Chris@24 137
Chris@24 138 for impl in $impls; do
Chris@24 139 echo "For $lengthyframes input frames, implementation $impl..."
Chris@24 140 for log in out/lengthy_*_"$impl".log; do
Chris@24 141 f=`basename "$log" .log | sed 's/^.*lengthy_//' | sed 's/_.*//'`
Chris@24 142 seconds=`grep '^real' "$log" | tail -1 | sed 's/^.*m\([0-9.]*\)s$/\1/'`
Chris@24 143 fps=`echo "$lengthyframes $seconds / p" | dc`
Chris@24 144 fps=`printf "%11d" "$fps"`
Chris@24 145 echo "$fps fps [$seconds s]: factor $f"
Chris@24 146 done | sort -rn
Chris@24 147 echo
Chris@24 148 done