|
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.
1.8.6