FFmpeg
 All Data Structures 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 "libavcodec/dsputil.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 36 of file fdct_altivec.c.

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

Definition at line 37 of file fdct_altivec.c.

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

Definition at line 38 of file fdct_altivec.c.

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

Definition at line 39 of file fdct_altivec.c.

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

Definition at line 40 of file fdct_altivec.c.

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

Definition at line 41 of file fdct_altivec.c.

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

Definition at line 42 of file fdct_altivec.c.

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

Definition at line 43 of file fdct_altivec.c.

#define W0   -(2 * C2)

Definition at line 46 of file fdct_altivec.c.

#define W1   (2 * C6)

Definition at line 47 of file fdct_altivec.c.

#define W2   (SQRT_2 * C6)

Definition at line 48 of file fdct_altivec.c.

#define W3   (SQRT_2 * C3)

Definition at line 49 of file fdct_altivec.c.

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

Definition at line 50 of file fdct_altivec.c.

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

Definition at line 51 of file fdct_altivec.c.

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

Definition at line 52 of file fdct_altivec.c.

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

Definition at line 53 of file fdct_altivec.c.

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

Definition at line 54 of file fdct_altivec.c.

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

Definition at line 55 of file fdct_altivec.c.

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

Definition at line 56 of file fdct_altivec.c.

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

Definition at line 57 of file fdct_altivec.c.

#define LD_W0   vec_splat(cnsts0, 0)

Definition at line 66 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W1   vec_splat(cnsts0, 1)

Definition at line 67 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W2   vec_splat(cnsts0, 2)

Definition at line 68 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W3   vec_splat(cnsts0, 3)

Definition at line 69 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W4   vec_splat(cnsts1, 0)

Definition at line 70 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W5   vec_splat(cnsts1, 1)

Definition at line 71 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W6   vec_splat(cnsts1, 2)

Definition at line 72 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W7   vec_splat(cnsts1, 3)

Definition at line 73 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W8   vec_splat(cnsts2, 0)

Definition at line 74 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_W9   vec_splat(cnsts2, 1)

Definition at line 75 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_WA   vec_splat(cnsts2, 2)

Definition at line 76 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

#define LD_WB   vec_splat(cnsts2, 3)

Definition at line 77 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().

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

Definition at line 80 of file fdct_altivec.c.

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

Definition at line 137 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 198 of file fdct_altivec.c.

Variable Documentation

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

Definition at line 60 of file fdct_altivec.c.

Referenced by ff_fdct_altivec().