FFmpeg
Loading...
Searching...
No Matches
vp9_idct_lsx.c File Reference

Go to the source code of this file.

Macros

#define VP9_DCT_CONST_BITS   14
 
#define ALLOC_ALIGNED(align)
 
#define ROUND_POWER_OF_TWO(value, n)
 
#define VP9_DOTP_CONST_PAIR(reg0, reg1, cnst0, cnst1, out0, out1)
 
#define VP9_SET_COSPI_PAIR(c0_h, c1_h)
 
#define VP9_ADDBLK_ST8x4_UB(dst, dst_stride, in0, in1, in2, in3)
 
#define VP9_UNPCK_UB_SH(in, out_h, out_l)
 
#define VP9_ILVLTRANS4x8_H(in0, in1, in2, in3, in4, in5, in6, in7, out0, out1, out2, out3, out4, out5, out6, out7)
 
#define VP9_MADD(inp0, inp1, inp2, inp3, cst0, cst1, cst2, cst3, out0, out1, out2, out3)
 
#define VP9_SET_CONST_PAIR(mask_h, idx1_h, idx2_h)
 
#define VP9_IDCT8x8_1D(in0, in1, in2, in3, in4, in5, in6, in7, out0, out1, out2, out3, out4, out5, out6, out7)
 
#define SUB(a, b)
 

Functions

static av_always_inline void vp9_idct8x8_1_add_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct8x8_12_colcol_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct8x8_colcol_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct16_1d_columns_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct16_1d_columns_lsx (int16_t *input, int16_t *output)
 
static void vp9_idct16x16_1_add_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct16x16_10_colcol_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct16x16_colcol_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct_butterfly_transpose_store (int16_t *tmp_buf, int16_t *tmp_eve_buf, int16_t *tmp_odd_buf, int16_t *dst)
 
static void vp9_idct8x32_column_even_process_store (int16_t *tmp_buf, int16_t *tmp_eve_buf)
 
static void vp9_idct8x32_column_odd_process_store (int16_t *tmp_buf, int16_t *tmp_odd_buf)
 
