|
FFmpeg
|
#include "libavutil/attributes.h"#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) |
Functions | |
| void | ff_vc1_inv_trans_8x8_dc_mmi (uint8_t *dest, ptrdiff_t linesize, int16_t *block) |
| void | ff_vc1_inv_trans_8x4_dc_mmi (uint8_t *dest, ptrdiff_t linesize, int16_t *block) |
| void | ff_vc1_inv_trans_4x8_dc_mmi (uint8_t *dest, ptrdiff_t linesize, int16_t *block) |
| void | ff_vc1_inv_trans_4x4_dc_mmi (uint8_t *dest, ptrdiff_t linesize, int16_t *block) |
| void | ff_vc1_inv_trans_4x4_mmi (uint8_t *dest, ptrdiff_t linesize, int16_t *block) |
| void | ff_vc1_h_overlap_mmi (uint8_t *src, ptrdiff_t stride) |
| void | ff_vc1_h_s_overlap_mmi (int16_t *left, int16_t *right, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags) |
| void | ff_vc1_v_overlap_mmi (uint8_t *src, ptrdiff_t stride) |
| void | ff_vc1_v_s_overlap_mmi (int16_t *top, int16_t *bottom) |
| static av_always_inline int | vc1_filter_line (uint8_t *src, int stride, int pq) |
| VC-1 in-loop deblocking filter for one line. More... | |
| static void | vc1_loop_filter (uint8_t *src, int step, int stride, int len, int pq) |
| VC-1 in-loop deblocking filter. More... | |
| void | ff_vc1_v_loop_filter4_mmi (uint8_t *src, ptrdiff_t stride, int pq) |
| void | ff_vc1_h_loop_filter4_mmi (uint8_t *src, ptrdiff_t stride, int pq) |
| void | ff_vc1_v_loop_filter8_mmi (uint8_t *src, ptrdiff_t stride, int pq) |
| void | ff_vc1_h_loop_filter8_mmi (uint8_t *src, ptrdiff_t stride, int pq) |
| void | ff_vc1_v_loop_filter16_mmi (uint8_t *src, ptrdiff_t stride, int pq) |
| void | ff_vc1_h_loop_filter16_mmi (uint8_t *src, ptrdiff_t stride, int pq) |
| void | ff_put_vc1_mspel_mc00_mmi (uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd) |
| void | ff_put_vc1_mspel_mc00_16_mmi (uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd) |
| void | ff_avg_vc1_mspel_mc00_mmi (uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd) |
| void | ff_avg_vc1_mspel_mc00_16_mmi (uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd) |
| static void | vc1_put_ver_16b_shift2_mmi (int16_t *dst, const uint8_t *src, mips_reg stride, int rnd, int64_t shift) |
| Sacrificing $f12 makes it possible to pipeline loads from src. More... | |
| void | ff_put_no_rnd_vc1_chroma_mc8_mmi (uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) |
| void | ff_put_no_rnd_vc1_chroma_mc4_mmi (uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) |
| void | ff_avg_no_rnd_vc1_chroma_mc8_mmi (uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) |
| void | ff_avg_no_rnd_vc1_chroma_mc4_mmi (uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) |
| #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 1605 of file vc1dsp_mmi.c.
Definition at line 1606 of file vc1dsp_mmi.c.
| #define NORMALIZE_MMI | ( | SHIFT | ) |
Add rounder from $f14 to $f6 and pack result at destination.
Definition at line 1611 of file vc1dsp_mmi.c.
| #define TRANSFER_DO_PACK | ( | OP | ) |
Definition at line 1617 of file vc1dsp_mmi.c.
| #define TRANSFER_DONT_PACK | ( | OP | ) |
Definition at line 1622 of file vc1dsp_mmi.c.
| #define DO_UNPACK | ( | reg | ) | "punpcklbh "reg", "reg", $f0 \n\t" |
Definition at line 1629 of file vc1dsp_mmi.c.
| #define DONT_UNPACK | ( | reg | ) |
Definition at line 1631 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 1634 of file vc1dsp_mmi.c.
Definition at line 1640 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 1702 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 1760 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 1838 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 1884 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 1959 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 2007 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 2081 of file vc1dsp_mmi.c.
Macro to ease bicubic filter interpolation functions declarations.
Definition at line 2134 of file vc1dsp_mmi.c.
| #define CHROMA_MC_8_MMI |
Definition at line 2183 of file vc1dsp_mmi.c.
| #define CHROMA_MC_4_MMI |
Definition at line 2217 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 2062 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 2065 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 2067 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 418 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 869 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 1124 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().
| void ff_vc1_h_overlap_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride | ||
| ) |
Definition at line 1378 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_h_s_overlap_mmi | ( | int16_t * | left, |
| int16_t * | right, | ||
| ptrdiff_t | left_stride, | ||
| ptrdiff_t | right_stride, | ||
| int | flags | ||
| ) |
Definition at line 1401 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_v_overlap_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride | ||
| ) |
Definition at line 1431 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 1454 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 1488 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 1537 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().
| void ff_vc1_v_loop_filter4_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride, | ||
| int | pq | ||
| ) |
Definition at line 1554 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_h_loop_filter4_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride, | ||
| int | pq | ||
| ) |
Definition at line 1559 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_v_loop_filter8_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride, | ||
| int | pq | ||
| ) |
Definition at line 1564 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_h_loop_filter8_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride, | ||
| int | pq | ||
| ) |
Definition at line 1569 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_v_loop_filter16_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride, | ||
| int | pq | ||
| ) |
Definition at line 1574 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_vc1_h_loop_filter16_mmi | ( | uint8_t * | src, |
| ptrdiff_t | stride, | ||
| int | pq | ||
| ) |
Definition at line 1579 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
| void ff_put_vc1_mspel_mc00_mmi | ( | uint8_t * | dst, |
| const uint8_t * | src, | ||
| ptrdiff_t | stride, | ||
| int | rnd | ||
| ) |
Definition at line 1584 of file vc1dsp_mmi.c.
| void ff_put_vc1_mspel_mc00_16_mmi | ( | uint8_t * | dst, |
| const uint8_t * | src, | ||
| ptrdiff_t | stride, | ||
| int | rnd | ||
| ) |
Definition at line 1589 of file vc1dsp_mmi.c.
| void ff_avg_vc1_mspel_mc00_mmi | ( | uint8_t * | dst, |
| const uint8_t * | src, | ||
| ptrdiff_t | stride, | ||
| int | rnd | ||
| ) |
Definition at line 1594 of file vc1dsp_mmi.c.
| void ff_avg_vc1_mspel_mc00_16_mmi | ( | uint8_t * | dst, |
| const uint8_t * | src, | ||
| ptrdiff_t | stride, | ||
| int | rnd | ||
| ) |
Definition at line 1599 of file vc1dsp_mmi.c.
|
static |
Sacrificing $f12 makes it possible to pipeline loads from src.
Definition at line 1657 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 2237 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 2293 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 2347 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 2406 of file vc1dsp_mmi.c.
Referenced by ff_vc1dsp_init_mips().
1.8.17