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 36rm logs_mono.txt 37rm logs_stereo.txt 38 39if [ "$#" -ne "3" ]; then 40 echo "usage: run_vectors.sh <exec path> <vector path> <rate>" 41 exit 1 42fi 43 44CMD_PATH=$1 45VECTOR_PATH=$2 46RATE=$3 47 48: ${OPUS_DEMO:=$CMD_PATH/opus_demo} 49: ${OPUS_COMPARE:=$CMD_PATH/opus_compare} 50 51if [ -d $VECTOR_PATH ]; then 52 echo Test vectors found in $VECTOR_PATH 53else 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 58fi 59 60if [ ! -x $OPUS_COMPARE ]; then 61 echo ERROR: Compare program not found: $OPUS_COMPARE 62 exit 1 63fi 64 65if [ -x $OPUS_DEMO ]; then 66 echo Decoding with $OPUS_DEMO 67else 68 echo ERROR: Decoder not found: $OPUS_DEMO 69 exit 1 70fi 71 72echo "==============" 73echo Testing mono 74echo "==============" 75echo 76 77for file in 01 02 03 04 05 06 07 08 09 10 11 12 78do 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 99done 100 101echo "==============" 102echo Testing stereo 103echo "==============" 104echo 105 106for file in 01 02 03 04 05 06 07 08 09 10 11 12 107do 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 128done 129 130 131 132echo All tests have passed successfully 133grep quality logs_mono.txt | awk '{sum+=$4}END{print "Average mono quality is", sum/NR, "%"}' 134grep quality logs_stereo.txt | awk '{sum+=$4}END{print "Average stereo quality is", sum/NR, "%"}' 135