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

Go to the source code of this file.

Macros

#define LSX_ST_8(_dst0, _dst1, _dst2, _dst3, _dst4, _dst5, _dst6, _dst7, _dst, _stride, _stride2, _stride3, _stride4)
 
#define LSX_ST_8X16(_dst0, _dst1, _dst2, _dst3, _dst4, _dst5, _dst6, _dst7, _dst, _stride)
 
#define INTRA_DC_TL_4X4(dir)
 
#define INTRA_DC_TL_8X8(dir)
 
#define INTRA_DC_TL_16X16(dir)
 
#define INTRA_DC_TL_32X32(dir)
 
#define INTRA_PREDICT_VALDC_16X16_LSX(val)
 
#define INTRA_PREDICT_VALDC_32X32_LSX(val)
 

Functions

void ff_vert_16x16_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *left, const uint8_t *src)
 
void ff_vert_32x32_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *left, const uint8_t *src)
 
void ff_hor_16x16_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, const uint8_t *top)
 
void ff_hor_32x32_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, const uint8_t *top)
 
void ff_dc_4x4_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top)
 
 INTRA_DC_TL_4X4 (top)
 
 INTRA_DC_TL_4X4 (left)
 
void ff_dc_8x8_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top)
 
 INTRA_DC_TL_8X8 (top)
 
 INTRA_DC_TL_8X8 (left)
 
void ff_dc_16x16_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top)
 
 INTRA_DC_TL_16X16 (top)
 
 INTRA_DC_TL_16X16 (left)
 
void ff_dc_32x32_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top)
 
 INTRA_DC_TL_32X32 (top)
 
 INTRA_DC_TL_32X32 (left)
 
 INTRA_PREDICT_VALDC_16X16_LSX (127)
 
 INTRA_PREDICT_VALDC_16X16_LSX (128)
 
 INTRA_PREDICT_VALDC_16X16_LSX (129)
 
 INTRA_PREDICT_VALDC_32X32_LSX (127)
 
 INTRA_PREDICT_VALDC_32X32_LSX (128)
 
 INTRA_PREDICT_VALDC_32X32_LSX (129)
 
void ff_tm_4x4_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top_ptr)
 
void ff_tm_8x8_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top_ptr)
 
void ff_tm_16x16_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top_ptr)
 
void ff_tm_32x32_lsx (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src_left, const uint8_t *src_top_ptr)
 

Macro Definition Documentation

◆ LSX_ST_8

#define LSX_ST_8 ( _dst0,
_dst1,
_dst2,
_dst3,
_dst4,
_dst5,
_dst6,
_dst7,
_dst,
_stride,
_stride2,
_stride3,
_stride4 )
Value:
{ \
__lsx_vst(_dst0, _dst, 0); \
__lsx_vstx(_dst1, _dst, _stride); \
__lsx_vstx(_dst2, _dst, _stride2); \
__lsx_vstx(_dst3, _dst, _stride3); \
_dst += _stride4; \
__lsx_vst(_dst4, _dst, 0); \
__lsx_vstx(_dst5, _dst, _stride); \
__lsx_vstx(_dst6, _dst, _stride2); \
__lsx_vstx(_dst7, _dst, _stride3); \
}
uint8_t * _dst
Definition dsp.h:56
ptrdiff_t _stride

Definition at line 26 of file vp9_intra_lsx.c.

Referenced by ff_dc_16x16_lsx(), ff_hor_16x16_lsx(), ff_tm_16x16_lsx(), and ff_vert_16x16_lsx().

◆ LSX_ST_8X16

#define LSX_ST_8X16 ( _dst0,
_dst1,
_dst2,
_dst3,
_dst4,
_dst5,
_dst6,
_dst7,
_dst,
_stride )
Value:
{ \
__lsx_vst(_dst0, _dst, 0); \
__lsx_vst(_dst0, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst1, _dst, 0); \
__lsx_vst(_dst1, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst2, _dst, 0); \
__lsx_vst(_dst2, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst3, _dst, 0); \
__lsx_vst(_dst3, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst4, _dst, 0); \
__lsx_vst(_dst4, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst5, _dst, 0); \
__lsx_vst(_dst5, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst6, _dst, 0); \
__lsx_vst(_dst6, _dst, 16); \
_dst += _stride; \
__lsx_vst(_dst7, _dst, 0); \
__lsx_vst(_dst7, _dst, 16); \
_dst += _stride; \
}

Definition at line 41 of file vp9_intra_lsx.c.

Referenced by ff_dc_32x32_lsx(), and ff_hor_32x32_lsx().

◆ INTRA_DC_TL_4X4

