FFmpeg
Macros | Functions | Variables
hevcpred_msa.c File Reference
#include "libavcodec/hevc/dec.h"
#include "libavutil/mips/generic_macros_msa.h"
#include "hevcpred_mips.h"

Go to the source code of this file.

Macros

#define HEVC_PRED_PLANAR_16x2(src0_r, src0_l, tmp0, tmp1, vec0, vec1, mul_val_h0, mul_val_h1, mul_val_h2, mul_val_h3, res0, res1, mul_val_b0, mul_val_b1, round)
 

Functions

static void hevc_intra_pred_vert_4x4_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_vert_8x8_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_vert_16x16_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_horiz_4x4_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_horiz_8x8_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_horiz_16x16_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_horiz_32x32_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride)
 
static void hevc_intra_pred_dc_4x4_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_dc_8x8_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_dc_16x16_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t flag)
 
static void hevc_intra_pred_dc_32x32_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride)
 
static void hevc_intra_pred_plane_4x4_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride)
 
static void hevc_intra_pred_plane_8x8_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride)
 
static void hevc_intra_pred_plane_16x16_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride)
 
static void process_intra_upper_16x16_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, uint8_t offset)
 
static void process_intra_lower_16x16_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, uint8_t offset)
 
static void hevc_intra_pred_plane_32x32_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride)
 
static void hevc_intra_pred_angular_upper_4width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_upper_8width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_upper_16width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_upper_32width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_lower_4width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_lower_8width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_lower_16width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void hevc_intra_pred_angular_lower_32width_msa (const uint8_t *src_top, const uint8_t *src_left, uint8_t *dst, int32_t stride, int32_t mode)
 
static void intra_predict_vert_32x32_msa (const uint8_t *src, uint8_t *dst, int32_t dst_stride)
 
void ff_hevc_intra_pred_planar_0_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride)
 
void ff_hevc_intra_pred_planar_1_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride)
 
void ff_hevc_intra_pred_planar_2_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride)
 
void ff_hevc_intra_pred_planar_3_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride)
 
void ff_hevc_intra_pred_dc_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride, int log2, int c_idx)
 
void ff_pred_intra_pred_angular_0_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride, int c_idx, int mode)
 
void ff_pred_intra_pred_angular_1_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride, int c_idx, int mode)
 
void ff_pred_intra_pred_angular_2_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride, int c_idx, int mode)
 
void ff_pred_intra_pred_angular_3_msa (uint8_t *dst, const uint8_t *src_top, const uint8_t *src_left, ptrdiff_t stride, int c_idx, int mode)
 
void ff_intra_pred_8_16x16_msa (HEVCLocalContext *lc, const HEVCPPS *pps, int x0, int y0, int c_idx)
 
void ff_intra_pred_8_32x32_msa (HEVCLocalContext *lc, int x0, int y0, int c_idx)
 

Variables

static const int8_t intra_pred_angle_up [17]
 
static const int8_t intra_pred_angle_low [16]
 

Macro Definition Documentation

◆ HEVC_PRED_PLANAR_16x2

#define HEVC_PRED_PLANAR_16x2 (   src0_r,
  src0_l,
  tmp0,
  tmp1,
  vec0,
  vec1,
  mul_val_h0,
  mul_val_h1,
  mul_val_h2,
  mul_val_h3,
  res0,
  res1,
  mul_val_b0,
  mul_val_b1,
  round 
)
Value:
{ \
v8i16 res0_m, res1_m, res2_m, res3_m; \
MUL4(mul_val_h0, vec0, mul_val_h2, vec0, mul_val_h0, vec1, \
mul_val_h2, vec1, res0_m, res1_m, res2_m, res3_m); \
\
res0_m += mul_val_h1 * tmp0; \
res1_m += mul_val_h3 * tmp0; \
res2_m += mul_val_h1 * tmp0; \
res3_m += mul_val_h3 * tmp0; \
\
res0_m += mul_val_b0 * src0_r; \
res1_m += mul_val_b0 * src0_l; \
res2_m += (mul_val_b0 - 1) * src0_r; \
res3_m += (mul_val_b0 - 1) * src0_l; \
\
res0_m += mul_val_b1 * tmp1; \
res1_m += mul_val_b1 * tmp1; \
res2_m += (mul_val_b1 + 1) * tmp1; \
res3_m += (mul_val_b1 + 1) * tmp1; \
SRARI_H4_SH(res0_m, res1_m, res2_m, res3_m, round); \
PCKEV_B2_SH(res1_m, res0_m, res3_m, res2_m, res0, res1); \
}

