FFmpeg
vc1dsp_mips.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016 Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVCODEC_MIPS_VC1DSP_MIPS_H
22 #define AVCODEC_MIPS_VC1DSP_MIPS_H
23 
24 #include "libavcodec/vc1dsp.h"
25 
27  ptrdiff_t stride, int rnd);
29  ptrdiff_t stride, int rnd);
31  ptrdiff_t stride, int rnd);
33  ptrdiff_t stride, int rnd);
35  ptrdiff_t stride, int rnd);
37  ptrdiff_t stride, int rnd);
39  ptrdiff_t stride, int rnd);
41  ptrdiff_t stride, int rnd);
43  ptrdiff_t stride, int rnd);
45  ptrdiff_t stride, int rnd);
47  ptrdiff_t stride, int rnd);
49  ptrdiff_t stride, int rnd);
51  ptrdiff_t stride, int rnd);
53  ptrdiff_t stride, int rnd);
55  ptrdiff_t stride, int rnd);
57  ptrdiff_t stride, int rnd);
58 
60  ptrdiff_t stride, int rnd);
62  ptrdiff_t stride, int rnd);
64  ptrdiff_t stride, int rnd);
66  ptrdiff_t stride, int rnd);
68  ptrdiff_t stride, int rnd);
70  ptrdiff_t stride, int rnd);
72  ptrdiff_t stride, int rnd);
74  ptrdiff_t stride, int rnd);
76  ptrdiff_t stride, int rnd);
78  ptrdiff_t stride, int rnd);
80  ptrdiff_t stride, int rnd);
82  ptrdiff_t stride, int rnd);
84  ptrdiff_t stride, int rnd);
86  ptrdiff_t stride, int rnd);
88  ptrdiff_t stride, int rnd);
90  ptrdiff_t stride, int rnd);
91 
92 
94  ptrdiff_t stride, int rnd);
96  ptrdiff_t stride, int rnd);
98  ptrdiff_t stride, int rnd);
100  ptrdiff_t stride, int rnd);
102  ptrdiff_t stride, int rnd);
104  ptrdiff_t stride, int rnd);
106  ptrdiff_t stride, int rnd);
108  ptrdiff_t stride, int rnd);
110  ptrdiff_t stride, int rnd);
112  ptrdiff_t stride, int rnd);
114  ptrdiff_t stride, int rnd);
116  ptrdiff_t stride, int rnd);
118  ptrdiff_t stride, int rnd);
120  ptrdiff_t stride, int rnd);
122  ptrdiff_t stride, int rnd);
124  ptrdiff_t stride, int rnd);
125 
127  ptrdiff_t stride, int rnd);
129  ptrdiff_t stride, int rnd);
131  ptrdiff_t stride, int rnd);
133  ptrdiff_t stride, int rnd);
135  ptrdiff_t stride, int rnd);
137  ptrdiff_t stride, int rnd);
139  ptrdiff_t stride, int rnd);
141  ptrdiff_t stride, int rnd);
143  ptrdiff_t stride, int rnd);
145  ptrdiff_t stride, int rnd);
147  ptrdiff_t stride, int rnd);
149  ptrdiff_t stride, int rnd);
151  ptrdiff_t stride, int rnd);
153  ptrdiff_t stride, int rnd);
155  ptrdiff_t stride, int rnd);
157  ptrdiff_t stride, int rnd);
158 
159 void ff_vc1_inv_trans_8x8_mmi(int16_t block[64]);
160 void ff_vc1_inv_trans_8x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
161 void ff_vc1_inv_trans_4x8_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
162 void ff_vc1_inv_trans_4x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
163 
164 void ff_vc1_inv_trans_4x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
165 void ff_vc1_inv_trans_4x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
166 void ff_vc1_inv_trans_8x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
167 void ff_vc1_inv_trans_8x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
168 
171 void ff_vc1_v_s_overlap_mmi(int16_t *top, int16_t *bottom);
172 void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags);
173 
174 void ff_vc1_v_loop_filter4_mmi(uint8_t *src, int stride, int pq);
175 void ff_vc1_h_loop_filter4_mmi(uint8_t *src, int stride, int pq);
176 void ff_vc1_v_loop_filter8_mmi(uint8_t *src, int stride, int pq);
177 void ff_vc1_h_loop_filter8_mmi(uint8_t *src, int stride, int pq);
178 void ff_vc1_v_loop_filter16_mmi(uint8_t *src, int stride, int pq);
179 void ff_vc1_h_loop_filter16_mmi(uint8_t *src, int stride, int pq);
180 
181 void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
182  uint8_t *src /* align 1 */,
183  int stride, int h, int x, int y);
184 void ff_put_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
185  uint8_t *src /* align 1 */,
186  int stride, int h, int x, int y);
187 void ff_avg_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
188  uint8_t *src /* align 1 */,
189  int stride, int h, int x, int y);
190 void ff_avg_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
191  uint8_t *src /* align 1 */,
192  int stride, int h, int x, int y);
193 
194 #endif /* AVCODEC_MIPS_VC1DSP_MIPS_H */
ff_avg_vc1_mspel_mc30_mmi
void ff_avg_vc1_mspel_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_v_loop_filter16_mmi
void ff_vc1_v_loop_filter16_mmi(uint8_t *src, int stride, int pq)
Definition: vc1dsp_mmi.c:1573
stride
int stride
Definition: mace.c:144
ff_put_vc1_mspel_mc33_mmi
void ff_put_vc1_mspel_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc13_16_mmi
void ff_put_vc1_mspel_mc13_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_h_loop_filter8_mmi
void ff_vc1_h_loop_filter8_mmi(uint8_t *src, int stride, int pq)
Definition: vc1dsp_mmi.c:1568
vc1dsp.h
ff_put_vc1_mspel_mc21_mmi
void ff_put_vc1_mspel_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc33_16_mmi
void ff_avg_vc1_mspel_mc33_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_inv_trans_8x4_mmi
void ff_vc1_inv_trans_8x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
ff_put_vc1_mspel_mc22_mmi
void ff_put_vc1_mspel_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc00_16_mmi
void ff_put_vc1_mspel_mc00_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
Definition: vc1dsp_mmi.c:1588
ff_avg_vc1_mspel_mc32_mmi
void ff_avg_vc1_mspel_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc00_16_mmi
void ff_avg_vc1_mspel_mc00_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
Definition: vc1dsp_mmi.c:1598
ff_avg_vc1_mspel_mc03_mmi
void ff_avg_vc1_mspel_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_inv_trans_8x4_dc_mmi
void ff_vc1_inv_trans_8x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_mmi.c:416
ff_avg_vc1_mspel_mc22_16_mmi
void ff_avg_vc1_mspel_mc22_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
src
#define src
Definition: vp8dsp.c:254
rnd
#define rnd()
Definition: checkasm.h:104
ff_avg_vc1_mspel_mc10_mmi
void ff_avg_vc1_mspel_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc01_16_mmi
void ff_put_vc1_mspel_mc01_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_inv_trans_8x8_dc_mmi
void ff_vc1_inv_trans_8x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_mmi.c:123
ff_avg_vc1_mspel_mc01_mmi
void ff_avg_vc1_mspel_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc31_mmi
void ff_put_vc1_mspel_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc20_mmi
void ff_avg_vc1_mspel_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc20_16_mmi
void ff_avg_vc1_mspel_mc20_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc02_mmi
void ff_avg_vc1_mspel_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc13_16_mmi
void ff_avg_vc1_mspel_mc13_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_no_rnd_vc1_chroma_mc8_mmi
void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2242
ff_vc1_inv_trans_8x8_mmi
void ff_vc1_inv_trans_8x8_mmi(int16_t block[64])
ff_avg_vc1_mspel_mc03_16_mmi
void ff_avg_vc1_mspel_mc03_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_h_loop_filter4_mmi
void ff_vc1_h_loop_filter4_mmi(uint8_t *src, int stride, int pq)
Definition: vc1dsp_mmi.c:1558
ff_avg_vc1_mspel_mc11_mmi
void ff_avg_vc1_mspel_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_h_loop_filter16_mmi
void ff_vc1_h_loop_filter16_mmi(uint8_t *src, int stride, int pq)
Definition: vc1dsp_mmi.c:1578
ff_put_vc1_mspel_mc13_mmi
void ff_put_vc1_mspel_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc31_16_mmi
void ff_avg_vc1_mspel_mc31_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc02_16_mmi
void ff_avg_vc1_mspel_mc02_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_v_s_overlap_mmi
void ff_vc1_v_s_overlap_mmi(int16_t *top, int16_t *bottom)
Definition: vc1dsp_mmi.c:1453
ff_avg_vc1_mspel_mc22_mmi
void ff_avg_vc1_mspel_mc22_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_no_rnd_vc1_chroma_mc4_mmi
void ff_put_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2297
ff_avg_vc1_mspel_mc23_mmi
void ff_avg_vc1_mspel_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_v_loop_filter8_mmi
void ff_vc1_v_loop_filter8_mmi(uint8_t *src, int stride, int pq)
Definition: vc1dsp_mmi.c:1563
ff_avg_vc1_mspel_mc21_mmi
void ff_avg_vc1_mspel_mc21_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc31_16_mmi
void ff_put_vc1_mspel_mc31_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc10_16_mmi
void ff_avg_vc1_mspel_mc10_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc21_16_mmi
void ff_avg_vc1_mspel_mc21_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc10_mmi
void ff_put_vc1_mspel_mc10_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_inv_trans_4x4_mmi
void ff_vc1_inv_trans_4x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_mmi.c:1171
ff_put_vc1_mspel_mc11_16_mmi
void ff_put_vc1_mspel_mc11_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc12_mmi
void ff_put_vc1_mspel_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc01_16_mmi
void ff_avg_vc1_mspel_mc01_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc03_16_mmi
void ff_put_vc1_mspel_mc03_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc12_mmi
void ff_avg_vc1_mspel_mc12_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc23_mmi
void ff_put_vc1_mspel_mc23_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_inv_trans_4x4_dc_mmi
void ff_vc1_inv_trans_4x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_mmi.c:1123
ff_vc1_inv_trans_4x8_mmi
void ff_vc1_inv_trans_4x8_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
ff_put_vc1_mspel_mc10_16_mmi
void ff_put_vc1_mspel_mc10_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
uint8_t
uint8_t
Definition: audio_convert.c:194
ff_avg_vc1_mspel_mc30_16_mmi
void ff_avg_vc1_mspel_mc30_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc11_16_mmi
void ff_avg_vc1_mspel_mc11_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc32_16_mmi
void ff_avg_vc1_mspel_mc32_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc12_16_mmi
void ff_put_vc1_mspel_mc12_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc31_mmi
void ff_avg_vc1_mspel_mc31_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc20_mmi
void ff_put_vc1_mspel_mc20_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc00_mmi
void ff_avg_vc1_mspel_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
Definition: vc1dsp_mmi.c:1593
ff_avg_vc1_mspel_mc12_16_mmi
void ff_avg_vc1_mspel_mc12_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_v_loop_filter4_mmi
void ff_vc1_v_loop_filter4_mmi(uint8_t *src, int stride, int pq)
Definition: vc1dsp_mmi.c:1553
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_put_vc1_mspel_mc00_mmi
void ff_put_vc1_mspel_mc00_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
Definition: vc1dsp_mmi.c:1583
ff_put_vc1_mspel_mc32_mmi
void ff_put_vc1_mspel_mc32_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_h_overlap_mmi
void ff_vc1_h_overlap_mmi(uint8_t *src, int stride)
Definition: vc1dsp_mmi.c:1377
ff_put_vc1_mspel_mc11_mmi
void ff_put_vc1_mspel_mc11_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_inv_trans_4x8_dc_mmi
void ff_vc1_inv_trans_4x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_mmi.c:867
ff_put_vc1_mspel_mc23_16_mmi
void ff_put_vc1_mspel_mc23_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc33_16_mmi
void ff_put_vc1_mspel_mc33_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc03_mmi
void ff_put_vc1_mspel_mc03_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc20_16_mmi
void ff_put_vc1_mspel_mc20_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc01_mmi
void ff_put_vc1_mspel_mc01_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc13_mmi
void ff_avg_vc1_mspel_mc13_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_v_overlap_mmi
void ff_vc1_v_overlap_mmi(uint8_t *src, int stride)
Definition: vc1dsp_mmi.c:1430
ff_avg_vc1_mspel_mc33_mmi
void ff_avg_vc1_mspel_mc33_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_vc1_h_s_overlap_mmi
void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags)
Definition: vc1dsp_mmi.c:1400
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:565
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_put_vc1_mspel_mc02_16_mmi
void ff_put_vc1_mspel_mc02_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
h
h
Definition: vp9dsp_template.c:2038
ff_put_vc1_mspel_mc30_mmi
void ff_put_vc1_mspel_mc30_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_no_rnd_vc1_chroma_mc4_mmi
void ff_avg_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2408
ff_put_vc1_mspel_mc21_16_mmi
void ff_put_vc1_mspel_mc21_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc02_mmi
void ff_put_vc1_mspel_mc02_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc32_16_mmi
void ff_put_vc1_mspel_mc32_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc22_16_mmi
void ff_put_vc1_mspel_mc22_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_put_vc1_mspel_mc30_16_mmi
void ff_put_vc1_mspel_mc30_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_vc1_mspel_mc23_16_mmi
void ff_avg_vc1_mspel_mc23_16_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd)
ff_avg_no_rnd_vc1_chroma_mc8_mmi
void ff_avg_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2350