FFmpeg
|
#include "libavutil/avassert.h"
#include "libavcodec/vc1dsp.h"
#include "constants.h"
#include "vc1dsp_mips.h"
#include "hpeldsp_mips.h"
#include "libavutil/mips/mmiutils.h"
Go to the source code of this file.
Macros | |
#define | VC1_INV_TRANCS_8_STEP1_MMI(fp1,fp2,fp3,fp4,o1,o2,o3,o4,t1,t2,t3,t4,ff_p1, ff_p2, ff_p3, ff_p4) |
#define | VC1_INV_TRANCS_8_STEP2_MMI(fp1,fp2,fp3,fp4,fp5,fp6,fp7,fp8,o1,o2,o3,o4,ff_p1, ff_p2, ff_p3, ff_pw) |
#define | VC1_INV_TRANCS_4_STEP1_MMI(fp1,fp2,fp3,fp4,fp5,fp6,fp7,fp8,ff_p1, ff_p2, ff_p3, ff_pw) |
#define | VC1_INV_TRANCS_4_STEP2_MMI(fp1, fp2, fp3, fp4,fp5, fp6, fp7, fp8, zero) |
#define | OP_PUT(S, D) |
#define | OP_AVG(S, D) |
#define | NORMALIZE_MMI(SHIFT) |
Add rounder from $f14 to $f6 and pack result at destination. More... | |
#define | TRANSFER_DO_PACK(OP) |
#define | TRANSFER_DONT_PACK(OP) |
#define | DO_UNPACK(reg) "punpcklbh "reg", "reg", $f0 \n\t" |
#define | DONT_UNPACK(reg) |
#define | LOAD_ROUNDER_MMI(ROUND) |
Compute the rounder 32-r or 8-r and unpacks it to $f14. More... | |
#define | SHIFT2_LINE(OFF, R0, R1, R2, R3) |
#define | VC1_HOR_16B_SHIFT2(OP, OPNAME) |
Data is already unpacked, so some operations can directly be made from memory. More... | |
#define | VC1_SHIFT2(OP, OPNAME) |
Purely vertical or horizontal 1/2 shift interpolation. More... | |
#define | MSPEL_FILTER13_CORE(UNPACK, LOAD, M, A1, A2, A3, A4) |
Core of the 1/4 and 3/4 shift bicubic interpolation. More... | |
#define | MSPEL_FILTER13_VER_16B(NAME, A1, A2, A3, A4) |
Macro to build the vertical 16bits version of vc1_put_shift[13]. More... | |
#define | MSPEL_FILTER13_HOR_16B(NAME, A1, A2, A3, A4, OP, OPNAME) |
Macro to build the horizontal 16bits version of vc1_put_shift[13]. More... | |
#define | MSPEL_FILTER13_8B(NAME, A1, A2, A3, A4, OP, OPNAME) |
Macro to build the 8bits, any direction, version of vc1_put_shift[13]. More... | |
#define | VC1_MSPEL_MC(OP) |
Interpolate fractional pel values by applying proper vertical then horizontal filter. More... | |
#define | DECLARE_FUNCTION(a, b) |
Macro to ease bicubic filter interpolation functions declarations. More... | |
#define | CHROMA_MC_8_MMI |
#define | CHROMA_MC_4_MMI |
Typedefs | |
typedef void(* | vc1_mspel_mc_filter_ver_16bits )(int16_t *dst, const uint8_t *src, mips_reg src_stride, int rnd, int64_t shift) |
1/4 shift bicubic interpolation More... | |
typedef void(* | vc1_mspel_mc_filter_hor_16bits )(uint8_t *dst, mips_reg dst_stride, const int16_t *src, int rnd) |
typedef void(* | vc1_mspel_mc_filter_8bits )(uint8_t *dst, const uint8_t *src, mips_reg stride, int rnd, mips_reg offset) |
#define VC1_INV_TRANCS_8_STEP1_MMI | ( | fp1, | |
fp2, | |||
fp3, | |||
fp4, | |||
o1, | |||
o2, | |||
o3, | |||
o4, | |||
t1, | |||
t2, | |||
t3, | |||
t4, | |||
ff_p1, | |||
ff_p2, | |||
ff_p3, | |||
ff_p4 | |||
) |
Definition at line 31 of file vc1dsp_mmi.c.
#define VC1_INV_TRANCS_8_STEP2_MMI | ( | fp1, | |
fp2, | |||
fp3, | |||
fp4, | |||
fp5, | |||
fp6, | |||
fp7, | |||
fp8, | |||
o1, | |||
o2, | |||
o3, | |||
o4, | |||
ff_p1, | |||
ff_p2, | |||
ff_p3, | |||
ff_pw | |||
) |
Definition at line 68 of file vc1dsp_mmi.c.
#define VC1_INV_TRANCS_4_STEP1_MMI | ( | fp1, | |
fp2, | |||
fp3, | |||
fp4, | |||
fp5, | |||
fp6, | |||
fp7, | |||
fp8, | |||
ff_p1, | |||
ff_p2, | |||
ff_p3, | |||
ff_pw | |||
) |
Definition at line 102 of file vc1dsp_mmi.c.
Referenced by ff_vc1_inv_trans_4x4_mmi().
#define VC1_INV_TRANCS_4_STEP2_MMI | ( | fp1, | |
fp2, | |||
fp3, | |||
fp4, | |||
fp5, | |||
fp6, | |||
fp7, | |||
fp8, | |||
zero | |||
) |
Definition at line 125 of file vc1dsp_mmi.c.
Referenced by ff_vc1_inv_trans_4x4_mmi().
Definition at line 1223 of file vc1dsp_mmi.c.
Definition at line 1224 of file vc1dsp_mmi.c.
#define NORMALIZE_MMI | ( | SHIFT | ) |
Add rounder from $f14 to $f6 and pack result at destination.
Definition at line 1229 of file vc1dsp_mmi.c.
#define TRANSFER_DO_PACK | ( | OP | ) |
Definition at line 1235 of file vc1dsp_mmi.c.
#define TRANSFER_DONT_PACK | ( | OP | ) |
Definition at line 1240 of file vc1dsp_mmi.c.
#define DO_UNPACK | ( | reg | ) | "punpcklbh "reg", "reg", $f0 \n\t" |
Definition at line 1247 of file vc1dsp_mmi.c.
#define DONT_UNPACK | ( | reg | ) |
Definition at line 1249 of file vc1dsp_mmi.c.
#define LOAD_ROUNDER_MMI | ( | ROUND | ) |
Compute the rounder 32-r or 8-r and unpacks it to $f14.
Definition at line 1252 of file vc1dsp_mmi.c.
Referenced by vc1_put_ver_16b_shift2_mmi().
Definition at line 1258 of file vc1dsp_mmi.c.
Referenced by vc1_put_ver_16b_shift2_mmi().
#define VC1_HOR_16B_SHIFT2 | ( | OP, | |
OPNAME | |||
) |
Data is already unpacked, so some operations can directly be made from memory.
Definition at line 1319 of file vc1dsp_mmi.c.
#define VC1_SHIFT2 | ( | OP, | |
OPNAME | |||
) |
Purely vertical or horizontal 1/2 shift interpolation.
Sacrify $f12 for *9 factor.
Definition at line 1379 of file vc1dsp_mmi.c.
Core of the 1/4 and 3/4 shift bicubic interpolation.
UNPACK | Macro unpacking arguments from 8 to 16bits (can be empty). |
LOAD | "MMI_ULWC1" or "MMI_ULDC1", if data read is already unpacked. |
M | "1" for MMI_ULWC1, "2" for MMI_ULDC1. |
A1 | Stride address of 1st tap (beware of unpacked/packed). |
A2 | Stride address of 2nd tap |
A3 | Stride address of 3rd tap |
A4 | Stride address of 4th tap |
Definition at line 1458 of file vc1dsp_mmi.c.
Macro to build the vertical 16bits version of vc1_put_shift[13].
Here, offset=src_stride. Parameters passed A1 to A4 must use %3 (src_stride), %4 (2*src_stride) and %5 (3*src_stride).
NAME | Either 1 or 3 |
Definition at line 1504 of file vc1dsp_mmi.c.
Macro to build the horizontal 16bits version of vc1_put_shift[13].
Here, offset=16bits, so parameters passed A1 to A4 should be simple.
NAME | Either 1 or 3 |
Definition at line 1579 of file vc1dsp_mmi.c.
Macro to build the 8bits, any direction, version of vc1_put_shift[13].
Here, offset=src_stride. Parameters passed A1 to A4 must use %3 (offset), %4 (2*offset) and %5 (3*offset).
NAME | Either 1 or 3 |
Definition at line 1629 of file vc1dsp_mmi.c.
#define VC1_MSPEL_MC | ( | OP | ) |
Interpolate fractional pel values by applying proper vertical then horizontal filter.
dst | Destination buffer for interpolated pels. |
src | Source buffer. |
stride | Stride for both src and dst buffers. |
hmode | Horizontal filter (expressed in quarter pixels shift). |
hmode | Vertical filter. |
rnd | Rounding bias. |
Definition at line 1705 of file vc1dsp_mmi.c.
Macro to ease bicubic filter interpolation functions declarations.
Definition at line 1758 of file vc1dsp_mmi.c.
#define CHROMA_MC_8_MMI |
Definition at line 1807 of file vc1dsp_mmi.c.
Referenced by ff_avg_no_rnd_vc1_chroma_mc8_mmi(), and ff_put_no_rnd_vc1_chroma_mc8_mmi().
#define CHROMA_MC_4_MMI |
Definition at line 1841 of file vc1dsp_mmi.c.
Referenced by ff_avg_no_rnd_vc1_chroma_mc4_mmi(), and ff_put_no_rnd_vc1_chroma_mc4_mmi().
typedef void(* vc1_mspel_mc_filter_ver_16bits)(int16_t *dst, const uint8_t *src, mips_reg src_stride, int rnd, int64_t shift) |
1/4 shift bicubic interpolation
3/4 shift bicubic interpolation
Definition at line 1686 of file vc1dsp_mmi.c.
typedef void(* vc1_mspel_mc_filter_hor_16bits)(uint8_t *dst, mips_reg dst_stride, const int16_t *src, int rnd) |
Definition at line 1689 of file vc1dsp_mmi.c.
typedef void(* vc1_mspel_mc_filter_8bits)(uint8_t *dst, const uint8_t *src, mips_reg stride, int rnd, mips_reg offset) |
Definition at line 1691 of file vc1dsp_mmi.c.
Definition at line 144 of file vc1dsp_mmi.c.
Definition at line 371 of file vc1dsp_mmi.c.
Definition at line 602 of file vc1dsp_mmi.c.
Definition at line 841 of file vc1dsp_mmi.c.
Definition at line 889 of file vc1dsp_mmi.c.
Definition at line 999 of file vc1dsp_mmi.c.
void ff_vc1_h_s_overlap_mmi | ( | int16_t * | left, |
int16_t * | right | ||
) |
Definition at line 1022 of file vc1dsp_mmi.c.
Definition at line 1049 of file vc1dsp_mmi.c.
void ff_vc1_v_s_overlap_mmi | ( | int16_t * | top, |
int16_t * | bottom | ||
) |
Definition at line 1072 of file vc1dsp_mmi.c.
|
static |
VC-1 in-loop deblocking filter for one line.
src | source block type |
stride | block stride |
pq | block quantizer |
Definition at line 1106 of file vc1dsp_mmi.c.
Referenced by vc1_loop_filter().
VC-1 in-loop deblocking filter.
src | source block type |
step | distance between horizontally adjacent elements |
stride | distance between vertically adjacent elements |
len | edge length to filter (4 or 8 pixels) |
pq | block quantizer |
Definition at line 1155 of file vc1dsp_mmi.c.
Referenced by ff_vc1_h_loop_filter16_mmi(), ff_vc1_h_loop_filter4_mmi(), ff_vc1_h_loop_filter8_mmi(), ff_vc1_v_loop_filter16_mmi(), ff_vc1_v_loop_filter4_mmi(), and ff_vc1_v_loop_filter8_mmi().
Definition at line 1172 of file vc1dsp_mmi.c.
Definition at line 1177 of file vc1dsp_mmi.c.
Definition at line 1182 of file vc1dsp_mmi.c.
Definition at line 1187 of file vc1dsp_mmi.c.
Definition at line 1192 of file vc1dsp_mmi.c.
Definition at line 1197 of file vc1dsp_mmi.c.
Definition at line 1202 of file vc1dsp_mmi.c.
Definition at line 1207 of file vc1dsp_mmi.c.
Definition at line 1212 of file vc1dsp_mmi.c.
Definition at line 1217 of file vc1dsp_mmi.c.
|
static |
Sacrificing $f12 makes it possible to pipeline loads from src.
Definition at line 1275 of file vc1dsp_mmi.c.
void ff_put_no_rnd_vc1_chroma_mc8_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
int | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 1861 of file vc1dsp_mmi.c.
void ff_put_no_rnd_vc1_chroma_mc4_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
int | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 1916 of file vc1dsp_mmi.c.
void ff_avg_no_rnd_vc1_chroma_mc8_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
int | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 1969 of file vc1dsp_mmi.c.