summaryrefslogtreecommitdiffstats
path: root/libaf/af_lavcresample.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-01-08 21:34:06 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-01-08 21:34:06 +0000
commit8ee78e87ce7961a5b02762fd71c6e348198307fe (patch)
tree757423509666fb2bb9afd8b94674e001fac3ac6f /libaf/af_lavcresample.c
parentaae5663175bf24ff9a8a8ee5b01e46420f3f7357 (diff)
downloadmpv-8ee78e87ce7961a5b02762fd71c6e348198307fe.tar.bz2
mpv-8ee78e87ce7961a5b02762fd71c6e348198307fe.tar.xz
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) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14434 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libaf/af_lavcresample.c')
-rw-r--r--libaf/af_lavcresample.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/libaf/af_lavcresample.c b/libaf/af_lavcresample.c
index c99e29e7ee..db970a1615 100644
--- a/libaf/af_lavcresample.c
+++ b/libaf/af_lavcresample.c
@@ -40,7 +40,6 @@ typedef struct af_resample_s{
// 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 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
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);