gst-libs/gst/resample/resample.c: Remove use of static temporary buffer. This code was obviously not supposed to las...

Original commit message from CVS:
* gst-libs/gst/resample/resample.c: (gst_resample_sinc_ft_s16),
(gst_resample_sinc_ft_float): Remove use of static temporary
buffer.  This code was obviously not supposed to last long, but
it's stuck in our ABI, so it required a little hack to make it
ABI-compatible.  Fixes #142585.
* gst-libs/gst/resample/resample.h: same.
This commit is contained in:
David Schleef 2004-05-19 06:14:06 +00:00
parent c95dd78c2b
commit 0ab84afae6
3 changed files with 38 additions and 5 deletions

View file

@ -1,3 +1,12 @@
2004-05-18 David Schleef <ds@schleef.org>
* gst-libs/gst/resample/resample.c: (gst_resample_sinc_ft_s16),
(gst_resample_sinc_ft_float): Remove use of static temporary
buffer. This code was obviously not supposed to last long, but
it's stuck in our ABI, so it required a little hack to make it
ABI-compatible. Fixes #142585.
* gst-libs/gst/resample/resample.h: same.
2004-05-18 David Schleef <ds@schleef.org> 2004-05-18 David Schleef <ds@schleef.org>
* configure.ac: Add sunaudio * configure.ac: Add sunaudio

View file

@ -252,7 +252,8 @@ gst_resample_nearest_s16 (gst_resample_t * r)
SCALE_LOOP (o_ptr[0] = i_ptr[0], 1); SCALE_LOOP (o_ptr[0] = i_ptr[0], 1);
break; break;
case 2: case 2:
SCALE_LOOP (o_ptr[0] = i_ptr[0]; o_ptr[1] = i_ptr[1], 2); SCALE_LOOP (o_ptr[0] = i_ptr[0];
o_ptr[1] = i_ptr[1], 2);
break; break;
default: default:
{ {
@ -472,8 +473,6 @@ gst_resample_sinc_s16 (gst_resample_t * r)
static functable_t *ft; static functable_t *ft;
double out_tmp[10000];
void void
gst_resample_sinc_ft_s16 (gst_resample_t * r) gst_resample_sinc_ft_s16 (gst_resample_t * r)
{ {
@ -493,6 +492,14 @@ gst_resample_sinc_ft_s16 (gst_resample_t * r)
double x, d; double x, d;
double scale; double scale;
int n = 4; int n = 4;
double *out_tmp;
if (r->hack_union.s.out_tmp_len < r->o_samples) {
r->hack_union.s.out_tmp = realloc (r->hack_union.s.out_tmp,
r->o_samples * 2 * sizeof (double));
r->hack_union.s.out_tmp_len = r->o_samples;
}
out_tmp = r->hack_union.s.out_tmp;
scale = r->i_inc; /* cutoff at 22050 */ scale = r->i_inc; /* cutoff at 22050 */
/*scale = 1.0; // cutoff at 24000 */ /*scale = 1.0; // cutoff at 24000 */
@ -605,7 +612,8 @@ gst_resample_nearest_float (gst_resample_t * r)
SCALE_LOOP (o_ptr[0] = i_ptr[0], 1); SCALE_LOOP (o_ptr[0] = i_ptr[0], 1);
break; break;
case 2: case 2:
SCALE_LOOP (o_ptr[0] = i_ptr[0]; o_ptr[1] = i_ptr[1], 2); SCALE_LOOP (o_ptr[0] = i_ptr[0];
o_ptr[1] = i_ptr[1], 2);
break; break;
default: default:
{ {
@ -805,6 +813,14 @@ gst_resample_sinc_ft_float (gst_resample_t * r)
double x, d; double x, d;
double scale; double scale;
int n = 4; int n = 4;
double *out_tmp;
if (r->hack_union.s.out_tmp_len < r->o_samples) {
r->hack_union.s.out_tmp = realloc (r->hack_union.s.out_tmp,
r->o_samples * 2 * sizeof (double));
r->hack_union.s.out_tmp_len = r->o_samples;
}
out_tmp = r->hack_union.s.out_tmp;
scale = r->i_inc; /* cutoff at 22050 */ scale = r->i_inc; /* cutoff at 22050 */
/*scale = 1.0; // cutoff at 24000 */ /*scale = 1.0; // cutoff at 24000 */

View file

@ -78,12 +78,20 @@ struct gst_resample_s {
void *i_buf, *o_buf; void *i_buf, *o_buf;
double acc[10]; double acc[2];
union {
struct {
double *out_tmp;
int out_tmp_len;
} s;
double padding[8];
} hack_union;
/* methods */ /* methods */
void (*scale)(gst_resample_t *r); void (*scale)(gst_resample_t *r);
double ack; double ack;
}; };
void gst_resample_init(gst_resample_t *r); void gst_resample_init(gst_resample_t *r);