mirror of
https://github.com/mpv-player/mpv
synced 2024-09-05 02:48:21 +02:00
libaf: Remove rational number implementation
Remove the mul/cancel/gcd functions and some related code. Use ff_gcd instead of the removed af_gcd in af_resample.c. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24917 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
7deec05ea0
commit
ab2237c15a
47
libaf/af.c
47
libaf/af.c
@ -604,53 +604,6 @@ af_instance_t *af_control_any_rev (af_stream_t* s, int cmd, void* arg) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief calculate greatest common divisior of a and b.
|
||||
* \ingroup af_filter
|
||||
*
|
||||
* If both are 0 the result is 1.
|
||||
*/
|
||||
int af_gcd(register int a, register int b) {
|
||||
while (b != 0) {
|
||||
a %= b;
|
||||
if (a == 0)
|
||||
break;
|
||||
b %= a;
|
||||
}
|
||||
// the result is either in a or b. As the other one is 0 just add them.
|
||||
a += b;
|
||||
if (!a)
|
||||
return 1;
|
||||
return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief cancel down a fraction f
|
||||
* \param f fraction to cancel down
|
||||
* \ingroup af_filter
|
||||
*/
|
||||
void af_frac_cancel(frac_t *f) {
|
||||
int gcd = af_gcd(f->n, f->d);
|
||||
f->n /= gcd;
|
||||
f->d /= gcd;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief multiply out by in and store result in out.
|
||||
* \param out [inout] fraction to multiply by in
|
||||
* \param in [in] fraction to multiply out by
|
||||
* \ingroup af_filter
|
||||
*
|
||||
* the resulting fraction will be cancelled down
|
||||
* if in and out were.
|
||||
*/
|
||||
void af_frac_mul(frac_t *out, const frac_t *in) {
|
||||
int gcd1 = af_gcd(out->n, in->d);
|
||||
int gcd2 = af_gcd(in->n, out->d);
|
||||
out->n = (out->n / gcd1) * (in->n / gcd2);
|
||||
out->d = (out->d / gcd2) * (in->d / gcd1);
|
||||
}
|
||||
|
||||
void af_help (void) {
|
||||
int i = 0;
|
||||
af_msg(AF_MSG_INFO, "Available audio filters:\n");
|
||||
|
10
libaf/af.h
10
libaf/af.h
@ -26,16 +26,6 @@ typedef struct af_data_s
|
||||
int bps; // bytes per sample
|
||||
} af_data_t;
|
||||
|
||||
// Fraction, used to calculate buffer lengths
|
||||
typedef struct frac_s
|
||||
{
|
||||
int n; // Numerator
|
||||
int d; // Denominator
|
||||
} frac_t;
|
||||
|
||||
int af_gcd(register int a, register int b);
|
||||
void af_frac_cancel(frac_t *f);
|
||||
void af_frac_mul(frac_t *out, const frac_t *in);
|
||||
|
||||
// Flags used for defining the behavior of an audio filter
|
||||
#define AF_FLAGS_REENTRANT 0x00000000
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "libavutil/common.h"
|
||||
#include "af.h"
|
||||
#include "dsp.h"
|
||||
|
||||
@ -189,7 +190,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
|
||||
}
|
||||
|
||||
// Calculate up and down sampling factors
|
||||
d=af_gcd(af->data->rate,n->rate);
|
||||
d=ff_gcd(af->data->rate,n->rate);
|
||||
|
||||
// If sloppy resampling is enabled limit the upsampling factor
|
||||
if(((s->setup & FREQ_MASK) == FREQ_SLOPPY) && (af->data->rate/d > 5000)){
|
||||
@ -197,7 +198,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
|
||||
int dn=n->rate/2;
|
||||
int m=2;
|
||||
while(af->data->rate/(d*m) > 5000){
|
||||
d=af_gcd(up,dn);
|
||||
d=ff_gcd(up,dn);
|
||||
up/=2; dn/=2; m*=2;
|
||||
}
|
||||
d*=m;
|
||||
|
Loading…
Reference in New Issue
Block a user