static void vp9_idct8x32_column_butterfly_addblk (int16_t *tmp_eve_buf, int16_t *tmp_odd_buf, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct8x32_1d_columns_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct8x32_1d_columns_lsx (int16_t *input, int16_t *output, int16_t *tmp_buf)
 
static void vp9_idct32x32_1_add_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct32x32_34_colcol_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
static void vp9_idct32x32_colcol_addblk_lsx (int16_t *input, uint8_t *dst, int32_t dst_stride)
 
void ff_idct_idct_8x8_add_lsx (uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
 
void ff_idct_idct_16x16_add_lsx (uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
 
void ff_idct_idct_32x32_add_lsx (uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
 

Variables

const int32_t cospi_1_64 = 16364
 
const int32_t cospi_2_64 = 16305
 
const int32_t cospi_3_64 = 16207
 
const int32_t cospi_4_64 = 16069
 
const int32_t cospi_5_64 = 15893
 
const int32_t cospi_6_64 = 15679
 
const int32_t cospi_7_64 = 15426
 
const int32_t cospi_8_64 = 15137
 
const int32_t cospi_9_64 = 14811
 
const int32_t cospi_10_64 = 14449
 
const int32_t cospi_11_64 = 14053
 
const int32_t cospi_12_64 = 13623
 
const int32_t cospi_13_64 = 13160
 
const int32_t cospi_14_64 = 12665
 
const int32_t cospi_15_64 = 12140
 
const int32_t cospi_16_64 = 11585
 
const int32_t cospi_17_64 = 11003
 
const int32_t cospi_18_64 = 10394
 
const int32_t cospi_19_64 = 9760
 
const int32_t cospi_20_64 = 9102
 
const int32_t cospi_21_64 = 8423
 
const int32_t cospi_22_64 = 7723
 
const int32_t cospi_23_64 = 7005
 
const int32_t cospi_24_64 = 6270
 
const int32_t cospi_25_64 = 5520
 
const int32_t cospi_26_64 = 4756
 
const int32_t cospi_27_64 = 3981
 
const int32_t cospi_28_64 = 3196
 
const int32_t cospi_29_64 = 2404
 
const int32_t cospi_30_64 = 1606
 
const int32_t cospi_31_64 = 804
 
const int32_t sinpi_1_9 = 5283
 
const int32_t sinpi_2_9 = 9929
 
const int32_t sinpi_3_9 = 13377
 
const int32_t sinpi_4_9 = 15212
 

Macro Definition Documentation

◆ VP9_DCT_CONST_BITS

◆ ALLOC_ALIGNED

◆ ROUND_POWER_OF_TWO

#define ROUND_POWER_OF_TWO ( value,
n )
Value:
(((value) + (1 << ((n) - 1))) >> (n))
double value
Definition eval.c:102

Definition at line 29 of file vp9_idct_lsx.c.

Referenced by vp9_idct16x16_1_add_lsx(), vp9_idct32x32_1_add_lsx(), and vp9_idct8x8_1_add_lsx().

◆ VP9_DOTP_CONST_PAIR

#define VP9_DOTP_CONST_PAIR ( reg0,
reg1,
cnst0,
cnst1,
out0,
out1 )
Value:
{ \
__m128i k0_m = __lsx_vreplgr2vr_h(cnst0); \
__m128i s0_m, s1_m, s2_m, s3_m; \
\
s0_m = __lsx_vreplgr2vr_h(cnst1); \
k0_m = __lsx_vpackev_h(s0_m, k0_m); \
\
s1_m = __lsx_vilvl_h(__lsx_vneg_h(reg1), reg0); \
s0_m = __lsx_vilvh_h(__lsx_vneg_h(reg1), reg0); \
s3_m = __lsx_vilvl_h(reg0, reg1); \
s2_m = __lsx_vilvh_h(reg0, reg1); \
DUP2_ARG2(__lsx_vdp2_w_h, s1_m, k0_m, s0_m, k0_m, s1_m, s0_m); \
DUP2_ARG2(__lsx_vsrari_w, s1_m, VP9_DCT_CONST_BITS, \
s0_m, VP9_DCT_CONST_BITS, s1_m, s0_m); \
out0 = __lsx_vpickev_h(s0_m, s1_m); \
DUP2_ARG2(__lsx_vdp2_w_h, s3_m, k0_m, s2_m, k0_m, s1_m, s0_m); \
DUP2_ARG2(__lsx_vsrari_w, s1_m, VP9_DCT_CONST_BITS, \
s0_m, VP9_DCT_CONST_BITS, s1_m, s0_m); \
out1 = __lsx_vpickev_h(s0_m, s1_m); \
}
#define VP9_DCT_CONST_BITS

Definition at line 68 of file vp9_idct_lsx.c.

Referenced by vp9_idct16_1d_columns_addblk_lsx(), vp9_idct16_1d_columns_lsx(), vp9_idct8x32_column_even_process_store(), and vp9_idct8x32_column_odd_process_store().

◆ VP9_SET_COSPI_PAIR

#define VP9_SET_COSPI_PAIR ( c0_h,
c1_h )
Value:
( { \
__m128i out0_m, r0_m, r1_m; \
\
r0_m = __lsx_vreplgr2vr_h(c0_h); \
r1_m = __lsx_vreplgr2vr_h(c1_h); \
out0_m = __lsx_vpackev_h(r1_m, r0_m); \
\
out0_m; \
} )

Definition at line 90 of file vp9_idct_lsx.c.

Referenced by vp9_idct8x8_12_colcol_addblk_lsx().

◆ VP9_ADDBLK_ST8x4_UB

#define VP9_ADDBLK_ST8x4_UB ( dst,
dst_stride,
in0,
in1,
in2,
in3 )
Value:
{ \
uint8_t *dst_m = (uint8_t *) (dst); \
__m128i dst0_m, dst1_m, dst2_m, dst3_m; \
__m128i tmp0_m, tmp1_m; \
__m128i res0_m, res1_m, res2_m, res3_m; \
__m128i zero_m = __lsx_vldi(0); \
DUP4_ARG2(__lsx_vld, dst_m, 0, dst_m + dst_stride, 0, \
dst_m + 2 * dst_stride, 0, dst_m + 3 * dst_stride, 0, \
dst0_m, dst1_m, dst2_m, dst3_m); \
DUP4_ARG2(__lsx_vilvl_b, zero_m, dst0_m, zero_m, dst1_m, zero_m, \
dst2_m, zero_m, dst3_m, res0_m, res1_m, res2_m, res3_m);\
DUP4_ARG2(__lsx_vadd_h, res0_m, in0, res1_m, in1, res2_m, in2, \
res3_m, in3, res0_m, res1_m, res2_m, res3_m); \
DUP4_ARG1(__lsx_vclip255_h, res0_m, res1_m, res2_m, res3_m, \
res0_m, res1_m, res2_m, res3_m); \
DUP2_ARG2(__lsx_vpickev_b, res1_m, res0_m, res3_m, res2_m, \
tmp0_m, tmp1_m); \
__lsx_vstelm_d(tmp0_m, dst_m, 0, 0); \
__lsx_vstelm_d(tmp0_m, dst_m + dst_stride, 0, 1); \
__lsx_vstelm_d(tmp1_m, dst_m + 2 * dst_stride, 0, 0); \
__lsx_vstelm_d(tmp1_m, dst_m + 3 * dst_stride, 0, 1); \
}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87

