Mercurial > hg > sv-dependency-builds
comparison src/libvorbis-1.3.3/test/test.c @ 1:05aa0afa9217
Bring in flac, ogg, vorbis
author | Chris Cannam |
---|---|
date | Tue, 19 Mar 2013 17:37:49 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:c7265573341e | 1:05aa0afa9217 |
---|---|
1 /******************************************************************** | |
2 * * | |
3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * | |
4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * | |
5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * | |
6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * | |
7 * * | |
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * | |
9 * by the Xiph.Org Foundation http://www.xiph.org/ * | |
10 * * | |
11 ******************************************************************** | |
12 | |
13 function: vorbis coded test suite using vorbisfile | |
14 last mod: $Id: test.c 13293 2007-07-24 00:09:47Z erikd $ | |
15 | |
16 ********************************************************************/ | |
17 | |
18 #include <stdio.h> | |
19 #include <stdlib.h> | |
20 #include <math.h> | |
21 | |
22 #include "util.h" | |
23 #include "write_read.h" | |
24 | |
25 #define DATA_LEN 2048 | |
26 | |
27 #define MAX(a,b) ((a) > (b) ? (a) : (b)) | |
28 | |
29 | |
30 static int check_output (const float * data_in, unsigned len, float allowable); | |
31 | |
32 int | |
33 main(void){ | |
34 static float data_out [DATA_LEN] ; | |
35 static float data_in [DATA_LEN] ; | |
36 | |
37 /* Do safest and most used sample rates first. */ | |
38 int sample_rates [] = { 44100, 48000, 32000, 22050, 16000, 96000 } ; | |
39 unsigned k ; | |
40 int errors = 0 ; | |
41 int ch; | |
42 | |
43 gen_windowed_sine (data_out, ARRAY_LEN (data_out), 0.95); | |
44 | |
45 for(ch=1;ch<=8;ch++){ | |
46 float q=-.05; | |
47 printf("\nTesting %d channel%s\n\n",ch,ch==1?"":"s"); | |
48 while(q<1.){ | |
49 for (k = 0 ; k < ARRAY_LEN (sample_rates); k ++) { | |
50 char filename [64] ; | |
51 snprintf (filename, sizeof (filename), "vorbis_%dch_q%.1f_%u.ogg", ch,q*10,sample_rates [k]); | |
52 | |
53 printf (" %-20s : ", filename); | |
54 fflush (stdout); | |
55 | |
56 /* Set to know value. */ | |
57 set_data_in (data_in, ARRAY_LEN (data_in), 3.141); | |
58 | |
59 write_vorbis_data_or_die (filename, sample_rates [k], q, data_out, ARRAY_LEN (data_out),ch); | |
60 read_vorbis_data_or_die (filename, sample_rates [k], data_in, ARRAY_LEN (data_in)); | |
61 | |
62 if (check_output (data_in, ARRAY_LEN (data_in), (.15f - .1f*q)) != 0) | |
63 errors ++ ; | |
64 else { | |
65 puts ("ok"); | |
66 remove (filename); | |
67 } | |
68 } | |
69 q+=.1; | |
70 } | |
71 } | |
72 | |
73 if (errors) | |
74 exit (1); | |
75 | |
76 return 0; | |
77 } | |
78 | |
79 static int | |
80 check_output (const float * data_in, unsigned len, float allowable) | |
81 { | |
82 float max_abs = 0.0 ; | |
83 unsigned k ; | |
84 | |
85 for (k = 0 ; k < len ; k++) { | |
86 float temp = fabs (data_in [k]); | |
87 max_abs = MAX (max_abs, temp); | |
88 } | |
89 | |
90 if (max_abs < 0.95-allowable) { | |
91 printf ("Error : max_abs (%f) too small.\n", max_abs); | |
92 return 1 ; | |
93 } else if (max_abs > .95+allowable) { | |
94 printf ("Error : max_abs (%f) too big.\n", max_abs); | |
95 return 1 ; | |
96 } | |
97 | |
98 return 0 ; | |
99 } | |
100 |