History

Fix a bug where src_callback_read() would hand under varying src_ratio.

Erik de Castro Lopo committed 19 years ago

Commit 2efc6b91 parent c61d92b4 files · +22 −27Browse files

Showing the changes to src/src_linear.c (1 of 4 files). Show all

Unified · Split

src/src_linear.c+4−4
@@ -83,8 +83,8 @@ linear_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) · 82 unmodified lines
83 if (linear->in_used + linear->channels * input_index > linear->in_count)83 if (linear->in_used + linear->channels * input_index > linear->in_count)
84 break ;84 break ;
85 85
86 if (fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)86 if (linear->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
87 src_ratio = psrc->last_ratio + linear->out_gen * (data->src_ratio - psrc->last_ratio) / (linear->out_count - 1) ;87 src_ratio = psrc->last_ratio + linear->out_gen * (data->src_ratio - psrc->last_ratio) / linear->out_count ;
88 88
89 for (ch = 0 ; ch < linear->channels ; ch++)89 for (ch = 0 ; ch < linear->channels ; ch++)
90 { data->data_out [linear->out_gen] = (float) (linear->last_value [ch] + input_index *90 { data->data_out [linear->out_gen] = (float) (linear->last_value [ch] + input_index *
@@ -103,8 +103,8 @@ linear_vari_process (SRC_PRIVATE *psrc, SRC_DATA *data) · 12 unmodified lines
103 /* Main processing loop. */103 /* Main processing loop. */
104 while (linear->out_gen < linear->out_count && linear->in_used + linear->channels * input_index <= linear->in_count)104 while (linear->out_gen < linear->out_count && linear->in_used + linear->channels * input_index <= linear->in_count)
105 {105 {
106 if (fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)106 if (linear->out_count > 0 && fabs (psrc->last_ratio - data->src_ratio) > SRC_MIN_RATIO_DIFF)
107 src_ratio = psrc->last_ratio + linear->out_gen * (data->src_ratio - psrc->last_ratio) / (linear->out_count - 1) ;107 src_ratio = psrc->last_ratio + linear->out_gen * (data->src_ratio - psrc->last_ratio) / linear->out_count ;
108 108
109 if (SRC_DEBUG && linear->in_used < linear->channels && input_index < 1.0)109 if (SRC_DEBUG && linear->in_used < linear->channels && input_index < 1.0)
110 { printf ("Whoops!!!! in_used : %ld channels : %d input_index : %f\n", linear->in_used, linear->channels, input_index) ;110 { printf ("Whoops!!!! in_used : %ld channels : %d input_index : %f\n", linear->in_used, linear->channels, input_index) ;

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