Definition at line 101 of file vp9_idct_lsx.c.

Referenced by vp9_idct16_1d_columns_addblk_lsx(), vp9_idct8x32_column_butterfly_addblk(), vp9_idct8x8_12_colcol_addblk_lsx(), vp9_idct8x8_1_add_lsx(), and vp9_idct8x8_colcol_addblk_lsx().

◆ VP9_UNPCK_UB_SH

#define VP9_UNPCK_UB_SH ( in,
out_h,
out_l )
Value:
{ \
__m128i zero = __lsx_vldi(0); \
out_l = __lsx_vilvl_b(zero, in); \
out_h = __lsx_vilvh_b(zero, in); \
}
static int zero(InterplayACMContext *s, unsigned ind, unsigned col)

Definition at line 125 of file vp9_idct_lsx.c.

Referenced by vp9_idct16x16_1_add_lsx().

◆ VP9_ILVLTRANS4x8_H

#define VP9_ILVLTRANS4x8_H ( in0,
in1,
in2,
in3,
in4,
in5,
in6,
in7,
out0,
out1,
out2,
out3,
out4,
out5,
out6,
out7 )
Value:
{ \
__m128i tmp0_m, tmp1_m, tmp2_m, tmp3_m; \
__m128i tmp0_n, tmp1_n, tmp2_n, tmp3_n; \
__m128i zero_m = __lsx_vldi(0); \
\
DUP4_ARG2(__lsx_vilvl_h, in1, in0, in3, in2, in5, in4, in7, in6, \
tmp0_n, tmp1_n, tmp2_n, tmp3_n); \
tmp0_m = __lsx_vilvl_w(tmp1_n, tmp0_n); \
tmp2_m = __lsx_vilvh_w(tmp1_n, tmp0_n); \
tmp1_m = __lsx_vilvl_w(tmp3_n, tmp2_n); \
tmp3_m = __lsx_vilvh_w(tmp3_n, tmp2_n); \
\
out0 = __lsx_vilvl_d(tmp1_m, tmp0_m); \
out1 = __lsx_vilvh_d(tmp1_m, tmp0_m); \
out2 = __lsx_vilvl_d(tmp3_m, tmp2_m); \
out3 = __lsx_vilvh_d(tmp3_m, tmp2_m); \
\
out4 = zero_m; \
out5 = zero_m; \
out6 = zero_m; \
out7 = zero_m; \
}

Definition at line 132 of file vp9_idct_lsx.c.

Referenced by vp9_idct8x8_12_colcol_addblk_lsx().

◆ VP9_MADD

