History

Update fip_reset() and start on fip_process().

Erik de Castro Lopo committed 22 years ago

Commit c4f4d141 parent 8d882871 file · +26 −9Browse files

Unified · Split

src/src_fir_iir_poly.c+26−9
@@ -38,13 +38,13 @@ typedef struct · 37 unmodified lines
3838 double src_ratio, input_index ;
3939
4040 float *input_buffer ;
41− int in_buf_len ;
41+ int in_buf_len, in_start, in_end ;
4242
4343 float *fir_out ;
44− int fir_out_len ;
44+ int fir_out_len, fir_start, fir_end ;
4545
4646 float *iir_out ;
47− int iir_out_len ;
47+ int iir_out_len, iir_start, iir_end ;
4848
4949 float dummy [1] ;
5050 } FIR_IIR_POLY ;
@@ -52,7 +52,6 @@ typedef struct · 1 unmodified line
5252 static void fip_reset (SRC_PRIVATE *psrc) ;
5353 static int fip_process (SRC_PRIVATE *psrc, SRC_DATA *data) ;
5454
55−
5655 static float best_coeffs [250] ;
5756
5857 const char*
@@ -61,12 +60,13 @@ fip_get_name (int src_enum) · 2 unmodified lines
6160 switch (src_enum)
6261 { case SRC_FIR_IIR_POLY_BEST :
6362 return "Best FIR/IIR/Polynomial Interpolator" ;
64−
63+#if 0
6564 case SRC_FIR_IIR_POLY_MEDIUM :
6665 return "Medium FIR/IIR/Polynomial Interpolator" ;
6766
6867 case SRC_FIR_IIR_POLY_FASTEST :
6968 return "Fastest FIR/IIR/Polynomial Interpolator" ;
69+#endif
7070 } ;
7171
7272 return NULL ;
@@ -78,12 +78,13 @@ fip_get_description (int src_enum) · 5 unmodified lines
7878 switch (src_enum)
7979 { case SRC_FIR_IIR_POLY_BEST :
8080 return "Three stage FIR/IIR/Polynomial Interpolator, best quality, XXdb SNR, XX% BW." ;
81−
81+#if 0
8282 case SRC_FIR_IIR_POLY_MEDIUM :
8383 return "Three stage FIR/IIR/Polynomial Interpolator, medium quality, XXdb SNR, XX% BW." ;
8484
8585 case SRC_FIR_IIR_POLY_FASTEST :
8686 return "Three stage FIR/IIR/Polynomial Interpolator, fastest, XXdb SNR, XX% BW." ;
87+#endif
8788 } ;
8889
8990 return NULL ;
@@ -152,11 +153,23 @@ fip_reset (SRC_PRIVATE *psrc) · 62 unmodified lines
152153 { FIR_IIR_POLY *fip ;
153154
154155 fip = (FIR_IIR_POLY *) psrc->private_data ;
156+ if (fip == NULL)
157+ return ;
155158
159+ memset (fip->input_buffer, 0, fip->channels * fip->in_buf_len * sizeof (fip->dummy [0])) ;
160+ memset (fip->fir_out, 0, fip->channels * fip->fir_out_len * sizeof (fip->dummy [0])) ;
161+ memset (fip->iir_out, 0, fip->channels * fip->iir_out_len * sizeof (fip->dummy [0])) ;
162+
163+ fip->in_start = fip->in_end = ARRAY_LEN (best_coeffs) ;
164+ fip->fir_start = fip->fir_end = 0 ;
165+ fip->iir_start = fip->iir_end = 0 ;
166+
167+ fip->src_ratio = fip->input_index = 0.0 ;
168+
169+ return ;
156170 } /* fip_reset */
157171
158172 /*========================================================================================
159−** Beware all ye who dare pass this point. There be dragons here.
160173 */
161174
162175 static int
@@ -172,6 +185,11 @@ fip_process (SRC_PRIVATE *psrc, SRC_DATA *data) · 9 unmodified lines
172185 if (sizeof (fip->dummy [0]) != sizeof (data->data_in [0]))
173186 return SRC_ERR_SIZE_INCOMPATIBILITY ;
174187
188+ if (data->src_ratio < 1.0)
189+ { printf ("Bad ratio %f\n", data->src_ratio) ;
190+ exit (1) ;
191+ } ;
192+
175193
176194 return SRC_ERR_NO_ERROR ;
177195 } /* fip_process */
@@ -184,9 +202,8 @@ fip_process (SRC_PRIVATE *psrc, SRC_DATA *data) · 6 unmodified lines
184202
185203 /*
186204 ** Do not edit or modify anything in this comment block.
187−** The arch-tag line is a file identity tag for the GNU Arch
205+** The arch-tag line is a file identity tag for the GNU Arch
188206 ** revision control system.
189207 **
190208 ** arch-tag: a6c8bad4-740c-4e4f-99f1-e274174ab540
191209 */
192−

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