#define INTRA_DC_TL_4X4 ( dir)
Value:
void ff_dc_##dir##_4x4_lsx(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *left, \
const uint8_t *top) \
{ \
__m128i tmp0, dst0; \
\
tmp0 = __lsx_vldrepl_w(dir, 0); \
dst0 = __lsx_vhaddw_hu_bu(tmp0, tmp0); \
dst0 = __lsx_vhaddw_wu_hu(dst0, dst0); \
dst0 = __lsx_vsrari_w(dst0, 2); \
dst0 = __lsx_vshuf4i_b(dst0, 0); \
__lsx_vstelm_w(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_w(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_w(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_w(dst0, dst, 0, 0); \
}
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
static int BS_FUNC left(const BSCTX *bc)
Return the number of the bits left in a buffer.

Definition at line 203 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_8X8

#define INTRA_DC_TL_8X8 ( dir)
Value:
void ff_dc_##dir##_8x8_lsx(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *left, \
const uint8_t *top) \
{ \
__m128i tmp0, dst0; \
\
tmp0 = __lsx_vldrepl_d(dir, 0); \
dst0 = __lsx_vhaddw_hu_bu(tmp0, tmp0); \
dst0 = __lsx_vhaddw_wu_hu(dst0, dst0); \
dst0 = __lsx_vhaddw_du_wu(dst0, dst0); \
dst0 = __lsx_vsrari_w(dst0, 3); \
dst0 = __lsx_vreplvei_b(dst0, 0); \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
dst += dst_stride; \
__lsx_vstelm_d(dst0, dst, 0, 0); \
}

Definition at line 257 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_16X16

#define INTRA_DC_TL_16X16 ( dir)
Value:
void ff_dc_##dir##_16x16_lsx(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *left, \
const uint8_t *top) \
{ \
__m128i tmp0, dst0; \
ptrdiff_t stride2 = dst_stride << 1; \
ptrdiff_t stride3 = stride2 + dst_stride; \
ptrdiff_t stride4 = stride2 << 1; \
\
tmp0 = __lsx_vld(dir, 0); \
dst0 = __lsx_vhaddw_hu_bu(tmp0, tmp0); \
dst0 = __lsx_vhaddw_wu_hu(dst0, dst0); \
dst0 = __lsx_vhaddw_du_wu(dst0, dst0); \
dst0 = __lsx_vhaddw_qu_du(dst0, dst0); \
dst0 = __lsx_vsrari_w(dst0, 4); \
dst0 = __lsx_vreplvei_b(dst0, 0); \
LSX_ST_8(dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst, \
dst_stride, stride2, stride3, stride4); \
dst += stride4; \
LSX_ST_8(dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst, \
dst_stride, stride2, stride3, stride4); \
}

Definition at line 314 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_32X32

#define INTRA_DC_TL_32X32 ( dir)
Value:
void ff_dc_##dir##_32x32_lsx(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *left, \
const uint8_t *top) \
{ \
__m128i tmp0, tmp1, dst0; \
\
DUP2_ARG2(__lsx_vld, dir, 0, dir, 16, tmp0, tmp1); \
DUP2_ARG2(__lsx_vhaddw_hu_bu, tmp0, tmp0, tmp1, tmp1, tmp0, tmp1); \
dst0 = __lsx_vadd_h(tmp0, tmp1); \
dst0 = __lsx_vhaddw_wu_hu(dst0, dst0); \
dst0 = __lsx_vhaddw_du_wu(dst0, dst0); \
dst0 = __lsx_vhaddw_qu_du(dst0, dst0); \
dst0 = __lsx_vsrari_w(dst0, 5); \
dst0 = __lsx_vreplvei_b(dst0, 0); \
LSX_ST_8X16(dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst0, \
dst, dst_stride); \
LSX_ST_8X16(dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst0, \
dst, dst_stride); \
LSX_ST_8X16(dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst0, \
dst, dst_stride); \
LSX_ST_8X16(dst0, dst0, dst0, dst0, dst0, dst0, dst0, dst0, \
dst, dst_stride); \
}

Definition at line 367 of file vp9_intra_lsx.c.

◆ INTRA_PREDICT_VALDC_16X16_LSX

#define INTRA_PREDICT_VALDC_16X16_LSX ( val)
Value:
void ff_dc_##val##_16x16_lsx(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *left, const uint8_t *top) \
{ \
__m128i out = __lsx_vldi(val); \
ptrdiff_t stride2 = dst_stride << 1; \
ptrdiff_t stride3 = stride2 + dst_stride; \
ptrdiff_t stride4 = stride2 << 1; \
\
LSX_ST_8(out, out, out, out, out, out, out, out, dst, \
dst_stride, stride2, stride3, stride4); \
dst += stride4; \
LSX_ST_8(out, out, out, out, out, out, out, out, dst, \
dst_stride, stride2, stride3, stride4); \
}
static double val(void *priv, double ch)
Definition aeval.c:77
static FILE * out

