FFmpeg
|
#include "libavutil/avassert.h"
#include "libavutil/mem_internal.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_TYPE1(o1, o2, r1, r2, r3, r4, c0) |
#define | VC1_INV_TRANCS_8_TYPE2(o1, o2, r1, r2, r3, r4, c0, c1) |
#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_TYPE1 | ( | o1, | |
o2, | |||
r1, | |||
r2, | |||
r3, | |||
r4, | |||
c0 | |||
) |
Definition at line 33 of file vc1dsp_mmi.c.
#define VC1_INV_TRANCS_8_TYPE2 | ( | o1, | |
o2, | |||
r1, | |||
r2, | |||
r3, | |||
r4, | |||
c0, | |||
c1 | |||
) |
Definition at line 77 of file vc1dsp_mmi.c.
Definition at line 1607 of file vc1dsp_mmi.c.
Definition at line 1608 of file vc1dsp_mmi.c.
#define NORMALIZE_MMI | ( | SHIFT | ) |
Add rounder from $f14 to $f6 and pack result at destination.
Definition at line 1613 of file vc1dsp_mmi.c.
#define TRANSFER_DO_PACK | ( | OP | ) |
Definition at line 1619 of file vc1dsp_mmi.c.
#define TRANSFER_DONT_PACK | ( | OP | ) |
Definition at line 1624 of file vc1dsp_mmi.c.
#define DO_UNPACK | ( | reg | ) | "punpcklbh "reg", "reg", $f0 \n\t" |
Definition at line 1631 of file vc1dsp_mmi.c.
#define DONT_UNPACK | ( | reg | ) |
Definition at line 1633 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 1636 of file vc1dsp_mmi.c.
Definition at line 1642 of file vc1dsp_mmi.c.
#define VC1_HOR_16B_SHIFT2 | ( | OP, | |
OPNAME | |||
) |
Data is already unpacked, so some operations can directly be made from memory.
Definition at line 1703 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 1763 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 1842 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 1888 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 1963 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 2013 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 2089 of file vc1dsp_mmi.c.
#define CHROMA_MC_8_MMI |
Definition at line 2191 of file vc1dsp_mmi.c.
#define CHROMA_MC_4_MMI |
Definition at line 2225 of file vc1dsp_mmi.c.
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 2070 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 2073 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 2075 of file vc1dsp_mmi.c.
void ff_vc1_inv_trans_8x8_dc_mmi | ( | uint8_t * | dest, |
ptrdiff_t | linesize, | ||
int16_t * | block | ||
) |
Definition at line 126 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_vc1_inv_trans_8x4_dc_mmi | ( | uint8_t * | dest, |
ptrdiff_t | linesize, | ||
int16_t * | block | ||
) |
Definition at line 419 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_vc1_inv_trans_4x8_dc_mmi | ( | uint8_t * | dest, |
ptrdiff_t | linesize, | ||
int16_t * | block | ||
) |
Definition at line 870 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_vc1_inv_trans_4x4_dc_mmi | ( | uint8_t * | dest, |
ptrdiff_t | linesize, | ||
int16_t * | block | ||
) |
Definition at line 1126 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_vc1_inv_trans_4x4_mmi | ( | uint8_t * | dest, |
ptrdiff_t | linesize, | ||
int16_t * | block | ||
) |
Definition at line 1174 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1380 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_vc1_h_s_overlap_mmi | ( | int16_t * | left, |
int16_t * | right, | ||
int | left_stride, | ||
int | right_stride, | ||
int | flags | ||
) |
Definition at line 1403 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1433 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_vc1_v_s_overlap_mmi | ( | int16_t * | top, |
int16_t * | bottom | ||
) |
Definition at line 1456 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
|
static |
VC-1 in-loop deblocking filter for one line.
src | source block type |
stride | block stride |
pq | block quantizer |
Definition at line 1490 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 1539 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 1556 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1561 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1566 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1571 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1576 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1581 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
Definition at line 1586 of file vc1dsp_mmi.c.
Definition at line 1591 of file vc1dsp_mmi.c.
Definition at line 1596 of file vc1dsp_mmi.c.
Definition at line 1601 of file vc1dsp_mmi.c.
|
static |
Sacrificing $f12 makes it possible to pipeline loads from src.
Definition at line 1659 of file vc1dsp_mmi.c.
void ff_put_no_rnd_vc1_chroma_mc8_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
ptrdiff_t | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 2245 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_put_no_rnd_vc1_chroma_mc4_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
ptrdiff_t | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 2300 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_avg_no_rnd_vc1_chroma_mc8_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
ptrdiff_t | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 2353 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
void ff_avg_no_rnd_vc1_chroma_mc4_mmi | ( | uint8_t * | dst, |
uint8_t * | src, | ||
ptrdiff_t | stride, | ||
int | h, | ||
int | x, | ||
int | y | ||
) |
Definition at line 2411 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().