#define VP9_MADD ( inp0,
inp1,
inp2,
inp3,
cst0,
cst1,
cst2,
cst3,
out0,
out1,
out2,
out3 )
Value:
{ \
__m128i madd_s0_m, madd_s1_m, madd_s2_m, madd_s3_m; \
__m128i tmp0_m, tmp1_m, tmp2_m, tmp3_m; \
\
madd_s1_m = __lsx_vilvl_h(inp1, inp0); \
madd_s0_m = __lsx_vilvh_h(inp1, inp0); \
madd_s3_m = __lsx_vilvl_h(inp3, inp2); \
madd_s2_m = __lsx_vilvh_h(inp3, inp2); \
DUP4_ARG2(__lsx_vdp2_w_h, madd_s1_m, cst0, madd_s0_m, cst0, \
madd_s1_m, cst1, madd_s0_m, cst1, tmp0_m, tmp1_m, \
tmp2_m, tmp3_m); \
DUP4_ARG2(__lsx_vsrari_w, tmp0_m, VP9_DCT_CONST_BITS, tmp1_m, \
VP9_DCT_CONST_BITS, tmp0_m, tmp1_m, tmp2_m, tmp3_m); \
DUP2_ARG2(__lsx_vpickev_h, tmp1_m, tmp0_m, tmp3_m, tmp2_m, out0, out1); \
DUP4_ARG2(__lsx_vdp2_w_h, madd_s3_m, cst2, madd_s2_m, cst2, madd_s3_m, \
cst3, madd_s2_m, cst3, tmp0_m, tmp1_m, tmp2_m, tmp3_m); \
DUP4_ARG2(__lsx_vsrari_w, tmp0_m, VP9_DCT_CONST_BITS, \
tmp3_m, VP9_DCT_CONST_BITS, tmp0_m, tmp1_m, tmp2_m, tmp3_m); \
DUP2_ARG2(__lsx_vpickev_h, tmp1_m, tmp0_m, tmp3_m, tmp2_m, out2, out3); \
}

Definition at line 158 of file vp9_idct_lsx.c.

◆ VP9_SET_CONST_PAIR

#define VP9_SET_CONST_PAIR ( mask_h,
idx1_h,
idx2_h )
Value:
( { \
__m128i c0_m, c1_m; \
\
DUP2_ARG2(__lsx_vreplvei_h, mask_h, idx1_h, mask_h, idx2_h, c0_m, c1_m); \
c0_m = __lsx_vpackev_h(c1_m, c0_m); \
\
c0_m; \
} )

Definition at line 183 of file vp9_idct_lsx.c.

◆ VP9_IDCT8x8_1D

#define VP9_IDCT8x8_1D ( in0,
in1,
in2,
in3,
in4,
in5,
in6,
in7,
out0,
out1,
out2,
out3,
out4,
out5,
out6,
out7 )

◆ SUB

#define SUB ( a,
b )
Value:
__lsx_vsub_h(a, b)
int a
#define b
Definition input.c:43

Referenced by vp9_idct_butterfly_transpose_store().

Function Documentation

◆ vp9_idct8x8_1_add_lsx()

static av_always_inline void vp9_idct8x8_1_add_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 232 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_8x8_add_lsx().

◆ vp9_idct8x8_12_colcol_addblk_lsx()

static void vp9_idct8x8_12_colcol_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 250 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_8x8_add_lsx().

◆ vp9_idct8x8_colcol_addblk_lsx()

static void vp9_idct8x8_colcol_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 333 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_8x8_add_lsx().

◆ vp9_idct16_1d_columns_addblk_lsx()

static void vp9_idct16_1d_columns_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

◆ vp9_idct16_1d_columns_lsx()

static void vp9_idct16_1d_columns_lsx ( int16_t * input,
int16_t * output )
static

◆ vp9_idct16x16_1_add_lsx()

static void vp9_idct16x16_1_add_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 637 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_16x16_add_lsx().

◆ vp9_idct16x16_10_colcol_addblk_lsx()

static void vp9_idct16x16_10_colcol_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 680 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_16x16_add_lsx().

◆ vp9_idct16x16_colcol_addblk_lsx()

static void vp9_idct16x16_colcol_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 715 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_16x16_add_lsx().

◆ vp9_idct_butterfly_transpose_store()

