FFmpeg
Macros | Functions
vp8_lpf_msa.c File Reference
#include "libavcodec/vp8dsp.h"
#include "libavutil/mips/generic_macros_msa.h"
#include "vp8dsp_mips.h"

Go to the source code of this file.

Macros

#define VP8_SIMPLE_MASK(p1, p0, q0, q1, b_limit, mask)
 
#define VP8_LPF_FILTER4_4W(p1_in_out, p0_in_out, q0_in_out, q1_in_out, mask_in, hev_in)
 
#define VP8_SIMPLE_FILT(p1_in, p0_in, q0_in, q1_in, mask)
 
#define VP8_MBFILTER(p2, p1, p0, q0, q1, q2, mask, hev)
 
#define LPF_MASK_HEV(p3_in, p2_in, p1_in, p0_in, q0_in, q1_in, q2_in, q3_in, limit_in, b_limit_in, thresh_in, hev_out, mask_out, flat_out)
 
#define VP8_ST6x1_UB(in0, in0_idx, in1, in1_idx, pdst, stride)
 

Functions

void ff_vp8_v_loop_filter16_msa (uint8_t *src, ptrdiff_t pitch, int b_limit_in, int limit_in, int thresh_in)
 
void ff_vp8_v_loop_filter8uv_msa (uint8_t *src_u, uint8_t *src_v, ptrdiff_t pitch, int b_limit_in, int limit_in, int thresh_in)
 
void ff_vp8_h_loop_filter16_msa (uint8_t *src, ptrdiff_t pitch, int b_limit_in, int limit_in, int thresh_in)
 
void ff_vp8_h_loop_filter8uv_msa (uint8_t *src_u, uint8_t *src_v, ptrdiff_t pitch, int b_limit_in, int limit_in, int thresh_in)
 
void ff_vp8_v_loop_filter_simple_msa (uint8_t *src, ptrdiff_t pitch, int b_limit_ptr)
 
void ff_vp8_h_loop_filter_simple_msa (uint8_t *src, ptrdiff_t pitch, int b_limit_ptr)
 
void ff_vp8_v_loop_filter8uv_inner_msa (uint8_t *src_u, uint8_t *src_v, ptrdiff_t pitch, int b_limit_in, int limit_in, int thresh_in)
 
void ff_vp8_h_loop_filter8uv_inner_msa (uint8_t *src_u, uint8_t *src_v, ptrdiff_t pitch, int b_limit_in, int limit_in, int thresh_in)
 
void ff_vp8_v_loop_filter16_inner_msa (uint8_t *src, ptrdiff_t pitch, int32_t e, int32_t i, int32_t h)
 
void ff_vp8_h_loop_filter16_inner_msa (uint8_t *src, ptrdiff_t pitch, int32_t e, int32_t i, int32_t h)
 

Macro Definition Documentation

◆ VP8_SIMPLE_MASK

#define VP8_SIMPLE_MASK (   p1,
  p0,
  q0,
  q1,
  b_limit,
  mask 
)
Value:
{ \
v16u8 p1_a_sub_q1, p0_a_sub_q0; \
\
p0_a_sub_q0 = __msa_asub_u_b(p0, q0); \
p1_a_sub_q1 = __msa_asub_u_b(p1, q1); \
p1_a_sub_q1 = (v16u8) __msa_srli_b((v16i8) p1_a_sub_q1, 1); \
p0_a_sub_q0 = __msa_adds_u_b(p0_a_sub_q0, p0_a_sub_q0); \
mask = __msa_adds_u_b(p0_a_sub_q0, p1_a_sub_q1); \
mask = ((v16u8) mask <= b_limit); \
}

Definition at line 25 of file vp8_lpf_msa.c.

◆ VP8_LPF_FILTER4_4W

#define VP8_LPF_FILTER4_4W (   p1_in_out,
  p0_in_out,
  q0_in_out,
  q1_in_out,
  mask_in,
  hev_in 
)

Definition at line 37 of file vp8_lpf_msa.c.

◆ VP8_SIMPLE_FILT

#define VP8_SIMPLE_FILT (   p1_in,
  p0_in,
  q0_in,
  q1_in,
  mask 
)

Definition at line 95 of file vp8_lpf_msa.c.

◆ VP8_MBFILTER

#define VP8_MBFILTER (   p2,
  p1,
  p0,
  q0,
  q1,
  q2,
  mask,
  hev 
)

Definition at line 142 of file vp8_lpf_msa.c.

◆ LPF_MASK_HEV

