diff options
author | uau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-11-01 06:52:01 +0000 |
---|---|---|
committer | uau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-11-01 06:52:01 +0000 |
commit | 7deec05ea0d14dd950715f232b9e7cb7183dd333 (patch) | |
tree | a669500520b58be3ba988f7a3e7e0b7d802e0313 /libaf/af_resample.c | |
parent | c6824f577ee5da01a7bb0b787d0253da925c2c0f (diff) | |
download | mpv-7deec05ea0d14dd950715f232b9e7cb7183dd333.tar.bz2 mpv-7deec05ea0d14dd950715f232b9e7cb7183dd333.tar.xz |
libaf: change filter input/output ratio calculations
Change the audio filters to use a double instead of rationals for the
ratio of output to input size. The rationals could overflow when
calculating the overall ratio of a filter chain and gave no real
advantage compared to doubles.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24916 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libaf/af_resample.c')
-rw-r--r-- | libaf/af_resample.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/libaf/af_resample.c b/libaf/af_resample.c index 87fcef446b..e5332cb230 100644 --- a/libaf/af_resample.c +++ b/libaf/af_resample.c @@ -184,9 +184,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg) s->step=((uint64_t)n->rate<<STEPACCURACY)/(uint64_t)af->data->rate+1LL; af_msg(AF_MSG_DEBUG0,"[resample] Linear interpolation step: 0x%016"PRIX64".\n", s->step); - af->mul.n = af->data->rate; - af->mul.d = n->rate; - af_frac_cancel(&af->mul); + af->mul = (double)af->data->rate / n->rate; return rv; } @@ -256,8 +254,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg) // Set multiplier and delay af->delay = (double)(1000*L/2)/((double)n->rate); - af->mul.n = s->up; - af->mul.d = s->dn; + af->mul = (double)s->up / s->dn; return rv; } case AF_CONTROL_COMMAND_LINE:{ @@ -359,8 +356,7 @@ static int af_open(af_instance_t* af){ af->control=control; af->uninit=uninit; af->play=play; - af->mul.n=1; - af->mul.d=1; + af->mul=1; af->data=calloc(1,sizeof(af_data_t)); af->setup=calloc(1,sizeof(af_resample_t)); if(af->data == NULL || af->setup == NULL) |