[Mplayer-cvslog] CVS: main/libmpcodecs ve_xvid4.c,1.8,1.9

Ivan Kalvachev ivan at cacad.com
Sat Oct 2 02:17:29 CEST 2004


On Sat,  2 Oct 2004 00:53:16 +0200 (CEST)
syncmail at mplayerhq.hu (Guillaume Poirier CVS) wrote:

> CVS change done by Guillaume Poirier CVS
> 
> Update of /cvsroot/mplayer/main/libmpcodecs
> In directory mail:/var2/tmp/cvs-serv18415
> 
> Modified Files:
> 	ve_xvid4.c 
> Log Message:
> Moves around some functions, which makes the code clearer (it groups helper functions together) is one step closer to a nice 1.1 front-end.

Before commiting code read the rules.
MPlayer project strictly forbid commiting nonfunctional changes.
If you are makeing them in order to commit GomGom changes 1:1 you are doing wrong.

Revert immediately.

  Ivan Kalvachev
iive

 
 
> Index: ve_xvid4.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libmpcodecs/ve_xvid4.c,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -u -r1.8 -r1.9
> --- ve_xvid4.c	13 Jul 2004 18:09:58 -0000	1.8
> +++ ve_xvid4.c	1 Oct 2004 22:53:14 -0000	1.9
> @@ -61,85 +61,6 @@
>  #define FINE (!0)
>  #define BAD (!FINE)
>  
> -// Code taken from Libavcodec and ve_lavc.c to handle Aspect Ratio calculation
> -
> -typedef struct XVIDRational{
> -    int num; 
> -    int den;
> -} XVIDRational;
> -
> -#define MAX(a,b) ((a) > (b) ? (a) : (b))
> -#define ABS(a) ((a) >= 0 ? (a) : (-(a)))
> -
> -
> -static int64_t xvid_gcd(int64_t a, int64_t b){
> -    if(b) return xvid_gcd(b, a%b);
> -    else  return a;
> -}
> -
> -static int xvid_reduce(int *dst_nom, int *dst_den, int64_t nom, int64_t den, int64_t max){
> -    int exact=1, sign=0;
> -    int64_t gcd;
> -
> -    assert(den != 0);
> -
> -    if(den < 0){
> -        den= -den;
> -        nom= -nom;
> -    }
> -    
> -    if(nom < 0){
> -        nom= -nom;
> -        sign= 1;
> -    }
> -    
> -    gcd = xvid_gcd(nom, den);
> -    nom /= gcd;
> -    den /= gcd;
> -    
> -    if(nom > max || den > max){
> -        XVIDRational a0={0,1}, a1={1,0};
> -        exact=0;
> -
> -        for(;;){
> -            int64_t x= nom / den;
> -            int64_t a2n= x*a1.num + a0.num;
> -            int64_t a2d= x*a1.den + a0.den;
> -
> -            if(a2n > max || a2d > max) break;
> -
> -            nom %= den;
> -        
> -            a0= a1;
> -            a1= (XVIDRational){a2n, a2d};
> -            if(nom==0) break;
> -            x= nom; nom=den; den=x;
> -        }
> -        nom= a1.num;
> -        den= a1.den;
> -    }
> -    
> -    assert(xvid_gcd(nom, den) == 1);
> -    
> -    if(sign) nom= -nom;
> -    
> -    *dst_nom = nom;
> -    *dst_den = den;
> -    
> -    return exact;
> -}
> -
> -
> -static XVIDRational xvid_d2q(double d, int max){
> -    XVIDRational a;
> -    int exponent= MAX( (int)(log(ABS(d) + 1e-20)/log(2)), 0);
> -    int64_t den= 1LL << (61 - exponent);
> -    xvid_reduce(&a.num, &a.den, (int64_t)(d * den + 0.5), den, max);
> -
> -    return a;
> -}
> -
> -
>  
>  /*****************************************************************************
>   * Configuration options
> @@ -313,9 +234,15 @@
>  	int d_width, d_height;
>  } xvid_mplayer_module_t;
>  
> +typedef struct XVIDRational{
> +    int num; 
> +    int den;
> +} XVIDRational;
> +
>  static void dispatch_settings(xvid_mplayer_module_t *mod);
>  static int set_create_struct(xvid_mplayer_module_t *mod);
>  static int set_frame_struct(xvid_mplayer_module_t *mod, mp_image_t *mpi);
> +static XVIDRational xvid_d2q(double d, int max);
>  static const char *errorstring(int err);
>  
>  /*****************************************************************************
> @@ -1157,6 +1084,76 @@
>  	
>  }
>  
> +/* Code taken from Libavcodec and ve_lavc.c to handle Aspect Ratio calculation */
> +#define MAX(a,b) ((a) > (b) ? (a) : (b))
> +#define ABS(a) ((a) >= 0 ? (a) : (-(a)))
> +
> +static int64_t xvid_gcd(int64_t a, int64_t b){
> +    if(b) return xvid_gcd(b, a%b);
> +    else  return a;
> +}
> +
> +static int xvid_reduce(int *dst_nom, int *dst_den, int64_t nom, int64_t den, int64_t max){
> +    int exact=1, sign=0;
> +    int64_t gcd;
> +
> +    assert(den != 0);
> +
> +    if(den < 0){
> +        den= -den;
> +        nom= -nom;
> +    }
> +    
> +    if(nom < 0){
> +        nom= -nom;
> +        sign= 1;
> +    }
> +    
> +    gcd = xvid_gcd(nom, den);
> +    nom /= gcd;
> +    den /= gcd;
> +    
> +    if(nom > max || den > max){
> +        XVIDRational a0={0,1}, a1={1,0};
> +        exact=0;
> +
> +        for(;;){
> +            int64_t x= nom / den;
> +            int64_t a2n= x*a1.num + a0.num;
> +            int64_t a2d= x*a1.den + a0.den;
> +
> +            if(a2n > max || a2d > max) break;
> +
> +            nom %= den;
> +        
> +            a0= a1;
> +            a1= (XVIDRational){a2n, a2d};
> +            if(nom==0) break;
> +            x= nom; nom=den; den=x;
> +        }
> +        nom= a1.num;
> +        den= a1.den;
> +    }
> +    
> +    assert(xvid_gcd(nom, den) == 1);
> +    
> +    if(sign) nom= -nom;
> +    
> +    *dst_nom = nom;
> +    *dst_den = den;
> +    
> +    return exact;
> +}
> +
> +static XVIDRational xvid_d2q(double d, int max){
> +    XVIDRational a;
> +    int exponent= MAX( (int)(log(ABS(d) + 1e-20)/log(2)), 0);
> +    int64_t den= 1LL << (61 - exponent);
> +    xvid_reduce(&a.num, &a.den, (int64_t)(d * den + 0.5), den, max);
> +
> +    return a;
> +}
> +
>  static const char *errorstring(int err)
>  {
>  	char *error;
> 
> _______________________________________________
> Mplayer-cvslog mailing list
> Mplayer-cvslog at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog




More information about the MPlayer-cvslog mailing list