From 4618eee0927273de24a16c8b0d201716dda7893e Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Tue, 29 Jan 2008 08:17:50 +1100 Subject: [PATCH] Added a check to make sure the encoder signal matches that of the decoder --- libcelt/testcelt.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/libcelt/testcelt.c b/libcelt/testcelt.c index dfb73429..5675c942 100644 --- a/libcelt/testcelt.c +++ b/libcelt/testcelt.c @@ -33,19 +33,25 @@ #include "celt.h" #include #include +#include #define FRAME_SIZE 256 #define CHANNELS 1 int main(int argc, char *argv[]) -{ +{ + int i; char *inFile, *outFile; FILE *fin, *fout; short in[FRAME_SIZE*CHANNELS]; + short out[FRAME_SIZE*CHANNELS]; CELTEncoder *enc; CELTDecoder *dec; int len; char data[1024]; + + double rmsd = 0; + int count = 0; inFile = argv[1]; fin = fopen(inFile, "rb"); @@ -62,21 +68,30 @@ int main(int argc, char *argv[]) len = celt_encode(enc, in, data, 32); //printf ("\n"); //printf ("%d\n", len); -#if 1 - /* this is to simulate packet loss */ + /* This is to simulate packet loss */ if (rand()%100==-1) - celt_decode(dec, NULL, len, in); + celt_decode(dec, NULL, len, out); else - celt_decode(dec, data, len, in); + celt_decode(dec, data, len, out); //printf ("\n"); -#endif - fwrite(in, sizeof(short), FRAME_SIZE*CHANNELS, fout); + for (i=0;i 0) + { + rmsd = sqrt(rmsd/(1.0*FRAME_SIZE*CHANNELS*count)); + fprintf (stderr, "Error: encoder doesn't match decoder\n"); + fprintf (stderr, "RMS mismatch is %f\n", rmsd); + return 1; + } else { + fprintf (stderr, "Encoder matches decoder!!\n"); + } return 0; }