History

Improve callback_test to find input/output length mismatches.

Erik de Castro Lopo committed 22 years ago

Commit b9ffd241 parent cdb30e31 file · +21 −16Browse files

Unified · Split

tests/callback_test.c+21−16
@@ -25,7 +25,8 @@ · 24 unmodified lines
2525
2626 #include "util.h"
2727
28−#define BUFFER_LEN 10000
28+#define BUFFER_LEN 90000
29+#define CB_READ_LEN 256
2930
3031 #define ARRAY_LEN(x) ((int) (sizeof (x) / sizeof ((x) [0])))
3132
@@ -66,8 +67,8 @@ main (void) · 34 unmodified lines
6667
6768 typedef struct
6869 { int channels ;
69− long total_frames ;
70− float data [1024] ;
70+ long count, total ;
71+ float data [BUFFER_LEN] ;
7172 } TEST_CB_DATA ;
7273
7374 static long
@@ -82,14 +83,13 @@ test_callback_func (void *cb_data, float **data) · 8 unmodified lines
8283 if (data == NULL)
8384 return 0 ;
8485
85− *data = pcb_data->data ;
86−
87− if (ARRAY_LEN (pcb_data->data) / pcb_data->channels > pcb_data->total_frames)
88− frames = pcb_data->total_frames ;
86+ if (pcb_data->total - pcb_data->count > CB_READ_LEN)
87+ frames = CB_READ_LEN ;
8988 else
90− frames = ARRAY_LEN (pcb_data->data) / pcb_data->channels ;
89+ frames = pcb_data->total - pcb_data->count ;
9190
92− pcb_data->total_frames -= frames ;
91+ *data = pcb_data->data + pcb_data->count ;
92+ pcb_data->count += frames ;
9393
9494 return frames ;
9595 } /* test_callback_func */
@@ -97,9 +97,9 @@ test_callback_func (void *cb_data, float **data) · 1 unmodified line
9797
9898 static void
9999 callback_test (int converter, double src_ratio)
100−{ static float output [BUFFER_LEN] ;
100+{ static TEST_CB_DATA test_callback_data ;
101+ static float output [BUFFER_LEN] ;
101102
102− TEST_CB_DATA test_callback_data ;
103103 SRC_STATE *src_state ;
104104
105105 long read_count, read_total ;
@@ -127,7 +127,8 @@ callback_test (int converter, double src_ratio) · 21 unmodified lines
127127 } ;
128128
129129 test_callback_data.channels = 1 ;
130− test_callback_data.total_frames = input_len ;
130+ test_callback_data.count = 0 ;
131+ test_callback_data.total = input_len ;
131132
132133 if ((src_state = src_callback_new (test_callback_func, converter, 1, &error, &test_callback_data)) == NULL)
133134 { printf ("\n\nLine %d : %s\n\n", __LINE__, src_strerror (error)) ;
@@ -135,10 +136,12 @@ callback_test (int converter, double src_ratio) · 1 unmodified line
135136 } ;
136137
137138 read_total = 0 ;
138− while ((read_count = src_callback_read (src_state, src_ratio, BUFFER_LEN, output)) > 0)
139− {
139+ do
140+ { read_count = (ARRAY_LEN (output) - read_total > CB_READ_LEN) ? CB_READ_LEN : ARRAY_LEN (output) - read_total ;
141+ read_count = src_callback_read (src_state, src_ratio, read_count, output + read_total) ;
140142 read_total += read_count ;
141− } ;
143+ }
144+ while (read_count > 0) ;
142145
143146 if ((error = src_error (src_state)) != 0)
144147 { printf ("\n\nLine %d : %s\n\n", __LINE__, src_strerror (error)) ;
@@ -148,7 +151,9 @@ callback_test (int converter, double src_ratio) · 3 unmodified lines
148151 src_state = src_delete (src_state) ;
149152
150153 if (fabs (read_total - src_ratio * input_len) > 2)
151− { printf ("\n\nLine %d : read_total %ld %g\n\n", __LINE__, read_total, src_ratio * input_len) ;
154+ { printf ("\n\nLine %d : input / output length mismatch.\n\n", __LINE__) ;
155+ printf (" input len : %d\n", input_len) ;
156+ printf (" output len : %ld (should be %g +/- 2)\n\n", read_total, floor (0.5 + src_ratio * input_len)) ;
152157 exit (1) ;
153158 } ;
154159

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t