Definition at line 33 of file hevcpred_msa.c.

Function Documentation

◆ hevc_intra_pred_vert_4x4_msa()

static void hevc_intra_pred_vert_4x4_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 61 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_0_msa().

◆ hevc_intra_pred_vert_8x8_msa()

static void hevc_intra_pred_vert_8x8_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 94 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_1_msa().

◆ hevc_intra_pred_vert_16x16_msa()

static void hevc_intra_pred_vert_16x16_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 149 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_2_msa().

◆ hevc_intra_pred_horiz_4x4_msa()

static void hevc_intra_pred_horiz_4x4_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 190 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_0_msa().

◆ hevc_intra_pred_horiz_8x8_msa()

static void hevc_intra_pred_horiz_8x8_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 224 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_1_msa().

◆ hevc_intra_pred_horiz_16x16_msa()

static void hevc_intra_pred_horiz_16x16_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 264 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_2_msa().

◆ hevc_intra_pred_horiz_32x32_msa()

static void hevc_intra_pred_horiz_32x32_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride 
)
static

Definition at line 310 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_3_msa().

◆ hevc_intra_pred_dc_4x4_msa()

static void hevc_intra_pred_dc_4x4_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 340 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_dc_msa().

◆ hevc_intra_pred_dc_8x8_msa()

static void hevc_intra_pred_dc_8x8_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 401 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_dc_msa().

◆ hevc_intra_pred_dc_16x16_msa()

static void hevc_intra_pred_dc_16x16_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  flag 
)
static

Definition at line 460 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_dc_msa().

◆ hevc_intra_pred_dc_32x32_msa()

static void hevc_intra_pred_dc_32x32_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride 
)
static

Definition at line 516 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_dc_msa().

◆ hevc_intra_pred_plane_4x4_msa()

static void hevc_intra_pred_plane_4x4_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride 
)
static

Definition at line 548 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_planar_0_msa().

◆ hevc_intra_pred_plane_8x8_msa()

static void hevc_intra_pred_plane_8x8_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride 
)
static

Definition at line 595 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_planar_1_msa().

◆ hevc_intra_pred_plane_16x16_msa()

static void hevc_intra_pred_plane_16x16_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride 
)
static

Definition at line 663 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_planar_2_msa().

◆ process_intra_upper_16x16_msa()

static void process_intra_upper_16x16_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
uint8_t  offset 
)
static

Definition at line 743 of file hevcpred_msa.c.

Referenced by hevc_intra_pred_plane_32x32_msa().

◆ process_intra_lower_16x16_msa()

static void process_intra_lower_16x16_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
uint8_t  offset 
)
static

Definition at line 826 of file hevcpred_msa.c.

Referenced by hevc_intra_pred_plane_32x32_msa().

◆ hevc_intra_pred_plane_32x32_msa()

static void hevc_intra_pred_plane_32x32_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride 
)
static

Definition at line 908 of file hevcpred_msa.c.

Referenced by ff_hevc_intra_pred_planar_3_msa().

◆ hevc_intra_pred_angular_upper_4width_msa()

static void hevc_intra_pred_angular_upper_4width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 923 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_0_msa().

◆ hevc_intra_pred_angular_upper_8width_msa()

static void hevc_intra_pred_angular_upper_8width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1015 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_1_msa().

◆ hevc_intra_pred_angular_upper_16width_msa()

static void hevc_intra_pred_angular_upper_16width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1114 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_2_msa().

◆ hevc_intra_pred_angular_upper_32width_msa()

static void hevc_intra_pred_angular_upper_32width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1224 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_3_msa().

◆ hevc_intra_pred_angular_lower_4width_msa()

static void hevc_intra_pred_angular_lower_4width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1338 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_0_msa().

◆ hevc_intra_pred_angular_lower_8width_msa()

static void hevc_intra_pred_angular_lower_8width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1435 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_1_msa().

◆ hevc_intra_pred_angular_lower_16width_msa()

static void hevc_intra_pred_angular_lower_16width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1536 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_2_msa().

