FFmpeg
Loading...
Searching...
No Matches
eaidct.c File Reference

Electronic Arts TGQ/TQI/MAD IDCT algorithm. More...

#include "eaidct.h"
#include "libavutil/common.h"

Go to the source code of this file.

Macros

#define ASQRT   181 /* (1/sqrt(2))<<8 */
 
#define A4   669 /* cos(pi/8)*sqrt(2)<<9 */
 
#define A2   277 /* sin(pi/8)*sqrt(2)<<9 */
 
#define A5   196 /* sin(pi/8)<<9 */
 
#define IDCT_TRANSFORM(dest, s0, s1, s2, s3, s4, s5, s6, s7, d0, d1, d2, d3, d4, d5, d6, d7, munge, src)
 
#define MUNGE_NONE(x)
 
#define IDCT_COL(dest, src)
 
#define MUNGE_8BIT(x)
 
#define IDCT_ROW(dest, src)
 

Functions

static void ea_idct_col (int16_t *dest, const int16_t *src)
 
void ff_ea_idct_put_c (uint8_t *dest, ptrdiff_t linesize, int16_t *block)
 

Detailed Description

Electronic Arts TGQ/TQI/MAD IDCT algorithm.

Author
Peter Ross pross.nosp@m.@xvi.nosp@m.d.org

Definition in file eaidct.c.

Macro Definition Documentation

◆ ASQRT

#define ASQRT   181 /* (1/sqrt(2))<<8 */

Definition at line 31 of file eaidct.c.

◆ A4

#define A4   669 /* cos(pi/8)*sqrt(2)<<9 */

Definition at line 32 of file eaidct.c.

◆ A2

#define A2   277 /* sin(pi/8)*sqrt(2)<<9 */

Definition at line 33 of file eaidct.c.

◆ A5

#define A5   196 /* sin(pi/8)<<9 */

Definition at line 34 of file eaidct.c.

Referenced by ff_faandct(), and row_fdct().

◆ IDCT_TRANSFORM

#define IDCT_TRANSFORM ( dest,
s0,
s1,
s2,
s3,
s4,
s5,
s6,
s7,
d0,
d1,
d2,
d3,
d4,
d5,
d6,
d7,
munge,
src )
Value:
{\
const int a1 = (src)[s1] + (src)[s7]; \
const int a7 = (src)[s1] - (src)[s7]; \
const int a5 = (src)[s5] + (src)[s3]; \
const int a3 = (src)[s5] - (src)[s3]; \
const int a2 = (src)[s2] + (src)[s6]; \
const int a6 = (ASQRT*((src)[s2] - (src)[s6]))>>8; \
const int a0 = (src)[s0] + (src)[s4]; \
const int a4 = (src)[s0] - (src)[s4]; \
const int b0 = (((A4-A5)*a7 - A5*a3)>>9) + a1+a5; \
const int b1 = (((A4-A5)*a7 - A5*a3)>>9) + ((ASQRT*(a1-a5))>>8); \
const int b2 = (((A2+A5)*a3 + A5*a7)>>9) + ((ASQRT*(a1-a5))>>8); \
const int b3 = ((A2+A5)*a3 + A5*a7)>>9; \
(dest)[d0] = munge(a0+a2+a6+b0); \
(dest)[d1] = munge(a4+a6 +b1); \
(dest)[d2] = munge(a4-a6 +b2); \
(dest)[d3] = munge(a0-a2-a6+b3); \
(dest)[d4] = munge(a0-a2-a6-b3); \
(dest)[d5] = munge(a4-a6 -b2); \
(dest)[d6] = munge(a4+a6 -b1); \
(dest)[d7] = munge(a0+a2+a6-b0); \
}
#define A2
Definition binkdsp.c:31
#define A4
Definition binkdsp.c:33
#define ASQRT
Definition eaidct.c:31
#define A5
Definition eaidct.c:34
#define src
Definition vp8dsp.c:248
static double b1(void *priv, double x, double y)
Definition vf_xfade.c:2034
static double a0(void *priv, double x, double y)
Definition vf_xfade.c:2028
static double b2(void *priv, double x, double y)
Definition vf_xfade.c:2035
static double b3(void *priv, double x, double y)
Definition vf_xfade.c:2036
static double a3(void *priv, double x, double y)
Definition vf_xfade.c:2031
static double b0(void *priv, double x, double y)
Definition vf_xfade.c:2033
static double a2(void *priv, double x, double y)
Definition vf_xfade.c:2030
static double a1(void *priv, double x, double y)
Definition vf_xfade.c:2029

Definition at line 36 of file eaidct.c.

◆ MUNGE_NONE

#define MUNGE_NONE ( x)
Value:
(x)

Definition at line 60 of file eaidct.c.

◆ IDCT_COL

#define IDCT_COL ( dest,
src )
Value:
IDCT_TRANSFORM(dest,0,8,16,24,32,40,48,56,0,8,16,24,32,40,48,56,MUNGE_NONE,src)
#define IDCT_TRANSFORM(dest, s0, s1, s2, s3, s4, s5, s6, s7, d0, d1, d2, d3, d4, d5, d6, d7, munge, src)
Definition binkdsp.c:37
#define MUNGE_NONE(x)
Definition binkdsp.c:62

Definition at line 61 of file eaidct.c.

Referenced by ea_idct_col().

◆ MUNGE_8BIT

#define MUNGE_8BIT ( x)
Value:
#define av_clip_uint8
Definition common.h:106

Definition at line 63 of file eaidct.c.

◆ IDCT_ROW

#define IDCT_ROW ( dest,
src )
Value:
IDCT_TRANSFORM(dest,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,MUNGE_8BIT,src)
#define MUNGE_8BIT(x)
Definition eaidct.c:63

Definition at line 64 of file eaidct.c.

Referenced by ff_ea_idct_put_c().

Function Documentation

◆ ea_idct_col()

static void ea_idct_col ( int16_t * dest,
const int16_t * src )
inlinestatic

Definition at line 66 of file eaidct.c.

Referenced by ff_ea_idct_put_c().

◆ ff_ea_idct_put_c()

void ff_ea_idct_put_c ( uint8_t * dest,
ptrdiff_t linesize,
int16_t * block )

Definition at line 80 of file eaidct.c.

Referenced by idct_put(), tgq_idct_put_mb(), and tqi_idct_put().