mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-24 14:44:45 +00:00
added libraries: opus flac libsndfile updated: libvorbis libogg openal - Everything works as expected for now. Bare in mind libsndfile needed the check for whether or not it could find the xiph libraries removed in order for this to work.
100 lines
2.8 KiB
C
100 lines
2.8 KiB
C
/********************************************************************
|
|
* *
|
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
|
* *
|
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
|
|
* by the Xiph.Org Foundation https://xiph.org/ *
|
|
* *
|
|
********************************************************************
|
|
|
|
function: vorbis coded test suite using vorbisfile
|
|
|
|
********************************************************************/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
|
|
#include "util.h"
|
|
#include "write_read.h"
|
|
|
|
#define DATA_LEN 2048
|
|
|
|
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
|
|
|
|
|
static int check_output (const float * data_in, unsigned len, float allowable);
|
|
|
|
int
|
|
main(void){
|
|
static float data_out [DATA_LEN] ;
|
|
static float data_in [DATA_LEN] ;
|
|
|
|
/* Do safest and most used sample rates first. */
|
|
int sample_rates [] = { 44100, 48000, 32000, 22050, 16000, 96000 } ;
|
|
unsigned k ;
|
|
int errors = 0 ;
|
|
int ch;
|
|
|
|
gen_windowed_sine (data_out, ARRAY_LEN (data_out), 0.95);
|
|
|
|
for(ch=1;ch<=8;ch++){
|
|
float q=-.05;
|
|
printf("\nTesting %d channel%s\n\n",ch,ch==1?"":"s");
|
|
while(q<1.){
|
|
for (k = 0 ; k < ARRAY_LEN (sample_rates); k ++) {
|
|
char filename [64] ;
|
|
snprintf (filename, sizeof (filename), "vorbis_%dch_q%.1f_%u.ogg", ch,q*10,sample_rates [k]);
|
|
|
|
printf (" %-20s : ", filename);
|
|
fflush (stdout);
|
|
|
|
/* Set to know value. */
|
|
set_data_in (data_in, ARRAY_LEN (data_in), 3.141);
|
|
|
|
write_vorbis_data_or_die (filename, sample_rates [k], q, data_out, ARRAY_LEN (data_out),ch);
|
|
read_vorbis_data_or_die (filename, sample_rates [k], data_in, ARRAY_LEN (data_in));
|
|
|
|
if (check_output (data_in, ARRAY_LEN (data_in), (.15f - .1f*q)) != 0)
|
|
errors ++ ;
|
|
else {
|
|
puts ("ok");
|
|
remove (filename);
|
|
}
|
|
}
|
|
q+=.1;
|
|
}
|
|
}
|
|
|
|
if (errors)
|
|
exit (1);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
check_output (const float * data_in, unsigned len, float allowable)
|
|
{
|
|
float max_abs = 0.0 ;
|
|
unsigned k ;
|
|
|
|
for (k = 0 ; k < len ; k++) {
|
|
float temp = fabs (data_in [k]);
|
|
max_abs = MAX (max_abs, temp);
|
|
}
|
|
|
|
if (max_abs < 0.95-allowable) {
|
|
printf ("Error : max_abs (%f) too small.\n", max_abs);
|
|
return 1 ;
|
|
} else if (max_abs > .95+allowable) {
|
|
printf ("Error : max_abs (%f) too big.\n", max_abs);
|
|
return 1 ;
|
|
}
|
|
|
|
return 0 ;
|
|
}
|
|
|