FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
fdct_altivec.c File Reference
#include "config.h"
#include "libavutil/common.h"
#include "dsputil_altivec.h"

Go to the source code of this file.

Macros

#define vs16(v)   ((vector signed short) (v))
 
#define vs32(v)   ((vector signed int) (v))
 
#define vu8(v)   ((vector unsigned char) (v))
 
#define vu16(v)   ((vector unsigned short) (v))
 
#define vu32(v)   ((vector unsigned int) (v))
 
#define C1   0.98078525066375732421875000 /* cos(1 * PI / 16) */
 
#define C2   0.92387950420379638671875000 /* cos(2 * PI / 16) */
 
#define C3   0.83146959543228149414062500 /* cos(3 * PI / 16) */
 
#define C4   0.70710676908493041992187500 /* cos(4 * PI / 16) */
 
#define C5   0.55557024478912353515625000 /* cos(5 * PI / 16) */
 
#define C6   0.38268342614173889160156250 /* cos(6 * PI / 16) */
 
#define C7   0.19509032368659973144531250 /* cos(7 * PI / 16) */
 
#define SQRT_2   1.41421353816986083984375000 /* sqrt(2) */
 
#define W0   -(2 * C2)
 
#define W1   (2 * C6)
 
#define W2   (SQRT_2 * C6)
 
#define W3   (SQRT_2 * C3)
 
#define W4   (SQRT_2 * (-C1 + C3 + C5 - C7))
 
#define W5   (SQRT_2 * (C1 + C3 - C5 + C7))
 
#define W6   (SQRT_2 * (C1 + C3 + C5 - C7))
 
#define W7   (SQRT_2 * (C1 + C3 - C5 - C7))
 
#define W8   (SQRT_2 * (C7 - C3))
 
#define W9   (SQRT_2 * (-C1 - C3))
 
#define WA   (SQRT_2 * (-C3 - C5))
 
#define WB   (SQRT_2 * (C5 - C3))
 
#define LD_W0   vec_splat(cnsts0, 0)
 
#define LD_W1   vec_splat(cnsts0, 1)
 
#define LD_W2   vec_splat(cnsts0, 2)
 
#define LD_W3   vec_splat(cnsts0, 3)
 
#define LD_W4   vec_splat(cnsts1, 0)
 
#define LD_W5   vec_splat(cnsts1, 1)
 
#define LD_W6   vec_splat(cnsts1, 2)
 
#define LD_W7   vec_splat(cnsts1, 3)
 
#define LD_W8   vec_splat(cnsts2, 0)
 
#define LD_W9   vec_splat(cnsts2, 1)
 
#define LD_WA   vec_splat(cnsts2, 2)
 
#define LD_WB   vec_splat(cnsts2, 3)
 
#define FDCTROW(b0, b1, b2, b3, b4, b5, b6, b7)
 
#define FDCTCOL(b0, b1, b2, b3, b4, b5, b6, b7)
 
#define MERGE_S16(hl, a, b)   vec_merge ## hl(vs16(a), vs16(b))
 
#define CTF0(n)
 
#define CTFX(x, b)
 
#define CTS(n)
 

Functions

void ff_fdct_altivec (int16_t *block)
 

Variables

static vector float fdctconsts [3]
 

Macro Definition Documentation

#define vs16 (   v)    ((vector signed short) (v))

Definition at line 29 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define vs32 (   v)    ((vector signed int) (v))

Definition at line 30 of file fdct_altivec.c.

#define vu8 (   v)    ((vector unsigned char) (v))

Definition at line 31 of file fdct_altivec.c.

#define vu16 (   v)    ((vector unsigned short) (v))

Definition at line 32 of file fdct_altivec.c.

#define vu32 (   v)    ((vector unsigned int) (v))

Definition at line 33 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define C1   0.98078525066375732421875000 /* cos(1 * PI / 16) */

Definition at line 35 of file fdct_altivec.c.

#define C2   0.92387950420379638671875000 /* cos(2 * PI / 16) */

Definition at line 36 of file fdct_altivec.c.

#define C3   0.83146959543228149414062500 /* cos(3 * PI / 16) */

Definition at line 37 of file fdct_altivec.c.

#define C4   0.70710676908493041992187500 /* cos(4 * PI / 16) */

Definition at line 38 of file fdct_altivec.c.

#define C5   0.55557024478912353515625000 /* cos(5 * PI / 16) */

Definition at line 39 of file fdct_altivec.c.

#define C6   0.38268342614173889160156250 /* cos(6 * PI / 16) */

Definition at line 40 of file fdct_altivec.c.

#define C7   0.19509032368659973144531250 /* cos(7 * PI / 16) */

Definition at line 41 of file fdct_altivec.c.

