Author: ken
Date: 2009-12-26 18:35:45 -0700 (Sat, 26 Dec 2009)
New Revision: 2149
Added:
trunk/libsamplerate/
trunk/libsamplerate/libsamplerate-0.1.7-fixes-1.patch
Log:
Fix testsuite for libsamplerate (to stop it erroring), plus other fixes from
the developer via debian.
Added: trunk/libsamplerate/libsamplerate-0.1.7-fixes-1.patch
===================================================================
--- trunk/libsamplerate/libsamplerate-0.1.7-fixes-1.patch
(rev 0)
+++ trunk/libsamplerate/libsamplerate-0.1.7-fixes-1.patch 2009-12-27
01:35:45 UTC (rev 2149)
@@ -0,0 +1,173 @@
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2009-12-26
+Initial Package Version: 0.1.7
+Upstream Status: Applied
+Origin: Upstream, via debian
+Description: Various fixes (crashes with certain inputs, fatal error in
testsuite)
+
+diff -Naur libsamplerate-0.1.7.orig/src/src_linear.c
libsamplerate-0.1.7/src/src_linear.c
+--- libsamplerate-0.1.7.orig/src/src_linear.c 2008-12-12 08:59:57.000000000
+0000
++++ libsamplerate-0.1.7/src/src_linear.c 2009-12-26 20:15:12.000000000
+0000
+@@ -58,6 +58,9 @@
+ double src_ratio, input_index, rem ;
+ int ch ;
+
++ if (data->input_frames <= 0)
++ return SRC_ERR_NO_ERROR ;
++
+ if (psrc->private_data == NULL)
+ return SRC_ERR_NO_PRIVATE ;
+
+diff -Naur libsamplerate-0.1.7.orig/src/src_sinc.c
libsamplerate-0.1.7/src/src_sinc.c
+--- libsamplerate-0.1.7.orig/src/src_sinc.c 2009-02-14 09:35:20.000000000
+0000
++++ libsamplerate-0.1.7/src/src_sinc.c 2009-12-26 20:15:12.000000000 +0000
+@@ -1194,6 +1194,9 @@
+ filter->b_real_end = filter->b_end ;
+ len = half_filter_chan_len + 5 ;
+
++ if (len < 0 || filter->b_end + len > filter->b_len)
++ len = filter->b_len - filter->b_end ;
++
+ memset (filter->buffer + filter->b_end, 0, len * sizeof
(filter->buffer [0])) ;
+ filter->b_end += len ;
+ } ;
+diff -Naur libsamplerate-0.1.7.orig/src/src_zoh.c
libsamplerate-0.1.7/src/src_zoh.c
+--- libsamplerate-0.1.7.orig/src/src_zoh.c 2008-12-12 09:00:25.000000000
+0000
++++ libsamplerate-0.1.7/src/src_zoh.c 2009-12-26 20:15:12.000000000 +0000
+@@ -56,6 +56,9 @@
+ double src_ratio, input_index, rem ;
+ int ch ;
+
++ if (data->input_frames <= 0)
++ return SRC_ERR_NO_ERROR ;
++
+ if (psrc->private_data == NULL)
+ return SRC_ERR_NO_PRIVATE ;
+
+diff -Naur libsamplerate-0.1.7.orig/tests/callback_test.c
libsamplerate-0.1.7/tests/callback_test.c
+--- libsamplerate-0.1.7.orig/tests/callback_test.c 2008-07-10
00:52:31.000000000 +0100
++++ libsamplerate-0.1.7/tests/callback_test.c 2009-12-26 20:15:12.000000000
+0000
+@@ -137,11 +137,11 @@
+
+ src_state = src_delete (src_state) ;
+
+- if (fabs (read_total - src_ratio * ARRAY_LEN (test_callback_data.data))
> src_ratio)
++ if (fabs (read_total / src_ratio - ARRAY_LEN (test_callback_data.data))
> 2.0)
+ { printf ("\n\nLine %d : input / output length mismatch.\n\n",
__LINE__) ;
+ printf (" input len : %d\n", ARRAY_LEN
(test_callback_data.data)) ;
+- printf (" output len : %ld (should be %g +/- %g)\n\n",
read_total,
+- floor (0.5 + src_ratio * ARRAY_LEN
(test_callback_data.data)), ceil (src_ratio)) ;
++ printf (" output len : %ld (should be %g +/- 2)\n\n",
read_total,
++ floor (0.5 + src_ratio * ARRAY_LEN
(test_callback_data.data))) ;
+ exit (1) ;
+ } ;
+
+diff -Naur libsamplerate-0.1.7.orig/tests/misc_test.c
libsamplerate-0.1.7/tests/misc_test.c
+--- libsamplerate-0.1.7.orig/tests/misc_test.c 2008-07-02 02:09:46.000000000
+0100
++++ libsamplerate-0.1.7/tests/misc_test.c 2009-12-26 20:15:12.000000000
+0000
+@@ -27,6 +27,7 @@
+ static void name_test (void) ;
+ static void error_test (void) ;
+ static void src_ratio_test (void) ;
++static void zero_input_test (int converter) ;
+
+ int
+ main (void)
+@@ -42,6 +43,11 @@
+
+ src_ratio_test () ;
+
++ zero_input_test (SRC_ZERO_ORDER_HOLD) ;
++ zero_input_test (SRC_LINEAR) ;
++ zero_input_test (SRC_SINC_FASTEST) ;
++
++ puts ("") ;
+ return 0 ;
+ } /* main */
+
+@@ -135,3 +141,35 @@
+
+ return ;
+ } /* error_test */
++
++static void
++zero_input_test (int converter)
++{ SRC_DATA data ;
++ SRC_STATE *state ;
++ float out [100] ;
++ int error ;
++
++ printf (" %s (%-26s) ........ ", __func__, src_get_name (converter))
;
++ fflush (stdout) ;
++
++ if ((state = src_new (converter, 1, &error)) == NULL)
++ { printf ("\n\nLine %d : src_new failed : %s.\n\n", __LINE__,
src_strerror (error)) ;
++ exit (1) ;
++ } ;
++
++ data.data_in = (float *) 0xdeadbeef ;
++ data.input_frames = 0 ;
++ data.data_out = out ;
++ data.output_frames = ARRAY_LEN (out) ;
++ data.end_of_input = 0 ;
++ data.src_ratio = 1.0 ;
++
++ if ((error = src_process (state, &data)))
++ { printf ("\n\nLine %d : src_new failed : %s.\n\n", __LINE__,
src_strerror (error)) ;
++ exit (1) ;
++ } ;
++
++ state = src_delete (state) ;
++
++ puts ("ok") ;
++} /* zero_input_test */
+diff -Naur libsamplerate-0.1.7.orig/tests/termination_test.c
libsamplerate-0.1.7/tests/termination_test.c
+--- libsamplerate-0.1.7.orig/tests/termination_test.c 2009-01-12
09:16:20.000000000 +0000
++++ libsamplerate-0.1.7/tests/termination_test.c 2009-12-26
20:15:12.000000000 +0000
+@@ -27,6 +27,7 @@
+ #define SHORT_BUFFER_LEN 2048
+ #define LONG_BUFFER_LEN ((1 << 16) - 20)
+
++static void simple_test (int converter) ;
+ static void stream_test (int converter, double ratio) ;
+ static void init_term_test (int converter, double ratio) ;
+
+@@ -67,10 +68,38 @@
+
+ puts ("") ;
+
++ simple_test (SRC_SINC_FASTEST) ;
++
+ return 0 ;
+ } /* main */
+
+ static void
++simple_test (int converter)
++{
++ int ilen = 199030, olen = 1000, error ;
++
++ {
++ float in [ilen] ;
++ float out [olen] ;
++ double ratio = (1.0 * olen) / ilen ;
++ SRC_DATA src_data =
++ { in, out,
++ ilen, olen,
++ 0, 0, 0,
++ ratio
++ } ;
++
++ error = src_simple (&src_data, converter, 1) ;
++ if (error)
++ { printf ("\n\nLine %d : %s\n\n", __LINE__, src_strerror
(error)) ;
++ exit (1) ;
++ } ;
++ } ;
++
++ return ;
++} /* simple_test */
++
++static void
+ init_term_test (int converter, double src_ratio)
+ { static float input [SHORT_BUFFER_LEN], output [SHORT_BUFFER_LEN] ;
+
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page