◆ hevc_intra_pred_angular_lower_32width_msa()

static void hevc_intra_pred_angular_lower_32width_msa ( const uint8_t *  src_top,
const uint8_t *  src_left,
uint8_t *  dst,
int32_t  stride,
int32_t  mode 
)
static

Definition at line 1652 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_3_msa().

◆ intra_predict_vert_32x32_msa()

static void intra_predict_vert_32x32_msa ( const uint8_t *  src,
uint8_t *  dst,
int32_t  dst_stride 
)
static

Definition at line 1764 of file hevcpred_msa.c.

Referenced by ff_pred_intra_pred_angular_3_msa().

◆ ff_hevc_intra_pred_planar_0_msa()

void ff_hevc_intra_pred_planar_0_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride 
)

Definition at line 1779 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_hevc_intra_pred_planar_1_msa()

void ff_hevc_intra_pred_planar_1_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride 
)

Definition at line 1787 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_hevc_intra_pred_planar_2_msa()

void ff_hevc_intra_pred_planar_2_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride 
)

Definition at line 1795 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_hevc_intra_pred_planar_3_msa()

void ff_hevc_intra_pred_planar_3_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride 
)

Definition at line 1803 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_hevc_intra_pred_dc_msa()

void ff_hevc_intra_pred_dc_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride,
int  log2,
int  c_idx 
)

Definition at line 1811 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_pred_intra_pred_angular_0_msa()

void ff_pred_intra_pred_angular_0_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride,
int  c_idx,
int  mode 
)

Definition at line 1834 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_pred_intra_pred_angular_1_msa()

void ff_pred_intra_pred_angular_1_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride,
int  c_idx,
int  mode 
)

Definition at line 1852 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_pred_intra_pred_angular_2_msa()

void ff_pred_intra_pred_angular_2_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride,
int  c_idx,
int  mode 
)

Definition at line 1870 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_pred_intra_pred_angular_3_msa()

void ff_pred_intra_pred_angular_3_msa ( uint8_t *  dst,
const uint8_t *  src_top,
const uint8_t *  src_left,
ptrdiff_t  stride,
int  c_idx,
int  mode 
)

Definition at line 1888 of file hevcpred_msa.c.

Referenced by ff_hevc_pred_init_mips().

◆ ff_intra_pred_8_16x16_msa()

void ff_intra_pred_8_16x16_msa ( HEVCLocalContext lc,
const HEVCPPS pps,
int  x0,
int  y0,
int  c_idx 
)

Definition at line 1906 of file hevcpred_msa.c.

◆ ff_intra_pred_8_32x32_msa()

void ff_intra_pred_8_32x32_msa ( HEVCLocalContext lc,
int  x0,
int  y0,
int  c_idx 
)

Definition at line 2419 of file hevcpred_msa.c.

Variable Documentation

◆ intra_pred_angle_up

const int8_t intra_pred_angle_up[17]
static
Initial value:
= {
-32, -26, -21, -17, -13, -9, -5, -2, 0, 2, 5, 9, 13, 17, 21, 26, 32
}

Definition at line 25 of file hevcpred_msa.c.

Referenced by hevc_intra_pred_angular_upper_16width_msa(), hevc_intra_pred_angular_upper_32width_msa(), hevc_intra_pred_angular_upper_4width_msa(), and hevc_intra_pred_angular_upper_8width_msa().

◆ intra_pred_angle_low

const int8_t intra_pred_angle_low[16]
static
Initial value:
= {
32, 26, 21, 17, 13, 9, 5, 2, 0, -2, -5, -9, -13, -17, -21, -26
}

Definition at line 29 of file hevcpred_msa.c.

Referenced by hevc_intra_pred_angular_lower_16width_msa(), hevc_intra_pred_angular_lower_32width_msa(), hevc_intra_pred_angular_lower_4width_msa(), and hevc_intra_pred_angular_lower_8width_msa().

SRARI_H4_SH
#define SRARI_H4_SH(...)
Definition: generic_macros_msa.h:2067
round
static av_always_inline av_const double round(double x)
Definition: libm.h:444
MUL4
#define MUL4(in0, in1, in2, in3, in4, in5, in6, in7, out0, out1, out2, out3)
Definition: generic_macros_msa.h:2106