Definition at line 395 of file vp9_intra_lsx.c.

◆ INTRA_PREDICT_VALDC_32X32_LSX

#define INTRA_PREDICT_VALDC_32X32_LSX ( val)
Value:
void ff_dc_##val##_32x32_lsx(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *left, const uint8_t *top) \
{ \
__m128i out = __lsx_vldi(val); \
\
LSX_ST_8X16(out, out, out, out, out, out, out, out, dst, dst_stride);\
LSX_ST_8X16(out, out, out, out, out, out, out, out, dst, dst_stride);\
LSX_ST_8X16(out, out, out, out, out, out, out, out, dst, dst_stride);\
LSX_ST_8X16(out, out, out, out, out, out, out, out, dst, dst_stride);\
}

Definition at line 415 of file vp9_intra_lsx.c.

Function Documentation

◆ ff_vert_16x16_lsx()

void ff_vert_16x16_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * left,
const uint8_t * src )

Definition at line 70 of file vp9_intra_lsx.c.

◆ ff_vert_32x32_lsx()

void ff_vert_32x32_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * left,
const uint8_t * src )

Definition at line 85 of file vp9_intra_lsx.c.

◆ ff_hor_16x16_lsx()

void ff_hor_16x16_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src,
const uint8_t * top )

Definition at line 99 of file vp9_intra_lsx.c.

◆ ff_hor_32x32_lsx()

void ff_hor_32x32_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src,
const uint8_t * top )

Definition at line 131 of file vp9_intra_lsx.c.

◆ ff_dc_4x4_lsx()

void ff_dc_4x4_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top )

Definition at line 181 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_4X4() [1/2]

INTRA_DC_TL_4X4 ( top )

◆ INTRA_DC_TL_4X4() [2/2]

INTRA_DC_TL_4X4 ( left )

◆ ff_dc_8x8_lsx()

void ff_dc_8x8_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top )

Definition at line 226 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_8X8() [1/2]

INTRA_DC_TL_8X8 ( top )

◆ INTRA_DC_TL_8X8() [2/2]

INTRA_DC_TL_8X8 ( left )

◆ ff_dc_16x16_lsx()

void ff_dc_16x16_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top )

Definition at line 290 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_16X16() [1/2]

INTRA_DC_TL_16X16 ( top )

◆ INTRA_DC_TL_16X16() [2/2]

INTRA_DC_TL_16X16 ( left )

◆ ff_dc_32x32_lsx()

void ff_dc_32x32_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top )

Definition at line 341 of file vp9_intra_lsx.c.

◆ INTRA_DC_TL_32X32() [1/2]

INTRA_DC_TL_32X32 ( top )

◆ INTRA_DC_TL_32X32() [2/2]

INTRA_DC_TL_32X32 ( left )

◆ INTRA_PREDICT_VALDC_16X16_LSX() [1/3]

INTRA_PREDICT_VALDC_16X16_LSX ( 127 )

◆ INTRA_PREDICT_VALDC_16X16_LSX() [2/3]

INTRA_PREDICT_VALDC_16X16_LSX ( 128 )

◆ INTRA_PREDICT_VALDC_16X16_LSX() [3/3]

INTRA_PREDICT_VALDC_16X16_LSX ( 129 )

◆ INTRA_PREDICT_VALDC_32X32_LSX() [1/3]

INTRA_PREDICT_VALDC_32X32_LSX ( 127 )

◆ INTRA_PREDICT_VALDC_32X32_LSX() [2/3]

INTRA_PREDICT_VALDC_32X32_LSX ( 128 )

◆ INTRA_PREDICT_VALDC_32X32_LSX() [3/3]

INTRA_PREDICT_VALDC_32X32_LSX ( 129 )

◆ ff_tm_4x4_lsx()

void ff_tm_4x4_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top_ptr )

Definition at line 431 of file vp9_intra_lsx.c.

◆ ff_tm_8x8_lsx()

void ff_tm_8x8_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top_ptr )

Definition at line 461 of file vp9_intra_lsx.c.

◆ ff_tm_16x16_lsx()

void ff_tm_16x16_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top_ptr )

Definition at line 510 of file vp9_intra_lsx.c.

◆ ff_tm_32x32_lsx()

void ff_tm_32x32_lsx ( uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * src_left,
const uint8_t * src_top_ptr )

Definition at line 595 of file vp9_intra_lsx.c.