Put custom_encoder_init decl behind CUSTOM_MODES. More softclip tests.
[opus.git] / tests / run_vectors.sh
1 #!/bin/sh
2
3 # Copyright (c) 2011-2012 Jean-Marc Valin
4 #
5 #  This file is extracted from RFC6716. Please see that RFC for additional
6 #  information.
7 #
8 #  Redistribution and use in source and binary forms, with or without
9 #  modification, are permitted provided that the following conditions
10 #  are met:
11 #
12 #  - Redistributions of source code must retain the above copyright
13 #  notice, this list of conditions and the following disclaimer.
14 #
15 #  - Redistributions in binary form must reproduce the above copyright
16 #  notice, this list of conditions and the following disclaimer in the
17 #  documentation and/or other materials provided with the distribution.
18 #
19 #  - Neither the name of Internet Society, IETF or IETF Trust, nor the
20 #  names of specific contributors, may be used to endorse or promote
21 #  products derived from this software without specific prior written
22 #  permission.
23 #
24 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 #  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 #  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 #  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
28 #  OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29 #  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
30 #  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31 #  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32 #  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33 #  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34 #  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
36 rm logs_mono.txt
37 rm logs_stereo.txt
38
39 if [ "$#" -ne "3" ]; then
40     echo "usage: run_vectors.sh <exec path> <vector path> <rate>"
41     exit 1
42 fi
43
44 CMD_PATH=$1
45 VECTOR_PATH=$2
46 RATE=$3
47
48 OPUS_DEMO=$CMD_PATH/opus_demo
49 OPUS_COMPARE=$CMD_PATH/opus_compare
50
51 if [ -d $VECTOR_PATH ]; then
52     echo Test vectors found in $VECTOR_PATH
53 else
54     echo No test vectors found
55     #Don't make the test fail here because the test vectors
56     #will be distributed separately
57     exit 0
58 fi
59
60 if [ ! -x $OPUS_COMPARE ]; then
61     echo ERROR: Compare program not found: $OPUS_COMPARE
62     exit 1
63 fi
64
65 if [ -x $OPUS_DEMO ]; then
66     echo Decoding with $OPUS_DEMO
67 else
68     echo ERROR: Decoder not found: $OPUS_DEMO
69     exit 1
70 fi
71
72 echo "=============="
73 echo Testing mono
74 echo "=============="
75 echo
76
77 for file in 01 02 03 04 05 06 07 08 09 10 11 12
78 do
79     if [ -e $VECTOR_PATH/testvector$file.bit ]; then
80         echo Testing testvector$file
81     else
82         echo Bitstream file not found: testvector$file.bit
83     fi
84     if $OPUS_DEMO -d $RATE 1 $VECTOR_PATH/testvector$file.bit tmp.out >> logs_mono.txt 2>&1; then
85         echo successfully decoded
86     else
87         echo ERROR: decoding failed
88         exit 1
89     fi
90     $OPUS_COMPARE -r $RATE $VECTOR_PATH/testvector$file.dec tmp.out >> logs_mono.txt 2>&1
91     float_ret=$?
92     if [ "$float_ret" -eq "0" ]; then
93         echo output matches reference
94     else
95         echo ERROR: output does not match reference
96         exit 1
97     fi
98     echo
99 done
100
101 echo "=============="
102 echo Testing stereo
103 echo "=============="
104 echo
105
106 for file in 01 02 03 04 05 06 07 08 09 10 11 12
107 do
108     if [ -e $VECTOR_PATH/testvector$file.bit ]; then
109         echo Testing testvector$file
110     else
111         echo Bitstream file not found: testvector$file
112     fi
113     if $OPUS_DEMO -d $RATE 2 $VECTOR_PATH/testvector$file.bit tmp.out >> logs_stereo.txt 2>&1; then
114         echo successfully decoded
115     else
116         echo ERROR: decoding failed
117         exit 1
118     fi
119     $OPUS_COMPARE -s -r $RATE $VECTOR_PATH/testvector$file.dec tmp.out >> logs_stereo.txt 2>&1
120     float_ret=$?
121     if [ "$float_ret" -eq "0" ]; then
122         echo output matches reference
123     else
124         echo ERROR: output does not match reference
125         exit 1
126     fi
127     echo
128 done
129
130
131
132 echo All tests have passed successfully
133 grep quality logs_mono.txt | awk '{sum+=$4}END{print "Average mono quality is", sum/NR, "%"}'
134 grep quality logs_stereo.txt | awk '{sum+=$4}END{print "Average stereo quality is", sum/NR, "%"}'