idct_mmx.c File Reference
#include "libavutil/common.h"
#include "libavcodec/dsputil.h"
#include "libavutil/x86_cpu.h"
#include "dsputil_mmx.h"

Go to the source code of this file.

Macros

#define ROW_SHIFT   11
#define COL_SHIFT   6
#define round(bias)   ((int)(((bias)+0.5) * (1<<ROW_SHIFT)))
#define rounder(bias)   {round (bias), round (bias)}
#define mmxext_table(c1, c2, c3, c4, c5, c6, c7)
#define mmx_table(c1, c2, c3, c4, c5, c6, c7)
#define T1   13036
#define T2   27146
#define T3   43790
#define C4   23170
#define declare_idct(idct, table, idct_row_head, idct_row, idct_row_tail, idct_row_mid)

Functions

static void mmxext_row_head (int16_t *const row, const int offset, const int16_t *const table)
static void mmxext_row (const int16_t *const table, const int32_t *const rounder)
static void mmxext_row_tail (int16_t *const row, const int store)
static void mmxext_row_mid (int16_t *const row, const int store, const int offset, const int16_t *const table)
static void mmx_row_head (int16_t *const row, const int offset, const int16_t *const table)
static void mmx_row (const int16_t *const table, const int32_t *const rounder)
static void mmx_row_tail (int16_t *const row, const int store)
static void mmx_row_mid (int16_t *const row, const int store, const int offset, const int16_t *const table)
static void idct_col (int16_t *const col, const int offset)
void ff_mmxext_idct (int16_t *const block)
void ff_mmx_idct (int16_t *const block)

Variables

static const int32_t rounder0 []
static const int32_t rounder4 [] = rounder (0)
static const int32_t rounder1 []
static const int32_t rounder7 []
static const int32_t rounder2 []
static const int32_t rounder6 []
static const int32_t rounder3 []
static const int32_t rounder5 []

Macro Definition Documentation

#define C4   23170
#define COL_SHIFT   6

Definition at line 29 of file idct_mmx.c.

Referenced by idct_col().

#define declare_idct (   idct,
  table,
  idct_row_head,
  idct_row,
  idct_row_tail,
  idct_row_mid 
)

Definition at line 590 of file idct_mmx.c.

#define mmx_table (   c1,
  c2,
  c3,
  c4,
  c5,
  c6,
  c7 
)
Value:
{ c4, c2, c4, c6, \
c4, c6, -c4, -c2, \
c1, c3, c3, -c7, \
c5, c7, -c1, -c5, \
c4, -c6, c4, -c2, \
-c4, c2, c4, -c6, \
c5, -c1, c7, -c5, \
c7, c3, c3, -c1 }

Definition at line 203 of file idct_mmx.c.

#define mmxext_table (   c1,
  c2,
  c3,
  c4,
  c5,
  c6,
  c7 
)
Value:
{ c4, c2, -c4, -c2, \
c4, c6, c4, c6, \
c1, c3, -c1, -c5, \
c5, c7, c3, -c7, \
c4, -c6, c4, -c6, \
-c4, c2, c4, -c2, \
c5, -c1, c3, -c1, \
c7, c3, c7, -c5 }

Definition at line 77 of file idct_mmx.c.

#define round (   bias)    ((int)(((bias)+0.5) * (1<<ROW_SHIFT)))

Definition at line 31 of file idct_mmx.c.

Referenced by dequant(), normalize_double(), and vp8_init().

#define rounder (   bias)    {round (bias), round (bias)}

Definition at line 32 of file idct_mmx.c.

Referenced by ff_celp_lp_synthesis_filter(), gmc1_altivec(), and gmc1_c().

#define ROW_SHIFT   11
#define T1   13036
#define T2   27146
#define T3   43790

Referenced by ff_jpegls_quantize(), and idct_col().

Function Documentation

void ff_mmx_idct ( int16_t *const  block)

Definition at line 626 of file idct_mmx.c.

void ff_mmxext_idct ( int16_t *const  block)

Definition at line 625 of file idct_mmx.c.

static void idct_col ( int16_t *const  col,
const int  offset 
)
inlinestatic

Definition at line 417 of file idct_mmx.c.

static void mmx_row ( const int16_t *const  table,
const int32_t *const  rounder 
)
inlinestatic

Definition at line 235 of file idct_mmx.c.

static void mmx_row_head ( int16_t *const  row,
const int  offset,
const int16_t *const  table 
)
inlinestatic

Definition at line 212 of file idct_mmx.c.

static void mmx_row_mid ( int16_t *const  row,
const int  store,
const int  offset,
const int16_t *const  table 
)
inlinestatic

Definition at line 305 of file idct_mmx.c.

static void mmx_row_tail ( int16_t *const  row,
const int  store 
)
inlinestatic

Definition at line 278 of file idct_mmx.c.

static void mmxext_row ( const int16_t *const  table,
const int32_t *const  rounder 
)
inlinestatic

Definition at line 106 of file idct_mmx.c.

static void mmxext_row_head ( int16_t *const  row,
const int  offset,
const int16_t *const  table 
)
inlinestatic

Definition at line 86 of file idct_mmx.c.

static void mmxext_row_mid ( int16_t *const  row,
const int  store,
const int  offset,
const int16_t *const  table 
)
inlinestatic

Definition at line 169 of file idct_mmx.c.

static void mmxext_row_tail ( int16_t *const  row,
const int  store 
)
inlinestatic

Definition at line 148 of file idct_mmx.c.

Variable Documentation

const int32_t rounder0[]
static
Initial value:
rounder ((1 << (COL_SHIFT - 1)) - 0.5)

Definition at line 571 of file idct_mmx.c.

const int32_t rounder1[]
static
Initial value:
rounder (1.25683487303)

Definition at line 574 of file idct_mmx.c.

const int32_t rounder2[]
static
Initial value:
rounder (0.60355339059)

Definition at line 578 of file idct_mmx.c.

const int32_t rounder3[]
static
Initial value:
rounder (0.087788325588)

Definition at line 582 of file idct_mmx.c.

const int32_t rounder4[] = rounder (0)
static

Definition at line 573 of file idct_mmx.c.

const int32_t rounder5[]
static
Initial value:
rounder (-0.441341716183)

Definition at line 584 of file idct_mmx.c.

const int32_t rounder6[]
static
Initial value:
rounder (-0.25)

Definition at line 580 of file idct_mmx.c.

const int32_t rounder7[]
static
Initial value:
rounder (-0.25)

Definition at line 576 of file idct_mmx.c.