libavcodec/ppc/snow_altivec.c File Reference

#include "libavcodec/dsputil.h"
#include "libavcodec/snow.h"
#include "gcc_fixes.h"
#include "dsputil_altivec.h"
#include <assert.h>

Go to the source code of this file.

Defines

#define slice_buffer_get_line(slice_buf, line_num)   ((slice_buf)->line[line_num] ? (slice_buf)->line[line_num] : slice_buffer_load_line((slice_buf), (line_num)))
#define LOAD_BLOCKS
#define LOAD_OBMCS
#define STEPS_0_1
#define FINAL_STEP_SCALAR
#define STEPS_2_3
#define FINAL_STEP_VEC

Functions

static DWTELEMslice_buffer_load_line (slice_buffer *buf, int line)
void ff_snow_horizontal_compose97i_altivec (IDWTELEM *b, int width)
void ff_snow_vertical_compose97i_altivec (DWTELEM *b0, DWTELEM *b1, DWTELEM *b2, DWTELEM *b3, DWTELEM *b4, DWTELEM *b5, int width)
static void inner_add_yblock_bw_8_obmc_16_altivec (uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
static void inner_add_yblock_bw_16_obmc_32_altivec (uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
static void inner_add_yblock_a_bw_8_obmc_16_altivec (uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
static void inner_add_yblock_a_bw_16_obmc_32_altivec (uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
void ff_snow_inner_add_yblock_altivec (uint8_t *obmc, const int obmc_stride, uint8_t **block, int b_w, int b_h, int src_x, int src_y, int src_stride, slice_buffer *sb, int add, uint8_t *dst8)
void snow_init_altivec (DSPContext *c, AVCodecContext *avctx)


Define Documentation

#define FINAL_STEP_SCALAR

Value:

for(x=0; x<b_w; x++)\
            if(add){\
                vbuf[x] += dst[x + src_x];\
                vbuf[x] = (vbuf[x] + (1<<(FRAC_BITS-1))) >> FRAC_BITS;\
                if(vbuf[x]&(~255)) vbuf[x]= ~(vbuf[x]>>31);\
                dst8[x + y*src_stride] = vbuf[x];\
            }else{\
                dst[x + src_x] -= vbuf[x];\
            }

Definition at line 496 of file snow_altivec.c.

Referenced by inner_add_yblock_bw_16_obmc_32_altivec(), and inner_add_yblock_bw_8_obmc_16_altivec().

#define FINAL_STEP_VEC

#define LOAD_BLOCKS

Value:

tmp1 = vec_ld(0, &block[3][y*src_stride]);\
            align = vec_lvsl(0, &block[3][y*src_stride]);\
            tmp2 = vec_ld(15, &block[3][y*src_stride]);\
\
            b3 = vec_perm(tmp1,tmp2,align);\
\
            tmp1 = vec_ld(0, &block[2][y*src_stride]);\
            align = vec_lvsl(0, &block[2][y*src_stride]);\
            tmp2 = vec_ld(15, &block[2][y*src_stride]);\
\
            b2 = vec_perm(tmp1,tmp2,align);\
\
            tmp1 = vec_ld(0, &block[1][y*src_stride]);\
            align = vec_lvsl(0, &block[1][y*src_stride]);\
            tmp2 = vec_ld(15, &block[1][y*src_stride]);\
\
            b1 = vec_perm(tmp1,tmp2,align);\
\
            tmp1 = vec_ld(0, &block[0][y*src_stride]);\
            align = vec_lvsl(0, &block[0][y*src_stride]);\
            tmp2 = vec_ld(15, &block[0][y*src_stride]);\
\
            b0 = vec_perm(tmp1,tmp2,align);

Definition at line 416 of file snow_altivec.c.

Referenced by inner_add_yblock_a_bw_16_obmc_32_altivec(), inner_add_yblock_a_bw_8_obmc_16_altivec(), inner_add_yblock_bw_16_obmc_32_altivec(), and inner_add_yblock_bw_8_obmc_16_altivec().

#define LOAD_OBMCS

Value:

tmp1 = vec_ld(0, obmc1);\
            align = vec_lvsl(0, obmc1);\
            tmp2 = vec_ld(15, obmc1);\
\
            ob1 = vec_perm(tmp1,tmp2,align);\
\
            tmp1 = vec_ld(0, obmc2);\
            align = vec_lvsl(0, obmc2);\
            tmp2 = vec_ld(15, obmc2);\
\
            ob2 = vec_perm(tmp1,tmp2,align);\
\
            tmp1 = vec_ld(0, obmc3);\
            align = vec_lvsl(0, obmc3);\
            tmp2 = vec_ld(15, obmc3);\
\
            ob3 = vec_perm(tmp1,tmp2,align);\
\
            tmp1 = vec_ld(0, obmc4);\
            align = vec_lvsl(0, obmc4);\
            tmp2 = vec_ld(15, obmc4);\
\
            ob4 = vec_perm(tmp1,tmp2,align);

Definition at line 441 of file snow_altivec.c.

Referenced by inner_add_yblock_a_bw_16_obmc_32_altivec(), inner_add_yblock_a_bw_8_obmc_16_altivec(), inner_add_yblock_bw_16_obmc_32_altivec(), and inner_add_yblock_bw_8_obmc_16_altivec().

#define slice_buffer_get_line ( slice_buf,
line_num   )     ((slice_buf)->line[line_num] ? (slice_buf)->line[line_num] : slice_buffer_load_line((slice_buf), (line_num)))

#define STEPS_0_1

Value:

h1 = (vector unsigned short)\
                 vec_mergeh(ob1, ob2);\
\
            h2 = (vector unsigned short)\
                 vec_mergeh(ob3, ob4);\
\
            ih = (vector unsigned char)\
                 vec_mergeh(h1,h2);\
\
            l1 = (vector unsigned short) vec_mergeh(b3, b2);\
\
            ih1 = (vector unsigned char) vec_mergel(h1, h2);\
\
            l2 = (vector unsigned short) vec_mergeh(b1, b0);\
\
            il = (vector unsigned char) vec_mergeh(l1, l2);\
\
            v[0] = (vector signed int) vec_msum(ih, il, vec_splat_u32(0));\
\
            il1 = (vector unsigned char) vec_mergel(l1, l2);\
\
            v[1] = (vector signed int) vec_msum(ih1, il1, vec_splat_u32(0));

Definition at line 472 of file snow_altivec.c.

Referenced by inner_add_yblock_a_bw_16_obmc_32_altivec(), inner_add_yblock_a_bw_8_obmc_16_altivec(), inner_add_yblock_bw_16_obmc_32_altivec(), and inner_add_yblock_bw_8_obmc_16_altivec().

#define STEPS_2_3

Value:

h1 = (vector unsigned short) vec_mergel(ob1, ob2);\
\
            h2 = (vector unsigned short) vec_mergel(ob3, ob4);\
\
            ih = (vector unsigned char) vec_mergeh(h1,h2);\
\
            l1 = (vector unsigned short) vec_mergel(b3, b2);\
\
            l2 = (vector unsigned short) vec_mergel(b1, b0);\
\
            ih1 = (vector unsigned char) vec_mergel(h1,h2);\
\
            il = (vector unsigned char) vec_mergeh(l1,l2);\
\
            v[2] = (vector signed int) vec_msum(ih, il, vec_splat_u32(0));\
\
            il1 = (vector unsigned char) vec_mergel(l1,l2);\
\
            v[3] = (vector signed int) vec_msum(ih1, il1, vec_splat_u32(0));

Definition at line 552 of file snow_altivec.c.

Referenced by inner_add_yblock_a_bw_16_obmc_32_altivec(), and inner_add_yblock_bw_16_obmc_32_altivec().


Function Documentation

void ff_snow_horizontal_compose97i_altivec ( IDWTELEM b,
int  width 
)

Definition at line 61 of file snow_altivec.c.

Referenced by snow_init_altivec().

void ff_snow_inner_add_yblock_altivec ( uint8_t *  obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t *  dst8 
)

Definition at line 747 of file snow_altivec.c.

Referenced by snow_init_altivec().

void ff_snow_vertical_compose97i_altivec ( DWTELEM b0,
DWTELEM b1,
DWTELEM b2,
DWTELEM b3,
DWTELEM b4,
DWTELEM b5,
int  width 
)

Definition at line 369 of file snow_altivec.c.

Referenced by snow_init_altivec().

static void inner_add_yblock_a_bw_16_obmc_32_altivec ( uint8_t *  obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t *  dst8 
) [static]

Definition at line 701 of file snow_altivec.c.

Referenced by ff_snow_inner_add_yblock_altivec().

static void inner_add_yblock_a_bw_8_obmc_16_altivec ( uint8_t *  obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t *  dst8 
) [static]

Definition at line 654 of file snow_altivec.c.

Referenced by ff_snow_inner_add_yblock_altivec().

static void inner_add_yblock_bw_16_obmc_32_altivec ( uint8_t *  obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t *  dst8 
) [static]

Definition at line 574 of file snow_altivec.c.

Referenced by ff_snow_inner_add_yblock_altivec().

static void inner_add_yblock_bw_8_obmc_16_altivec ( uint8_t *  obmc,
const int  obmc_stride,
uint8_t **  block,
int  b_w,
int  b_h,
int  src_x,
int  src_y,
int  src_stride,
slice_buffer sb,
int  add,
uint8_t *  dst8 
) [static]

Definition at line 507 of file snow_altivec.c.

Referenced by ff_snow_inner_add_yblock_altivec().

static DWTELEM* slice_buffer_load_line ( slice_buffer buf,
int  line 
) [static]

Definition at line 36 of file snow_altivec.c.

void snow_init_altivec ( DSPContext c,
AVCodecContext avctx 
)

Definition at line 781 of file snow_altivec.c.

Referenced by dsputil_init_ppc().


Generated on Fri Oct 26 02:35:44 2012 for FFmpeg by  doxygen 1.5.8