static void vp9_idct_butterfly_transpose_store ( int16_t * tmp_buf,
int16_t * tmp_eve_buf,
int16_t * tmp_odd_buf,
int16_t * dst )
static

Definition at line 736 of file vp9_idct_lsx.c.

Referenced by vp9_idct8x32_1d_columns_lsx().

◆ vp9_idct8x32_column_even_process_store()

static void vp9_idct8x32_column_even_process_store ( int16_t * tmp_buf,
int16_t * tmp_eve_buf )
static

◆ vp9_idct8x32_column_odd_process_store()

static void vp9_idct8x32_column_odd_process_store ( int16_t * tmp_buf,
int16_t * tmp_odd_buf )
static

◆ vp9_idct8x32_column_butterfly_addblk()

static void vp9_idct8x32_column_butterfly_addblk ( int16_t * tmp_eve_buf,
int16_t * tmp_odd_buf,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 1152 of file vp9_idct_lsx.c.

Referenced by vp9_idct8x32_1d_columns_addblk_lsx().

◆ vp9_idct8x32_1d_columns_addblk_lsx()

static void vp9_idct8x32_1d_columns_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

◆ vp9_idct8x32_1d_columns_lsx()

static void vp9_idct8x32_1d_columns_lsx ( int16_t * input,
int16_t * output,
int16_t * tmp_buf )
static

◆ vp9_idct32x32_1_add_lsx()

static void vp9_idct32x32_1_add_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 1270 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_32x32_add_lsx().

◆ vp9_idct32x32_34_colcol_addblk_lsx()

static void vp9_idct32x32_34_colcol_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 1313 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_32x32_add_lsx().

◆ vp9_idct32x32_colcol_addblk_lsx()

static void vp9_idct32x32_colcol_addblk_lsx ( int16_t * input,
uint8_t * dst,
int32_t dst_stride )
static

Definition at line 1347 of file vp9_idct_lsx.c.

Referenced by ff_idct_idct_32x32_add_lsx().

◆ ff_idct_idct_8x8_add_lsx()

void ff_idct_idct_8x8_add_lsx ( uint8_t * dst,
ptrdiff_t stride,
int16_t * block,
int eob )

Definition at line 1370 of file vp9_idct_lsx.c.

◆ ff_idct_idct_16x16_add_lsx()

void ff_idct_idct_16x16_add_lsx ( uint8_t * dst,
ptrdiff_t stride,
int16_t * block,
int eob )

Definition at line 1384 of file vp9_idct_lsx.c.

◆ ff_idct_idct_32x32_add_lsx()

void ff_idct_idct_32x32_add_lsx ( uint8_t * dst,
ptrdiff_t stride,
int16_t * block,
int eob )

Definition at line 1399 of file vp9_idct_lsx.c.

Variable Documentation

◆ cospi_1_64

◆ cospi_2_64

◆ cospi_3_64

◆ cospi_4_64

◆ cospi_5_64

◆ cospi_6_64

◆ cospi_7_64

◆ cospi_8_64

◆ cospi_9_64

◆ cospi_10_64

◆ cospi_11_64

◆ cospi_12_64

◆ cospi_13_64

◆ cospi_14_64

◆ cospi_15_64

◆ cospi_16_64

◆ cospi_17_64

◆ cospi_18_64

◆ cospi_19_64

◆ cospi_20_64

◆ cospi_21_64

◆ cospi_22_64

◆ cospi_23_64

◆ cospi_24_64

◆ cospi_25_64

◆ cospi_26_64

◆ cospi_27_64

◆ cospi_28_64

◆ cospi_29_64

◆ cospi_30_64

◆ cospi_31_64

◆ sinpi_1_9

const int32_t sinpi_1_9 = 5283

Definition at line 63 of file vp9_idct_lsx.c.

◆ sinpi_2_9

const int32_t sinpi_2_9 = 9929

Definition at line 64 of file vp9_idct_lsx.c.

◆ sinpi_3_9

const int32_t sinpi_3_9 = 13377

Definition at line 65 of file vp9_idct_lsx.c.

◆ sinpi_4_9

const int32_t sinpi_4_9 = 15212

Definition at line 66 of file vp9_idct_lsx.c.