Compare pre-decoded wav with decoded opus data

This commit is contained in:
Hraban Luyat 2015-07-12 11:08:13 +00:00
parent d7e886a76b
commit 974609055b
2 changed files with 29 additions and 5 deletions

View file

@ -8,6 +8,7 @@ import (
"fmt"
"io"
"io/ioutil"
"math"
"os"
"reflect"
"strings"
@ -71,7 +72,7 @@ func opus2pcm(t *testing.T, fname string, buffersize int) []int16 {
}
// Extract raw pcm data from .wav file
func exctractWavPcm(t *testing.T, fname string) []int16 {
func extractWavPcm(t *testing.T, fname string) []int16 {
bytes, err := ioutil.ReadFile(fname)
if err != nil {
t.Fatalf("Error reading file data from %s: %v", fname, err)
@ -89,12 +90,35 @@ func exctractWavPcm(t *testing.T, fname string) []int16 {
return samples
}
func TestStream(t *testing.T) {
pcm := opus2pcm(t, "testdata/speech_8.opus", 10000)
if len(pcm) != 518400 {
t.Fatalf("Unexpected length of decoded opus file: %d", len(pcm))
func maxDiff(a []int16, b []int16) int32 {
if len(a) != len(b) {
return math.MaxInt16
}
var max int32 = 0
for i := range a {
d := int32(a[i]) - int32(b[i])
if d < 0 {
d = -d
}
if d > max {
max = d
}
}
return max
}
func TestStream(t *testing.T) {
opuspcm := opus2pcm(t, "testdata/speech_8.opus", 10000)
wavpcm := extractWavPcm(t, "testdata/speech_8.wav")
if len(opuspcm) != len(wavpcm) {
t.Fatalf("Unexpected length of decoded opus file: %d (.wav: %d)", len(opuspcm), len(wavpcm))
}
d := maxDiff(opuspcm, wavpcm)
// No science behind this number
const epsilon = 12
if d > epsilon {
t.Errorf("Maximum difference between decoded streams too high: %d", d)
}
}
func TestStreamSmallBuffer(t *testing.T) {

BIN
testdata/speech_8.wav vendored Normal file

Binary file not shown.