#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 DWTELEM * | slice_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 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 |
Definition at line 617 of file snow_altivec.c.
Referenced by inner_add_yblock_a_bw_16_obmc_32_altivec(), and inner_add_yblock_a_bw_8_obmc_16_altivec().
| #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))) |
Definition at line 34 of file snow_altivec.c.
Referenced by correlate_slice_buffered(), decode_frame(), decode_subband_slice_buffered(), dequantize_slice_buffered(), ff_snow_inner_add_yblock(), 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(), inner_add_yblock_bw_8_obmc_16_altivec(), spatial_compose53i_buffered_init(), spatial_compose53i_dy_buffered(), spatial_compose97i_buffered_init(), and spatial_compose97i_dy_buffered().
| #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().
| void ff_snow_horizontal_compose97i_altivec | ( | IDWTELEM * | b, | |
| int | width | |||
| ) |
| 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 | |||
| ) |
| 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] |
| 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] |
| 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] |
| 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] |
| 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 | |||
| ) |
1.5.8