From d1ade6c1d111f92c18842ec4fd2a09fcc19d6d42 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 25 Mar 2010 03:58:42 +0000 Subject: [PATCH] Make the 'make check' cover all the uncoupled codebooks svn path=/trunk/vorbis/; revision=17023 --- test/test.c | 44 ++++++++++++++++++++++++-------------------- test/write_read.c | 4 ++-- test/write_read.h | 2 +- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/test/test.c b/test/test.c index 69d6d84..b777e87 100644 --- a/test/test.c +++ b/test/test.c @@ -27,7 +27,7 @@ #define MAX(a,b) ((a) > (b) ? (a) : (b)) -static int check_output (const float * data_in, unsigned len); +static int check_output (const float * data_in, unsigned len, float allowable); int main(void){ @@ -38,28 +38,32 @@ main(void){ int sample_rates [] = { 44100, 48000, 32000, 22050, 16000, 96000 } ; unsigned k ; int errors = 0 ; + float q=-.05; gen_windowed_sine (data_out, ARRAY_LEN (data_out), 0.95); - for (k = 0 ; k < ARRAY_LEN (sample_rates); k ++) { - char filename [64] ; - snprintf (filename, sizeof (filename), "vorbis_%u.ogg", sample_rates [k]); + while(q<1.){ + for (k = 0 ; k < ARRAY_LEN (sample_rates); k ++) { + char filename [64] ; + snprintf (filename, sizeof (filename), "vorbis_q%.1f_%u.ogg", q*10,sample_rates [k]); - printf (" %-20s : ", filename); - fflush (stdout); + printf (" %-20s : ", filename); + fflush (stdout); - /* Set to know value. */ - set_data_in (data_in, ARRAY_LEN (data_in), 3.141); + /* Set to know value. */ + set_data_in (data_in, ARRAY_LEN (data_in), 3.141); - write_vorbis_data_or_die (filename, sample_rates [k], data_out, ARRAY_LEN (data_out)); - read_vorbis_data_or_die (filename, sample_rates [k], data_in, ARRAY_LEN (data_in)); + write_vorbis_data_or_die (filename, sample_rates [k], q, data_out, ARRAY_LEN (data_out)); + read_vorbis_data_or_die (filename, sample_rates [k], data_in, ARRAY_LEN (data_in)); - if (check_output (data_in, ARRAY_LEN (data_in)) != 0) - errors ++ ; - else { - puts ("ok"); - remove (filename); - } + if (check_output (data_in, ARRAY_LEN (data_in), (.15f - .1f*q)) != 0) + errors ++ ; + else { + puts ("ok"); + remove (filename); + } + } + q+=.1; } if (errors) @@ -69,7 +73,7 @@ main(void){ } static int -check_output (const float * data_in, unsigned len) +check_output (const float * data_in, unsigned len, float allowable) { float max_abs = 0.0 ; unsigned k ; @@ -78,11 +82,11 @@ check_output (const float * data_in, unsigned len) float temp = fabs (data_in [k]); max_abs = MAX (max_abs, temp); } - - if (max_abs < 0.9) { + + if (max_abs < 0.95-allowable) { printf ("Error : max_abs (%f) too small.\n", max_abs); return 1 ; - } else if (max_abs > 1.0) { + } else if (max_abs > .95+allowable) { printf ("Error : max_abs (%f) too big.\n", max_abs); return 1 ; } diff --git a/test/write_read.c b/test/write_read.c index 6fe4aae..4fa5686 100644 --- a/test/write_read.c +++ b/test/write_read.c @@ -29,7 +29,7 @@ /* The following function is basically a hacked version of the code in * examples/encoder_example.c */ void -write_vorbis_data_or_die (const char *filename, int srate, const float * data, int count) +write_vorbis_data_or_die (const char *filename, int srate, float q, const float * data, int count) { FILE * file ; ogg_stream_state os; @@ -51,7 +51,7 @@ write_vorbis_data_or_die (const char *filename, int srate, const float * data, i vorbis_info_init (&vi); - ret = vorbis_encode_init_vbr (&vi,1,srate,0.8); + ret = vorbis_encode_init_vbr (&vi,1,srate,q); if (ret) { printf ("vorbis_encode_init_vbr return %d\n", ret) ; exit (1) ; diff --git a/test/write_read.h b/test/write_read.h index b95d001..51674ea 100644 --- a/test/write_read.h +++ b/test/write_read.h @@ -17,7 +17,7 @@ /* Write supplied data to an Ogg/Vorbis file with specified filename at * specified sample rate. Assumes a single channel of audio. */ -void write_vorbis_data_or_die (const char *filename, int srate, +void write_vorbis_data_or_die (const char *filename, int srate, float q, const float * data, int count) ; /* Read given Ogg/Vorbis file into data specified data array. This -- 2.7.4