FFmpeg
Macros | Functions
xvididct.c File Reference

Walken IDCT Alternative IDCT implementation for decoding compatibility. More...

#include "config.h"
#include "libavutil/attributes.h"
#include "avcodec.h"
#include "idctdsp.h"
#include "xvididct.h"

Macros

#define ROW_SHIFT   11
 
#define COL_SHIFT   6
 
#define RND0   65536
 
#define RND1   3597
 
#define RND2   2260
 
#define RND3   1203
 
#define RND4   0
 
#define RND5   120
 
#define RND6   512
 
#define RND7   512
 
#define TAN1   0x32EC
 
#define TAN2   0x6A0A
 
#define TAN3   0xAB0E
 
#define SQRT2   0x5A82
 
#define MULT(c, x, n)   (((c) * (x)) >> (n))
 
#define BUTTERFLY(a, b, tmp)
 
#define LOAD_BUTTERFLY(m1, m2, a, b, tmp, s)
 

Functions

void ff_xvid_idct (int16_t *const in)
 
av_cold void ff_xvid_idct_init (IDCTDSPContext *c, AVCodecContext *avctx)
 

Detailed Description

Walken IDCT Alternative IDCT implementation for decoding compatibility.

Author
Skal
Note
This C version is not the original IDCT, but a modified one that yields the same error profile as the MMX/MMXEXT/SSE2 versions.

Macro Definition Documentation

§ BUTTERFLY

#define BUTTERFLY (   a,
  b,
  tmp 
)
Value:
(tmp) = (a) + (b); \
(b) = (a) - (b); \
(a) = (tmp)

§ LOAD_BUTTERFLY

#define LOAD_BUTTERFLY (   m1,
  m2,
  a,
  b,
  tmp,
 
)
Value:
(m1) = (s)[(a)] + (s)[(b)]; \
(m2) = (s)[(a)] - (s)[(b)]