FFmpeg
vp9dsp_loongarch.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 Loongson Technology Corporation Limited
3  * Contributed by Hao Chen <chenhao@loongson.cn>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #ifndef AVCODEC_LOONGARCH_VP9DSP_LOONGARCH_H
23 #define AVCODEC_LOONGARCH_VP9DSP_LOONGARCH_H
24 
25 #define VP9_8TAP_LOONGARCH_LSX_FUNC(SIZE, type, type_idx) \
26 void ff_put_8tap_##type##_##SIZE##h_lsx(uint8_t *dst, ptrdiff_t dststride, \
27  const uint8_t *src, \
28  ptrdiff_t srcstride, \
29  int h, int mx, int my); \
30  \
31 void ff_put_8tap_##type##_##SIZE##v_lsx(uint8_t *dst, ptrdiff_t dststride, \
32  const uint8_t *src, \
33  ptrdiff_t srcstride, \
34  int h, int mx, int my); \
35  \
36 void ff_put_8tap_##type##_##SIZE##hv_lsx(uint8_t *dst, ptrdiff_t dststride, \
37  const uint8_t *src, \
38  ptrdiff_t srcstride, \
39  int h, int mx, int my); \
40  \
41 void ff_avg_8tap_##type##_##SIZE##h_lsx(uint8_t *dst, ptrdiff_t dststride, \
42  const uint8_t *src, \
43  ptrdiff_t srcstride, \
44  int h, int mx, int my); \
45  \
46 void ff_avg_8tap_##type##_##SIZE##v_lsx(uint8_t *dst, ptrdiff_t dststride, \
47  const uint8_t *src, \
48  ptrdiff_t srcstride, \
49  int h, int mx, int my); \
50  \
51 void ff_avg_8tap_##type##_##SIZE##hv_lsx(uint8_t *dst, ptrdiff_t dststride, \
52  const uint8_t *src, \
53  ptrdiff_t srcstride, \
54  int h, int mx, int my);
55 
56 #define VP9_COPY_LOONGARCH_LSX_FUNC(SIZE) \
57 void ff_copy##SIZE##_lsx(uint8_t *dst, ptrdiff_t dststride, \
58  const uint8_t *src, ptrdiff_t srcstride, \
59  int h, int mx, int my); \
60  \
61 void ff_avg##SIZE##_lsx(uint8_t *dst, ptrdiff_t dststride, \
62  const uint8_t *src, ptrdiff_t srcstride, \
63  int h, int mx, int my);
64 
70 
76 
82 
87 
88 #undef VP9_8TAP_LOONGARCH_LSX_FUNC
89 #undef VP9_COPY_LOONGARCH_LSX_FUNC
90 
91 void ff_vert_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
92  const uint8_t *top);
93 void ff_vert_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
94  const uint8_t *top);
95 void ff_hor_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
96  const uint8_t *top);
97 void ff_hor_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
98  const uint8_t *top);
99 void ff_dc_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
100  const uint8_t *top);
101 void ff_dc_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
102  const uint8_t *top);
103 void ff_dc_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
104  const uint8_t *top);
105 void ff_dc_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
106  const uint8_t *top);
107 void ff_dc_left_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
108  const uint8_t *top);
109 void ff_dc_left_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
110  const uint8_t *top);
111 void ff_dc_left_16x16_lsx(uint8_t *dst, ptrdiff_t stride,
112  const uint8_t *left, const uint8_t *top);
113 void ff_dc_left_32x32_lsx(uint8_t *dst, ptrdiff_t stride,
114  const uint8_t *left, const uint8_t *top);
115 void ff_dc_top_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
116  const uint8_t *top);
117 void ff_dc_top_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
118  const uint8_t *top);
119 void ff_dc_top_16x16_lsx(uint8_t *dst, ptrdiff_t stride,
120  const uint8_t *left, const uint8_t *top);
121 void ff_dc_top_32x32_lsx(uint8_t *dst, ptrdiff_t stride,
122  const uint8_t *left, const uint8_t *top);
123 void ff_dc_128_16x16_lsx(uint8_t *dst, ptrdiff_t stride,
124  const uint8_t *left, const uint8_t *top);
125 void ff_dc_128_32x32_lsx(uint8_t *dst, ptrdiff_t stride,
126  const uint8_t *left, const uint8_t *top);
127 void ff_dc_127_16x16_lsx(uint8_t *dst, ptrdiff_t stride,
128  const uint8_t *left, const uint8_t *top);
129 void ff_dc_127_32x32_lsx(uint8_t *dst, ptrdiff_t stride,
130  const uint8_t *left, const uint8_t *top);
131 void ff_dc_129_16x16_lsx(uint8_t *dst, ptrdiff_t stride,
132  const uint8_t *left, const uint8_t *top);
133 void ff_dc_129_32x32_lsx(uint8_t *dst, ptrdiff_t stride,
134  const uint8_t *left, const uint8_t *top);
135 void ff_tm_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
136  const uint8_t *top);
137 void ff_tm_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
138  const uint8_t *top);
139 void ff_tm_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
140  const uint8_t *top);
141 void ff_tm_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left,
142  const uint8_t *top);
143 void ff_loop_filter_h_16_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
144  int32_t i, int32_t h);
145 void ff_loop_filter_v_16_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
146  int32_t i, int32_t h);
147 void ff_loop_filter_h_4_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
148  int32_t i, int32_t h);
149 void ff_loop_filter_v_4_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
150  int32_t i, int32_t h);
151 void ff_loop_filter_h_44_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
152  int32_t i, int32_t h);
153 void ff_loop_filter_v_44_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
154  int32_t i, int32_t h);
155 void ff_loop_filter_h_8_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
156  int32_t i, int32_t h);
157 void ff_loop_filter_v_8_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
158  int32_t i, int32_t h);
159 void ff_loop_filter_h_88_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
160  int32_t i, int32_t h);
161 void ff_loop_filter_v_88_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
162  int32_t i, int32_t h);
163 void ff_loop_filter_h_84_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
164  int32_t i, int32_t h);
165 void ff_loop_filter_v_84_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
166  int32_t i, int32_t h);
167 void ff_loop_filter_h_48_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
168  int32_t i, int32_t h);
169 void ff_loop_filter_v_48_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
170  int32_t i, int32_t h);
171 void ff_loop_filter_h_16_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
172  int32_t i, int32_t h);
173 void ff_loop_filter_v_16_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e,
174  int32_t i, int32_t h);
175 void ff_idct_idct_8x8_add_lsx(uint8_t *dst, ptrdiff_t stride,
176  int16_t *block, int eob);
177 void ff_idct_idct_16x16_add_lsx(uint8_t *dst, ptrdiff_t stride,
178  int16_t *block, int eob);
179 void ff_idct_idct_32x32_add_lsx(uint8_t *dst, ptrdiff_t stride,
180  int16_t *block, int eob);
181 
182 #endif /* AVCODEC_LOONGARCH_VP9DSP_LOONGARCH_H */
ff_dc_129_16x16_lsx
void ff_dc_129_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_loop_filter_h_16_8_lsx
void ff_loop_filter_h_16_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:2612
ff_dc_left_4x4_lsx
void ff_dc_left_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_loop_filter_v_88_16_lsx
void ff_loop_filter_v_88_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:374
ff_idct_idct_8x8_add_lsx
void ff_idct_idct_8x8_add_lsx(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
Definition: vp9_idct_lsx.c:1370
ff_loop_filter_v_44_16_lsx
void ff_loop_filter_v_44_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:262
ff_tm_8x8_lsx
void ff_tm_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:461
ff_dc_129_32x32_lsx
void ff_dc_129_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_loop_filter_v_8_8_lsx
void ff_loop_filter_v_8_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:302
ff_dc_4x4_lsx
void ff_dc_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:181
ff_hor_32x32_lsx
void ff_hor_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:131
ff_dc_127_32x32_lsx
void ff_dc_127_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
FILTER_8TAP_SHARP
@ FILTER_8TAP_SHARP
Definition: vp9.h:67
ff_loop_filter_h_88_16_lsx
void ff_loop_filter_h_88_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1594
ff_dc_left_8x8_lsx
void ff_dc_left_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_idct_idct_32x32_add_lsx
void ff_idct_idct_32x32_add_lsx(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
Definition: vp9_idct_lsx.c:1399
ff_loop_filter_h_48_16_lsx
void ff_loop_filter_h_48_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1954
ff_loop_filter_h_16_16_lsx
void ff_loop_filter_h_16_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:3118
ff_hor_16x16_lsx
void ff_hor_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:99
ff_tm_4x4_lsx
void ff_tm_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:431
ff_dc_top_4x4_lsx
void ff_dc_top_4x4_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_loop_filter_v_16_8_lsx
void ff_loop_filter_v_16_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1096
VP9_8TAP_LOONGARCH_LSX_FUNC
#define VP9_8TAP_LOONGARCH_LSX_FUNC(SIZE, type, type_idx)
Definition: vp9dsp_loongarch.h:25
ff_dc_128_32x32_lsx
void ff_dc_128_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_idct_idct_16x16_add_lsx
void ff_idct_idct_16x16_add_lsx(uint8_t *dst, ptrdiff_t stride, int16_t *block, int eob)
Definition: vp9_idct_lsx.c:1384
ff_dc_16x16_lsx
void ff_dc_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:290
FILTER_8TAP_REGULAR
@ FILTER_8TAP_REGULAR
Definition: vp9.h:66
ff_loop_filter_v_16_16_lsx
void ff_loop_filter_v_16_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1080
ff_dc_top_32x32_lsx
void ff_dc_top_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
FILTER_8TAP_SMOOTH
@ FILTER_8TAP_SMOOTH
Definition: vp9.h:65
ff_dc_128_16x16_lsx
void ff_dc_128_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_loop_filter_h_8_8_lsx
void ff_loop_filter_h_8_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1476
stride
#define stride
Definition: h264pred_template.c:537
ff_dc_32x32_lsx
void ff_dc_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:341
ff_loop_filter_v_48_16_lsx
void ff_loop_filter_v_48_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:547
ff_dc_127_16x16_lsx
void ff_dc_127_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_loop_filter_h_4_8_lsx
void ff_loop_filter_h_4_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1350
left
Tag MUST be and< 10hcoeff half pel interpolation filter coefficients, hcoeff[0] are the 2 middle coefficients[1] are the next outer ones and so on, resulting in a filter like:...eff[2], hcoeff[1], hcoeff[0], hcoeff[0], hcoeff[1], hcoeff[2] ... the sign of the coefficients is not explicitly stored but alternates after each coeff and coeff[0] is positive, so ...,+,-,+,-,+,+,-,+,-,+,... hcoeff[0] is not explicitly stored but found by subtracting the sum of all stored coefficients with signs from 32 hcoeff[0]=32 - hcoeff[1] - hcoeff[2] - ... a good choice for hcoeff and htaps is htaps=6 hcoeff={40,-10, 2} an alternative which requires more computations at both encoder and decoder side and may or may not be better is htaps=8 hcoeff={42,-14, 6,-2}ref_frames minimum of the number of available reference frames and max_ref_frames for example the first frame after a key frame always has ref_frames=1spatial_decomposition_type wavelet type 0 is a 9/7 symmetric compact integer wavelet 1 is a 5/3 symmetric compact integer wavelet others are reserved stored as delta from last, last is reset to 0 if always_reset||keyframeqlog quality(logarithmic quantizer scale) stored as delta from last, last is reset to 0 if always_reset||keyframemv_scale stored as delta from last, last is reset to 0 if always_reset||keyframe FIXME check that everything works fine if this changes between framesqbias dequantization bias stored as delta from last, last is reset to 0 if always_reset||keyframeblock_max_depth maximum depth of the block tree stored as delta from last, last is reset to 0 if always_reset||keyframequant_table quantization tableHighlevel bitstream structure:==============================--------------------------------------------|Header|--------------------------------------------|------------------------------------|||Block0||||split?||||yes no||||......... intra?||||:Block01 :yes no||||:Block02 :....... ..........||||:Block03 ::y DC ::ref index:||||:Block04 ::cb DC ::motion x :||||......... :cr DC ::motion y :||||....... ..........|||------------------------------------||------------------------------------|||Block1|||...|--------------------------------------------|------------ ------------ ------------|||Y subbands||Cb subbands||Cr subbands||||--- ---||--- ---||--- ---|||||LL0||HL0||||LL0||HL0||||LL0||HL0|||||--- ---||--- ---||--- ---||||--- ---||--- ---||--- ---|||||LH0||HH0||||LH0||HH0||||LH0||HH0|||||--- ---||--- ---||--- ---||||--- ---||--- ---||--- ---|||||HL1||LH1||||HL1||LH1||||HL1||LH1|||||--- ---||--- ---||--- ---||||--- ---||--- ---||--- ---|||||HH1||HL2||||HH1||HL2||||HH1||HL2|||||...||...||...|||------------ ------------ ------------|--------------------------------------------Decoding process:=================------------|||Subbands|------------||||------------|Intra DC||||LL0 subband prediction ------------|\ Dequantization ------------------- \||Reference frames|\ IDWT|------- -------|Motion \|||Frame 0||Frame 1||Compensation . OBMC v -------|------- -------|--------------. \------> Frame n output Frame Frame<----------------------------------/|...|------------------- Range Coder:============Binary Range Coder:------------------- The implemented range coder is an adapted version based upon "Range encoding: an algorithm for removing redundancy from a digitised message." by G. N. N. Martin. The symbols encoded by the Snow range coder are bits(0|1). The associated probabilities are not fix but change depending on the symbol mix seen so far. bit seen|new state ---------+----------------------------------------------- 0|256 - state_transition_table[256 - old_state];1|state_transition_table[old_state];state_transition_table={ 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 190, 191, 192, 194, 194, 195, 196, 197, 198, 199, 200, 201, 202, 202, 204, 205, 206, 207, 208, 209, 209, 210, 211, 212, 213, 215, 215, 216, 217, 218, 219, 220, 220, 222, 223, 224, 225, 226, 227, 227, 229, 229, 230, 231, 232, 234, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 248, 0, 0, 0, 0, 0, 0, 0};FIXME Range Coding of integers:------------------------- FIXME Neighboring Blocks:===================left and top are set to the respective blocks unless they are outside of the image in which case they are set to the Null block top-left is set to the top left block unless it is outside of the image in which case it is set to the left block if this block has no larger parent block or it is at the left side of its parent block and the top right block is not outside of the image then the top right block is used for top-right else the top-left block is used Null block y, cb, cr are 128 level, ref, mx and my are 0 Motion Vector Prediction:=========================1. the motion vectors of all the neighboring blocks are scaled to compensate for the difference of reference frames scaled_mv=(mv *(256 *(current_reference+1)/(mv.reference+1))+128)> the median of the scaled left
Definition: snow.txt:386
ff_loop_filter_v_4_8_lsx
void ff_loop_filter_v_4_8_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:229
ff_loop_filter_v_84_16_lsx
void ff_loop_filter_v_84_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:465
ff_dc_top_8x8_lsx
void ff_dc_top_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_dc_left_32x32_lsx
void ff_dc_left_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
ff_dc_8x8_lsx
void ff_dc_8x8_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:226
ff_loop_filter_h_84_16_lsx
void ff_loop_filter_h_84_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1779
ff_loop_filter_h_44_16_lsx
void ff_loop_filter_h_44_16_lsx(uint8_t *dst, ptrdiff_t stride, int32_t e, int32_t i, int32_t h)
Definition: vp9_lpf_lsx.c:1396
ff_vert_16x16_lsx
void ff_vert_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:70
ff_dc_left_16x16_lsx
void ff_dc_left_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
smooth
static float smooth(DeshakeOpenCLContext *deshake_ctx, float *gauss_kernel, int length, float max_val, AVFifo *values)
Definition: vf_deshake_opencl.c:889
int32_t
int32_t
Definition: audioconvert.c:56
block
The exact code depends on how similar the blocks are and how related they are to the block
Definition: filter_design.txt:207
ff_vert_32x32_lsx
void ff_vert_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:85
ff_dc_top_16x16_lsx
void ff_dc_top_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
h
h
Definition: vp9dsp_template.c:2038
ff_tm_16x16_lsx
void ff_tm_16x16_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:510
VP9_COPY_LOONGARCH_LSX_FUNC
#define VP9_COPY_LOONGARCH_LSX_FUNC(SIZE)
Definition: vp9dsp_loongarch.h:56
ff_tm_32x32_lsx
void ff_tm_32x32_lsx(uint8_t *dst, ptrdiff_t stride, const uint8_t *left, const uint8_t *top)
Definition: vp9_intra_lsx.c:595