mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 01:26:58 +00:00
libsndfile: update to 1.0.19 (LBSNDF-7)
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0186 http://www.mega-nerd.com/libsndfile/libsndfile-1.0.19.tar.gz This will likely require a fresh boostrap to updated source checkouts. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13415 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Copyright (C) 1999-2005 Erik de Castro Lopo <erikd@mega-nerd.com>
|
||||
** Copyright (C) 1999-2009 Erik de Castro Lopo <erikd@mega-nerd.com>
|
||||
**
|
||||
** This program is free software; you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
@@ -32,8 +32,6 @@
|
||||
#include "dft_cmp.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include "float_cast.h"
|
||||
|
||||
#define SAMPLE_RATE 16000
|
||||
|
||||
static void float_scaled_test (const char *filename, int allow_exit, int replace_float, int filetype, double target_snr) ;
|
||||
@@ -50,9 +48,11 @@ static void double_int_big_test (const char * filename) ;
|
||||
|
||||
|
||||
static double double_data [DFT_DATA_LENGTH] ;
|
||||
static double test_data [DFT_DATA_LENGTH] ;
|
||||
static double double_test [DFT_DATA_LENGTH] ;
|
||||
|
||||
static float float_data [DFT_DATA_LENGTH] ;
|
||||
static float float_test [DFT_DATA_LENGTH] ;
|
||||
|
||||
static double double_data [DFT_DATA_LENGTH] ;
|
||||
static short short_data [DFT_DATA_LENGTH] ;
|
||||
static int int_data [DFT_DATA_LENGTH] ;
|
||||
@@ -110,10 +110,12 @@ main (int argc, char *argv [])
|
||||
float_scaled_test ("pcm_16.sds", allow_exit, SF_FALSE, SF_FORMAT_SDS | SF_FORMAT_PCM_16, -140.0) ;
|
||||
float_scaled_test ("pcm_24.sds", allow_exit, SF_FALSE, SF_FORMAT_SDS | SF_FORMAT_PCM_24, -170.0) ;
|
||||
|
||||
#ifdef HAVE_FLAC_ALL_H
|
||||
#if HAVE_EXTERNAL_LIBS
|
||||
float_scaled_test ("flac_8.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_S8, -39.0) ;
|
||||
float_scaled_test ("flac_16.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_16, -87.0) ;
|
||||
float_scaled_test ("flac_24.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_24, -138.0) ;
|
||||
|
||||
float_scaled_test ("vorbis.oga", allow_exit, SF_FALSE, SF_FORMAT_OGG | SF_FORMAT_VORBIS, -31.0) ;
|
||||
#endif
|
||||
|
||||
float_scaled_test ("replace_float.raw", allow_exit, SF_TRUE, SF_ENDIAN_LITTLE | SF_FORMAT_RAW | SF_FORMAT_FLOAT, -163.0) ;
|
||||
@@ -160,10 +162,12 @@ main (int argc, char *argv [])
|
||||
double_scaled_test ("pcm_16.sds", allow_exit, SF_FALSE, SF_FORMAT_SDS | SF_FORMAT_PCM_16, -140.0) ;
|
||||
double_scaled_test ("pcm_24.sds", allow_exit, SF_FALSE, SF_FORMAT_SDS | SF_FORMAT_PCM_24, -180.0) ;
|
||||
|
||||
#ifdef HAVE_FLAC_ALL_H
|
||||
#if HAVE_EXTERNAL_LIBS
|
||||
double_scaled_test ("flac_8.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_S8, -39.0) ;
|
||||
double_scaled_test ("flac_16.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_16, -87.0) ;
|
||||
double_scaled_test ("flac_24.flac", allow_exit, SF_FALSE, SF_FORMAT_FLAC | SF_FORMAT_PCM_24, -138.0) ;
|
||||
|
||||
double_scaled_test ("vorbis.oga", allow_exit, SF_FALSE, SF_FORMAT_OGG | SF_FORMAT_VORBIS, -29.0) ;
|
||||
#endif
|
||||
|
||||
double_scaled_test ("replace_double.raw", allow_exit, SF_TRUE, SF_FORMAT_RAW | SF_FORMAT_DOUBLE, -300.0) ;
|
||||
@@ -189,20 +193,13 @@ main (int argc, char *argv [])
|
||||
|
||||
static void
|
||||
float_scaled_test (const char *filename, int allow_exit, int replace_float, int filetype, double target_snr)
|
||||
{ static float float_orig [DFT_DATA_LENGTH] ;
|
||||
static float float_test [DFT_DATA_LENGTH] ;
|
||||
|
||||
SNDFILE *file ;
|
||||
{ SNDFILE *file ;
|
||||
SF_INFO sfinfo ;
|
||||
int k ;
|
||||
double snr ;
|
||||
|
||||
print_test_name ("float_scaled_test", filename) ;
|
||||
|
||||
gen_windowed_sine_double (double_data, DFT_DATA_LENGTH, 1.0) ;
|
||||
|
||||
for (k = 0 ; k < DFT_DATA_LENGTH ; k++)
|
||||
float_orig [k] = double_data [k] ;
|
||||
gen_windowed_sine_float (float_data, DFT_DATA_LENGTH, 1.0) ;
|
||||
|
||||
sfinfo.samplerate = SAMPLE_RATE ;
|
||||
sfinfo.frames = DFT_DATA_LENGTH ;
|
||||
@@ -212,7 +209,7 @@ float_scaled_test (const char *filename, int allow_exit, int replace_float, int
|
||||
file = test_open_file_or_die (filename, SFM_WRITE, &sfinfo, SF_TRUE, __LINE__) ;
|
||||
sf_command (file, SFC_TEST_IEEE_FLOAT_REPLACE, NULL, replace_float) ;
|
||||
|
||||
test_write_float_or_die (file, 0, float_orig, DFT_DATA_LENGTH, __LINE__) ;
|
||||
test_write_float_or_die (file, 0, float_data, DFT_DATA_LENGTH, __LINE__) ;
|
||||
|
||||
sf_close (file) ;
|
||||
|
||||
@@ -231,10 +228,7 @@ float_scaled_test (const char *filename, int allow_exit, int replace_float, int
|
||||
|
||||
sf_close (file) ;
|
||||
|
||||
for (k = 0 ; k < DFT_DATA_LENGTH ; k++)
|
||||
test_data [k] = float_test [k] ;
|
||||
|
||||
snr = dft_cmp (__LINE__, double_data, test_data, DFT_DATA_LENGTH, target_snr, allow_exit) ;
|
||||
snr = dft_cmp_float (__LINE__, float_data, float_test, DFT_DATA_LENGTH, target_snr, allow_exit) ;
|
||||
|
||||
exit_if_true (snr > target_snr, "% 6.1fdB SNR\n\n Error : should be better than % 6.1fdB\n\n", snr, target_snr) ;
|
||||
|
||||
@@ -267,7 +261,7 @@ double_scaled_test (const char *filename, int allow_exit, int replace_float, int
|
||||
|
||||
sf_close (file) ;
|
||||
|
||||
memset (test_data, 0, sizeof (test_data)) ;
|
||||
memset (double_test, 0, sizeof (double_test)) ;
|
||||
|
||||
file = test_open_file_or_die (filename, SFM_READ, &sfinfo, SF_TRUE, __LINE__) ;
|
||||
sf_command (file, SFC_TEST_IEEE_FLOAT_REPLACE, NULL, replace_float) ;
|
||||
@@ -278,11 +272,11 @@ double_scaled_test (const char *filename, int allow_exit, int replace_float, int
|
||||
|
||||
check_log_buffer_or_die (file, __LINE__) ;
|
||||
|
||||
test_read_double_or_die (file, 0, test_data, DFT_DATA_LENGTH, __LINE__) ;
|
||||
test_read_double_or_die (file, 0, double_test, DFT_DATA_LENGTH, __LINE__) ;
|
||||
|
||||
sf_close (file) ;
|
||||
|
||||
snr = dft_cmp (__LINE__, double_data, test_data, DFT_DATA_LENGTH, target_snr, allow_exit) ;
|
||||
snr = dft_cmp_double (__LINE__, double_data, double_test, DFT_DATA_LENGTH, target_snr, allow_exit) ;
|
||||
|
||||
exit_if_true (snr > target_snr, "% 6.1fdB SNR\n\n Error : should be better than % 6.1fdB\n\n", snr, target_snr) ;
|
||||
|
||||
@@ -335,7 +329,7 @@ float_short_little_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (short_data) ; k++)
|
||||
if (abs (short_data [k]) > max)
|
||||
if ((unsigned) abs (short_data [k]) > max)
|
||||
max = abs (short_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFF) / 0x7FFF > 0.01)
|
||||
@@ -385,7 +379,7 @@ float_short_big_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (short_data) ; k++)
|
||||
if (abs (short_data [k]) > max)
|
||||
if ((unsigned) abs (short_data [k]) > max)
|
||||
max = abs (short_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFF) / 0x7FFF > 0.01)
|
||||
@@ -435,7 +429,7 @@ float_int_little_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (int_data) ; k++)
|
||||
if (abs (int_data [k]) > max)
|
||||
if ((unsigned) abs (int_data [k]) > max)
|
||||
max = abs (int_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFFFFFF) / 0x7FFFFFFF > 0.01)
|
||||
@@ -485,7 +479,7 @@ float_int_big_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (int_data) ; k++)
|
||||
if (abs (int_data [k]) > max)
|
||||
if ((unsigned) abs (int_data [k]) > max)
|
||||
max = abs (int_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFFFFFF) / 0x7FFFFFFF > 0.01)
|
||||
@@ -535,7 +529,7 @@ double_short_little_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (short_data) ; k++)
|
||||
if (abs (short_data [k]) > max)
|
||||
if ((unsigned) abs (short_data [k]) > max)
|
||||
max = abs (short_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFF) / 0x7FFF > 0.01)
|
||||
@@ -585,7 +579,7 @@ double_short_big_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (short_data) ; k++)
|
||||
if (abs (short_data [k]) > max)
|
||||
if ((unsigned) abs (short_data [k]) > max)
|
||||
max = abs (short_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFF) / 0x7FFF > 0.01)
|
||||
@@ -635,7 +629,7 @@ double_int_little_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (int_data) ; k++)
|
||||
if (abs (int_data [k]) > max)
|
||||
if ((unsigned) abs (int_data [k]) > max)
|
||||
max = abs (int_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFFFFFF) / 0x7FFFFFFF > 0.01)
|
||||
@@ -685,7 +679,7 @@ double_int_big_test (const char * filename)
|
||||
|
||||
max = 0 ;
|
||||
for (k = 0 ; k < ARRAY_LEN (int_data) ; k++)
|
||||
if (abs (int_data [k]) > max)
|
||||
if ((unsigned) abs (int_data [k]) > max)
|
||||
max = abs (int_data [k]) ;
|
||||
|
||||
if (1.0 * abs (max - 0x7FFFFFFF) / 0x7FFFFFFF > 0.01)
|
||||
@@ -698,4 +692,3 @@ double_int_big_test (const char * filename)
|
||||
} /* double_int_big_test */
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user