#define LPF_MASK_HEV (   p3_in,
  p2_in,
  p1_in,
  p0_in,
  q0_in,
  q1_in,
  q2_in,
  q3_in,
  limit_in,
  b_limit_in,
  thresh_in,
  hev_out,
  mask_out,
  flat_out 
)
Value:
{ \
v16u8 p3_asub_p2_m, p2_asub_p1_m, p1_asub_p0_m, q1_asub_q0_m; \
v16u8 p1_asub_q1_m, p0_asub_q0_m, q3_asub_q2_m, q2_asub_q1_m; \
\
/* absolute subtraction of pixel values */ \
p3_asub_p2_m = __msa_asub_u_b((p3_in), (p2_in)); \
p2_asub_p1_m = __msa_asub_u_b((p2_in), (p1_in)); \
p1_asub_p0_m = __msa_asub_u_b((p1_in), (p0_in)); \
q1_asub_q0_m = __msa_asub_u_b((q1_in), (q0_in)); \
q2_asub_q1_m = __msa_asub_u_b((q2_in), (q1_in)); \
q3_asub_q2_m = __msa_asub_u_b((q3_in), (q2_in)); \
p0_asub_q0_m = __msa_asub_u_b((p0_in), (q0_in)); \
p1_asub_q1_m = __msa_asub_u_b((p1_in), (q1_in)); \
/* calculation of hev */ \
flat_out = __msa_max_u_b(p1_asub_p0_m, q1_asub_q0_m); \
hev_out = (thresh_in) < (v16u8) flat_out; \
/* calculation of mask */ \
p0_asub_q0_m = __msa_adds_u_b(p0_asub_q0_m, p0_asub_q0_m); \
p1_asub_q1_m >>= 1; \
p0_asub_q0_m = __msa_adds_u_b(p0_asub_q0_m, p1_asub_q1_m); \
mask_out = (b_limit_in) < p0_asub_q0_m; \
mask_out = __msa_max_u_b(flat_out, mask_out); \
p3_asub_p2_m = __msa_max_u_b(p3_asub_p2_m, p2_asub_p1_m); \
mask_out = __msa_max_u_b(p3_asub_p2_m, mask_out); \
q2_asub_q1_m = __msa_max_u_b(q2_asub_q1_m, q3_asub_q2_m); \
mask_out = __msa_max_u_b(q2_asub_q1_m, mask_out); \
mask_out = (limit_in) < (v16u8) mask_out; \
mask_out = __msa_xori_b(mask_out, 0xff); \
}

Definition at line 252 of file vp8_lpf_msa.c.

◆ VP8_ST6x1_UB

#define VP8_ST6x1_UB (   in0,
  in0_idx,
  in1,
  in1_idx,
  pdst,
  stride 
)
Value:
{ \
uint16_t tmp0_h; \
uint32_t tmp0_w; \
\
tmp0_w = __msa_copy_u_w((v4i32) in0, in0_idx); \
tmp0_h = __msa_copy_u_h((v8i16) in1, in1_idx); \
SW(tmp0_w, pdst); \
SH(tmp0_h, pdst + stride); \
}

Definition at line 286 of file vp8_lpf_msa.c.

Function Documentation

◆ ff_vp8_v_loop_filter16_msa()

void ff_vp8_v_loop_filter16_msa ( uint8_t *  src,
ptrdiff_t  pitch,
int  b_limit_in,
int  limit_in,
int  thresh_in 
)

Definition at line 297 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_v_loop_filter8uv_msa()

void ff_vp8_v_loop_filter8uv_msa ( uint8_t *  src_u,
uint8_t *  src_v,
ptrdiff_t  pitch,
int  b_limit_in,
int  limit_in,
int  thresh_in 
)

Definition at line 320 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_h_loop_filter16_msa()

void ff_vp8_h_loop_filter16_msa ( uint8_t *  src,
ptrdiff_t  pitch,
int  b_limit_in,
int  limit_in,
int  thresh_in 
)

Definition at line 374 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_h_loop_filter8uv_msa()

void ff_vp8_h_loop_filter8uv_msa ( uint8_t *  src_u,
uint8_t *  src_v,
ptrdiff_t  pitch,
int  b_limit_in,
int  limit_in,
int  thresh_in 
)

Definition at line 439 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_v_loop_filter_simple_msa()

void ff_vp8_v_loop_filter_simple_msa ( uint8_t *  src,
ptrdiff_t  pitch,
int  b_limit_ptr 
)

Definition at line 505 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_h_loop_filter_simple_msa()

void ff_vp8_h_loop_filter_simple_msa ( uint8_t *  src,
ptrdiff_t  pitch,
int  b_limit_ptr 
)

Definition at line 519 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_v_loop_filter8uv_inner_msa()

void ff_vp8_v_loop_filter8uv_inner_msa ( uint8_t *  src_u,
uint8_t *  src_v,
ptrdiff_t  pitch,
int  b_limit_in,
int  limit_in,
int  thresh_in 
)

Definition at line 547 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_h_loop_filter8uv_inner_msa()

void ff_vp8_h_loop_filter8uv_inner_msa ( uint8_t *  src_u,
uint8_t *  src_v,
ptrdiff_t  pitch,
int  b_limit_in,
int  limit_in,
int  thresh_in 
)

Definition at line 589 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_v_loop_filter16_inner_msa()

void ff_vp8_v_loop_filter16_inner_msa ( uint8_t *  src,
ptrdiff_t  pitch,
int32_t  e,
int32_t  i,
int32_t  h 
)

Definition at line 623 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

◆ ff_vp8_h_loop_filter16_inner_msa()

void ff_vp8_h_loop_filter16_inner_msa ( uint8_t *  src,
ptrdiff_t  pitch,
int32_t  e,
int32_t  i,
int32_t  h 
)

Definition at line 643 of file vp8_lpf_msa.c.

Referenced by ff_vp8dsp_init_mips().

q1
static const uint8_t q1[256]
Definition: twofish.c:100
mask
int mask
Definition: mediacodecdec_common.c:154
q0
static const uint8_t q0[256]
Definition: twofish.c:81
stride
#define stride
Definition: h264pred_template.c:537