diff libaf/af_lavcresample.c @ 14433:95bb94a930a3

always cancel down fractions (frac_t) to avoid overflows and playback problems (e.g. when using resample and equalizer filters together, see http://mplayerhq.hu/pipermail/mplayer-users/2004-December/050058.html)
author reimar
date Sat, 08 Jan 2005 21:34:06 +0000
parents 91170dd147c6
children c530f957d55c
line wrap: on
line diff
--- a/libaf/af_lavcresample.c	Sat Jan 08 21:06:04 2005 +0000
+++ b/libaf/af_lavcresample.c	Sat Jan 08 21:34:06 2005 +0000
@@ -40,7 +40,6 @@
 // Initialization and runtime control
 static int control(struct af_instance_s* af, int cmd, void* arg)
 {
-  int g;
   af_resample_t* s   = (af_resample_t*)af->setup; 
   af_data_t *data= (af_data_t*)arg;
   int out_rate, test_output_res; // helpers for checking input format
@@ -54,9 +53,9 @@
     if (af->data->nch > CHANS) af->data->nch = CHANS;
     af->data->format = AF_FORMAT_S16_NE;
     af->data->bps    = 2;
-    g= ff_gcd(af->data->rate, data->rate);
-    af->mul.n = af->data->rate/g;
-    af->mul.d = data->rate/g;
+    af->mul.n = af->data->rate;
+    af->mul.d = data->rate;
+    af_frac_cancel(&af->mul);
     af->delay = 500*s->filter_length/(double)min(af->data->rate, data->rate);
 
     if(s->avrctx) av_resample_close(s->avrctx);