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 
26 void ff_put_vc1_mspel_mc00_mmi(uint8_t *dst, const uint8_t *src,
27  ptrdiff_t stride, int rnd);
28 void ff_put_vc1_mspel_mc01_mmi(uint8_t *dst, const uint8_t *src,
29  ptrdiff_t stride, int rnd);
30 void ff_put_vc1_mspel_mc02_mmi(uint8_t *dst, const uint8_t *src,
31  ptrdiff_t stride, int rnd);
32 void ff_put_vc1_mspel_mc03_mmi(uint8_t *dst, const uint8_t *src,
33  ptrdiff_t stride, int rnd);
34 void ff_put_vc1_mspel_mc10_mmi(uint8_t *dst, const uint8_t *src,
35  ptrdiff_t stride, int rnd);
36 void ff_put_vc1_mspel_mc11_mmi(uint8_t *dst, const uint8_t *src,
37  ptrdiff_t stride, int rnd);
38 void ff_put_vc1_mspel_mc12_mmi(uint8_t *dst, const uint8_t *src,
39  ptrdiff_t stride, int rnd);
40 void ff_put_vc1_mspel_mc13_mmi(uint8_t *dst, const uint8_t *src,
41  ptrdiff_t stride, int rnd);
42 void ff_put_vc1_mspel_mc20_mmi(uint8_t *dst, const uint8_t *src,
43  ptrdiff_t stride, int rnd);
44 void ff_put_vc1_mspel_mc21_mmi(uint8_t *dst, const uint8_t *src,
45  ptrdiff_t stride, int rnd);
46 void ff_put_vc1_mspel_mc22_mmi(uint8_t *dst, const uint8_t *src,
47  ptrdiff_t stride, int rnd);
48 void ff_put_vc1_mspel_mc23_mmi(uint8_t *dst, const uint8_t *src,
49  ptrdiff_t stride, int rnd);
50 void ff_put_vc1_mspel_mc30_mmi(uint8_t *dst, const uint8_t *src,
51  ptrdiff_t stride, int rnd);
52 void ff_put_vc1_mspel_mc31_mmi(uint8_t *dst, const uint8_t *src,
53  ptrdiff_t stride, int rnd);
54 void ff_put_vc1_mspel_mc32_mmi(uint8_t *dst, const uint8_t *src,
55  ptrdiff_t stride, int rnd);
56 void ff_put_vc1_mspel_mc33_mmi(uint8_t *dst, const uint8_t *src,
57  ptrdiff_t stride, int rnd);
58 
59 void ff_avg_vc1_mspel_mc00_mmi(uint8_t *dst, const uint8_t *src,
60  ptrdiff_t stride, int rnd);
61 void ff_avg_vc1_mspel_mc01_mmi(uint8_t *dst, const uint8_t *src,
62  ptrdiff_t stride, int rnd);
63 void ff_avg_vc1_mspel_mc02_mmi(uint8_t *dst, const uint8_t *src,
64  ptrdiff_t stride, int rnd);
65 void ff_avg_vc1_mspel_mc03_mmi(uint8_t *dst, const uint8_t *src,
66  ptrdiff_t stride, int rnd);
67 void ff_avg_vc1_mspel_mc10_mmi(uint8_t *dst, const uint8_t *src,
68  ptrdiff_t stride, int rnd);
69 void ff_avg_vc1_mspel_mc11_mmi(uint8_t *dst, const uint8_t *src,
70  ptrdiff_t stride, int rnd);
71 void ff_avg_vc1_mspel_mc12_mmi(uint8_t *dst, const uint8_t *src,
72  ptrdiff_t stride, int rnd);
73 void ff_avg_vc1_mspel_mc13_mmi(uint8_t *dst, const uint8_t *src,
74  ptrdiff_t stride, int rnd);
75 void ff_avg_vc1_mspel_mc20_mmi(uint8_t *dst, const uint8_t *src,
76  ptrdiff_t stride, int rnd);
77 void ff_avg_vc1_mspel_mc21_mmi(uint8_t *dst, const uint8_t *src,
78  ptrdiff_t stride, int rnd);
79 void ff_avg_vc1_mspel_mc22_mmi(uint8_t *dst, const uint8_t *src,
80  ptrdiff_t stride, int rnd);
81 void ff_avg_vc1_mspel_mc23_mmi(uint8_t *dst, const uint8_t *src,
82  ptrdiff_t stride, int rnd);
83 void ff_avg_vc1_mspel_mc30_mmi(uint8_t *dst, const uint8_t *src,
84  ptrdiff_t stride, int rnd);
85 void ff_avg_vc1_mspel_mc31_mmi(uint8_t *dst, const uint8_t *src,
86  ptrdiff_t stride, int rnd);
87 void ff_avg_vc1_mspel_mc32_mmi(uint8_t *dst, const uint8_t *src,
88  ptrdiff_t stride, int rnd);
89 void ff_avg_vc1_mspel_mc33_mmi(uint8_t *dst, const uint8_t *src,
90  ptrdiff_t stride, int rnd);
91 
92 
93 void ff_put_vc1_mspel_mc00_16_mmi(uint8_t *dst, const uint8_t *src,
94  ptrdiff_t stride, int rnd);
95 void ff_put_vc1_mspel_mc01_16_mmi(uint8_t *dst, const uint8_t *src,
96  ptrdiff_t stride, int rnd);
97 void ff_put_vc1_mspel_mc02_16_mmi(uint8_t *dst, const uint8_t *src,
98  ptrdiff_t stride, int rnd);
99 void ff_put_vc1_mspel_mc03_16_mmi(uint8_t *dst, const uint8_t *src,
100  ptrdiff_t stride, int rnd);
101 void ff_put_vc1_mspel_mc10_16_mmi(uint8_t *dst, const uint8_t *src,
102  ptrdiff_t stride, int rnd);
103 void ff_put_vc1_mspel_mc11_16_mmi(uint8_t *dst, const uint8_t *src,
104  ptrdiff_t stride, int rnd);
105 void ff_put_vc1_mspel_mc12_16_mmi(uint8_t *dst, const uint8_t *src,
106  ptrdiff_t stride, int rnd);
107 void ff_put_vc1_mspel_mc13_16_mmi(uint8_t *dst, const uint8_t *src,
108  ptrdiff_t stride, int rnd);
109 void ff_put_vc1_mspel_mc20_16_mmi(uint8_t *dst, const uint8_t *src,
110  ptrdiff_t stride, int rnd);
111 void ff_put_vc1_mspel_mc21_16_mmi(uint8_t *dst, const uint8_t *src,
112  ptrdiff_t stride, int rnd);
113 void ff_put_vc1_mspel_mc22_16_mmi(uint8_t *dst, const uint8_t *src,
114  ptrdiff_t stride, int rnd);
115 void ff_put_vc1_mspel_mc23_16_mmi(uint8_t *dst, const uint8_t *src,
116  ptrdiff_t stride, int rnd);
117 void ff_put_vc1_mspel_mc30_16_mmi(uint8_t *dst, const uint8_t *src,
118  ptrdiff_t stride, int rnd);
119 void ff_put_vc1_mspel_mc31_16_mmi(uint8_t *dst, const uint8_t *src,
120  ptrdiff_t stride, int rnd);
121 void ff_put_vc1_mspel_mc32_16_mmi(uint8_t *dst, const uint8_t *src,
122  ptrdiff_t stride, int rnd);
123 void ff_put_vc1_mspel_mc33_16_mmi(uint8_t *dst, const uint8_t *src,
124  ptrdiff_t stride, int rnd);
125 
126 void ff_avg_vc1_mspel_mc00_16_mmi(uint8_t *dst, const uint8_t *src,
127  ptrdiff_t stride, int rnd);
128 void ff_avg_vc1_mspel_mc01_16_mmi(uint8_t *dst, const uint8_t *src,
129  ptrdiff_t stride, int rnd);
130 void ff_avg_vc1_mspel_mc02_16_mmi(uint8_t *dst, const uint8_t *src,
131  ptrdiff_t stride, int rnd);
132 void ff_avg_vc1_mspel_mc03_16_mmi(uint8_t *dst, const uint8_t *src,
133  ptrdiff_t stride, int rnd);
134 void ff_avg_vc1_mspel_mc10_16_mmi(uint8_t *dst, const uint8_t *src,
135  ptrdiff_t stride, int rnd);
136 void ff_avg_vc1_mspel_mc11_16_mmi(uint8_t *dst, const uint8_t *src,
137  ptrdiff_t stride, int rnd);
138 void ff_avg_vc1_mspel_mc12_16_mmi(uint8_t *dst, const uint8_t *src,
139  ptrdiff_t stride, int rnd);
140 void ff_avg_vc1_mspel_mc13_16_mmi(uint8_t *dst, const uint8_t *src,
141  ptrdiff_t stride, int rnd);
142 void ff_avg_vc1_mspel_mc20_16_mmi(uint8_t *dst, const uint8_t *src,
143  ptrdiff_t stride, int rnd);
144 void ff_avg_vc1_mspel_mc21_16_mmi(uint8_t *dst, const uint8_t *src,
145  ptrdiff_t stride, int rnd);
146 void ff_avg_vc1_mspel_mc22_16_mmi(uint8_t *dst, const uint8_t *src,
147  ptrdiff_t stride, int rnd);
148 void ff_avg_vc1_mspel_mc23_16_mmi(uint8_t *dst, const uint8_t *src,
149  ptrdiff_t stride, int rnd);
150 void ff_avg_vc1_mspel_mc30_16_mmi(uint8_t *dst, const uint8_t *src,
151  ptrdiff_t stride, int rnd);
152 void ff_avg_vc1_mspel_mc31_16_mmi(uint8_t *dst, const uint8_t *src,
153  ptrdiff_t stride, int rnd);
154 void ff_avg_vc1_mspel_mc32_16_mmi(uint8_t *dst, const uint8_t *src,
155  ptrdiff_t stride, int rnd);
156 void ff_avg_vc1_mspel_mc33_16_mmi(uint8_t *dst, const uint8_t *src,
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 
169 void ff_vc1_v_overlap_mmi(uint8_t *src, ptrdiff_t stride);
170 void ff_vc1_h_overlap_mmi(uint8_t *src, ptrdiff_t stride);
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, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags);
173 
174 void ff_vc1_v_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq);
175 void ff_vc1_h_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq);
176 void ff_vc1_v_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq);
177 void ff_vc1_h_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq);
178 void ff_vc1_v_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq);
179 void ff_vc1_h_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq);
180 
181 void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
182  const uint8_t *src /* align 1 */,
183  ptrdiff_t stride, int h, int x, int y);
184 void ff_put_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
185  const uint8_t *src /* align 1 */,
186  ptrdiff_t stride, int h, int x, int y);
187 void ff_avg_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */,
188  const uint8_t *src /* align 1 */,
189  ptrdiff_t stride, int h, int x, int y);
190 void ff_avg_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst /* align 8 */,
191  const uint8_t *src /* align 1 */,
192  ptrdiff_t stride, int h, int x, int y);
193 
194 void ff_vc1_inv_trans_8x8_msa(int16_t block[64]);
195 void ff_vc1_inv_trans_8x4_msa(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
196 void ff_vc1_inv_trans_4x8_msa(uint8_t *dest, ptrdiff_t linesize, int16_t *block);
197 
198 #define FF_PUT_VC1_MSPEL_MC_MSA(hmode, vmode) \
199 void ff_put_vc1_mspel_mc ## hmode ## vmode ## _msa(uint8_t *dst, \
200  const uint8_t *src, \
201  ptrdiff_t stride, int rnd); \
202 void ff_put_vc1_mspel_mc ## hmode ## vmode ## _16_msa(uint8_t *dst, \
203  const uint8_t *src, \
204  ptrdiff_t stride, int rnd);
205 
209 
213 
217 #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_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_inv_trans_8x4_msa
void ff_vc1_inv_trans_8x4_msa(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_msa.c:231
vc1dsp.h
ff_vc1_inv_trans_8x8_msa
void ff_vc1_inv_trans_8x8_msa(int16_t block[64])
Definition: vc1dsp_msa.c:28
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_vc1_h_s_overlap_mmi
void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags)
Definition: vc1dsp_mmi.c:1401
ff_put_no_rnd_vc1_chroma_mc8_mmi
void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2237
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:1589
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:1599
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:418
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)
rnd
#define rnd()
Definition: checkasm.h:163
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_no_rnd_vc1_chroma_mc4_mmi
void ff_put_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2293
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:126
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_vc1_v_loop_filter16_mmi
void ff_vc1_v_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq)
Definition: vc1dsp_mmi.c:1574
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_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_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_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:1454
FF_PUT_VC1_MSPEL_MC_MSA
#define FF_PUT_VC1_MSPEL_MC_MSA(hmode, vmode)
Definition: vc1dsp_mips.h:198
ff_avg_no_rnd_vc1_chroma_mc8_mmi
void ff_avg_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2347
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_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_h_loop_filter4_mmi
void ff_vc1_h_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq)
Definition: vc1dsp_mmi.c:1559
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_avg_no_rnd_vc1_chroma_mc4_mmi
void ff_avg_no_rnd_vc1_chroma_mc4_mmi(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int h, int x, int y)
Definition: vc1dsp_mmi.c:2406
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:1174
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_vc1_inv_trans_4x8_msa
void ff_vc1_inv_trans_4x8_msa(uint8_t *dest, ptrdiff_t linesize, int16_t *block)
Definition: vc1dsp_msa.c:140
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_vc1_v_loop_filter4_mmi
void ff_vc1_v_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq)
Definition: vc1dsp_mmi.c:1554
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_vc1_v_overlap_mmi
void ff_vc1_v_overlap_mmi(uint8_t *src, ptrdiff_t stride)
Definition: vc1dsp_mmi.c:1431
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:1124
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)
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)
stride
#define stride
Definition: h264pred_template.c:537
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:1594
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)
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:1584
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_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:869
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_vc1_h_loop_filter16_mmi
void ff_vc1_h_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq)
Definition: vc1dsp_mmi.c:1579
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_vc1_h_overlap_mmi
void ff_vc1_h_overlap_mmi(uint8_t *src, ptrdiff_t stride)
Definition: vc1dsp_mmi.c:1378
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)
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
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)
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:474
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_vc1_v_loop_filter8_mmi
void ff_vc1_v_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq)
Definition: vc1dsp_mmi.c:1564
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_vc1_h_loop_filter8_mmi
void ff_vc1_h_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq)
Definition: vc1dsp_mmi.c:1569
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)