#define SQRT_2   1.41421353816986083984375000 /* sqrt(2) */

Definition at line 42 of file fdct_altivec.c.

#define W0   -(2 * C2)

Definition at line 44 of file fdct_altivec.c.

#define W1   (2 * C6)

Definition at line 45 of file fdct_altivec.c.

#define W2   (SQRT_2 * C6)

Definition at line 46 of file fdct_altivec.c.

#define W3   (SQRT_2 * C3)

Definition at line 47 of file fdct_altivec.c.

#define W4   (SQRT_2 * (-C1 + C3 + C5 - C7))

Definition at line 48 of file fdct_altivec.c.

#define W5   (SQRT_2 * (C1 + C3 - C5 + C7))

Definition at line 49 of file fdct_altivec.c.

#define W6   (SQRT_2 * (C1 + C3 + C5 - C7))

Definition at line 50 of file fdct_altivec.c.

#define W7   (SQRT_2 * (C1 + C3 - C5 - C7))

Definition at line 51 of file fdct_altivec.c.

#define W8   (SQRT_2 * (C7 - C3))

Definition at line 52 of file fdct_altivec.c.

#define W9   (SQRT_2 * (-C1 - C3))

Definition at line 53 of file fdct_altivec.c.

#define WA   (SQRT_2 * (-C3 - C5))

Definition at line 54 of file fdct_altivec.c.

#define WB   (SQRT_2 * (C5 - C3))

Definition at line 55 of file fdct_altivec.c.

#define LD_W0   vec_splat(cnsts0, 0)

Definition at line 63 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W1   vec_splat(cnsts0, 1)

Definition at line 64 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W2   vec_splat(cnsts0, 2)

Definition at line 65 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W3   vec_splat(cnsts0, 3)

Definition at line 66 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W4   vec_splat(cnsts1, 0)

Definition at line 67 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W5   vec_splat(cnsts1, 1)

Definition at line 68 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W6   vec_splat(cnsts1, 2)

Definition at line 69 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W7   vec_splat(cnsts1, 3)

Definition at line 70 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W8   vec_splat(cnsts2, 0)

Definition at line 71 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W9   vec_splat(cnsts2, 1)

Definition at line 72 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_WA   vec_splat(cnsts2, 2)

Definition at line 73 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_WB   vec_splat(cnsts2, 3)

Definition at line 74 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define FDCTROW (   b0,
  b1,
  b2,
  b3,
  b4,
  b5,
  b6,
  b7 
)

Definition at line 76 of file fdct_altivec.c.

#define FDCTCOL (   b0,
  b1,
  b2,
  b3,
  b4,
  b5,
  b6,
  b7 
)

Definition at line 133 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define MERGE_S16 (   hl,
  a,
  b 
)    vec_merge ## hl(vs16(a), vs16(b))

Referenced by ff_fdct_altivec().

#define CTF0 (   n)
Value:
b ## n ## 1 = ((vector float) vec_unpackl(vs16(b ## n ## 0))); \
b ## n ## 0 = ((vector float) vec_unpackh(vs16(b ## n ## 0))); \
b ## n ## 1 = vec_ctf(vs32(b ## n ## 1), 0); \
b ## n ## 0 = vec_ctf(vs32(b ## n ## 0), 0)

Referenced by ff_fdct_altivec().

#define CTFX (   x,
  b 
)
Value:
b ## 0 = ((vector float) vec_unpackh(vs16(x))); \
b ## 1 = ((vector float) vec_unpackl(vs16(x))); \
b ## 0 = vec_ctf(vs32(b ## 0), 0); \
b ## 1 = vec_ctf(vs32(b ## 1), 0)

Referenced by ff_fdct_altivec().

#define CTS (   n)
Value:
b ## n ## 0 = vec_round(b ## n ## 0); \
b ## n ## 1 = vec_round(b ## n ## 1); \
b ## n ## 0 = ((vector float) vec_cts(b ## n ## 0, 0)); \
b ## n ## 1 = ((vector float) vec_cts(b ## n ## 1, 0)); \
b ## n ## 0 = ((vector float) vec_pack(vs32(b ## n ## 0), \
vs32(b ## n ## 1))); \
vec_st(vs16(b ## n ## 0), 0, bp)

Referenced by ff_fdct_altivec().

Function Documentation

void ff_fdct_altivec ( int16_t *  block)

Definition at line 191 of file fdct_altivec.c.

Referenced by ff_dsputil_init_ppc().

Variable Documentation

vector float fdctconsts[3]
static
Initial value:
= {
{ W0, W1, W2, W3 },
{ W4, W5, W6, W7 },
{ W8, W9, WA, WB }
}

Definition at line 57 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().