1 |
|
|
/* |
2 |
|
|
* RV30 decoder motion compensation functions |
3 |
|
|
* Copyright (c) 2007 Konstantin Shishkov |
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 |
|
|
/** |
23 |
|
|
* @file |
24 |
|
|
* RV30 decoder motion compensation functions |
25 |
|
|
*/ |
26 |
|
|
|
27 |
|
|
#include "avcodec.h" |
28 |
|
|
#include "h264chroma.h" |
29 |
|
|
#include "h264qpel.h" |
30 |
|
|
#include "mathops.h" |
31 |
|
|
#include "rv34dsp.h" |
32 |
|
|
|
33 |
|
|
#define RV30_LOWPASS(OPNAME, OP) \ |
34 |
|
|
static void OPNAME ## rv30_tpel8_h_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, const int C1, const int C2){\ |
35 |
|
|
const int h = 8;\ |
36 |
|
|
const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\ |
37 |
|
|
int i;\ |
38 |
|
|
for(i = 0; i < h; i++)\ |
39 |
|
|
{\ |
40 |
|
|
OP(dst[0], (-(src[-1]+src[2]) + src[0]*C1 + src[1]*C2 + 8)>>4);\ |
41 |
|
|
OP(dst[1], (-(src[ 0]+src[3]) + src[1]*C1 + src[2]*C2 + 8)>>4);\ |
42 |
|
|
OP(dst[2], (-(src[ 1]+src[4]) + src[2]*C1 + src[3]*C2 + 8)>>4);\ |
43 |
|
|
OP(dst[3], (-(src[ 2]+src[5]) + src[3]*C1 + src[4]*C2 + 8)>>4);\ |
44 |
|
|
OP(dst[4], (-(src[ 3]+src[6]) + src[4]*C1 + src[5]*C2 + 8)>>4);\ |
45 |
|
|
OP(dst[5], (-(src[ 4]+src[7]) + src[5]*C1 + src[6]*C2 + 8)>>4);\ |
46 |
|
|
OP(dst[6], (-(src[ 5]+src[8]) + src[6]*C1 + src[7]*C2 + 8)>>4);\ |
47 |
|
|
OP(dst[7], (-(src[ 6]+src[9]) + src[7]*C1 + src[8]*C2 + 8)>>4);\ |
48 |
|
|
dst += dstStride;\ |
49 |
|
|
src += srcStride;\ |
50 |
|
|
}\ |
51 |
|
|
}\ |
52 |
|
|
\ |
53 |
|
|
static void OPNAME ## rv30_tpel8_v_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, const int C1, const int C2){\ |
54 |
|
|
const int w = 8;\ |
55 |
|
|
const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\ |
56 |
|
|
int i;\ |
57 |
|
|
for(i = 0; i < w; i++)\ |
58 |
|
|
{\ |
59 |
|
|
const int srcA = src[-1*srcStride];\ |
60 |
|
|
const int src0 = src[0 *srcStride];\ |
61 |
|
|
const int src1 = src[1 *srcStride];\ |
62 |
|
|
const int src2 = src[2 *srcStride];\ |
63 |
|
|
const int src3 = src[3 *srcStride];\ |
64 |
|
|
const int src4 = src[4 *srcStride];\ |
65 |
|
|
const int src5 = src[5 *srcStride];\ |
66 |
|
|
const int src6 = src[6 *srcStride];\ |
67 |
|
|
const int src7 = src[7 *srcStride];\ |
68 |
|
|
const int src8 = src[8 *srcStride];\ |
69 |
|
|
const int src9 = src[9 *srcStride];\ |
70 |
|
|
OP(dst[0*dstStride], (-(srcA+src2) + src0*C1 + src1*C2 + 8)>>4);\ |
71 |
|
|
OP(dst[1*dstStride], (-(src0+src3) + src1*C1 + src2*C2 + 8)>>4);\ |
72 |
|
|
OP(dst[2*dstStride], (-(src1+src4) + src2*C1 + src3*C2 + 8)>>4);\ |
73 |
|
|
OP(dst[3*dstStride], (-(src2+src5) + src3*C1 + src4*C2 + 8)>>4);\ |
74 |
|
|
OP(dst[4*dstStride], (-(src3+src6) + src4*C1 + src5*C2 + 8)>>4);\ |
75 |
|
|
OP(dst[5*dstStride], (-(src4+src7) + src5*C1 + src6*C2 + 8)>>4);\ |
76 |
|
|
OP(dst[6*dstStride], (-(src5+src8) + src6*C1 + src7*C2 + 8)>>4);\ |
77 |
|
|
OP(dst[7*dstStride], (-(src6+src9) + src7*C1 + src8*C2 + 8)>>4);\ |
78 |
|
|
dst++;\ |
79 |
|
|
src++;\ |
80 |
|
|
}\ |
81 |
|
|
}\ |
82 |
|
|
\ |
83 |
|
|
static void OPNAME ## rv30_tpel8_hv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
84 |
|
|
const int w = 8;\ |
85 |
|
|
const int h = 8;\ |
86 |
|
|
const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\ |
87 |
|
|
int i, j;\ |
88 |
|
|
for(j = 0; j < h; j++){\ |
89 |
|
|
for(i = 0; i < w; i++){\ |
90 |
|
|
OP(dst[i], (\ |
91 |
|
|
src[srcStride*-1+i-1] -12*src[srcStride*-1+i] -6*src[srcStride*-1+i+1] +src[srcStride*-1+i+2]+\ |
92 |
|
|
-12*src[srcStride* 0+i-1] +144*src[srcStride* 0+i] +72*src[srcStride* 0+i+1] -12*src[srcStride* 0+i+2] +\ |
93 |
|
|
-6*src[srcStride* 1+i-1] +72*src[srcStride* 1+i] +36*src[srcStride* 1+i+1] -6*src[srcStride* 1+i+2] +\ |
94 |
|
|
src[srcStride* 2+i-1] -12*src[srcStride* 2+i] -6*src[srcStride* 2+i+1] +src[srcStride* 2+i+2] +\ |
95 |
|
|
128)>>8);\ |
96 |
|
|
}\ |
97 |
|
|
src += srcStride;\ |
98 |
|
|
dst += dstStride;\ |
99 |
|
|
}\ |
100 |
|
|
}\ |
101 |
|
|
\ |
102 |
|
|
static void OPNAME ## rv30_tpel8_hhv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
103 |
|
|
const int w = 8;\ |
104 |
|
|
const int h = 8;\ |
105 |
|
|
const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\ |
106 |
|
|
int i, j;\ |
107 |
|
|
for(j = 0; j < h; j++){\ |
108 |
|
|
for(i = 0; i < w; i++){\ |
109 |
|
|
OP(dst[i], (\ |
110 |
|
|
src[srcStride*-1+i-1] -12*src[srcStride*-1+i+1] -6*src[srcStride*-1+i] +src[srcStride*-1+i+2]+\ |
111 |
|
|
-12*src[srcStride* 0+i-1] +144*src[srcStride* 0+i+1] +72*src[srcStride* 0+i] -12*src[srcStride* 0+i+2]+\ |
112 |
|
|
-6*src[srcStride* 1+i-1] +72*src[srcStride* 1+i+1] +36*src[srcStride* 1+i] -6*src[srcStride* 1+i+2]+\ |
113 |
|
|
src[srcStride* 2+i-1] -12*src[srcStride* 2+i+1] -6*src[srcStride* 2+i] +src[srcStride* 2+i+2]+\ |
114 |
|
|
128)>>8);\ |
115 |
|
|
}\ |
116 |
|
|
src += srcStride;\ |
117 |
|
|
dst += dstStride;\ |
118 |
|
|
}\ |
119 |
|
|
}\ |
120 |
|
|
\ |
121 |
|
|
static void OPNAME ## rv30_tpel8_hvv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
122 |
|
|
const int w = 8;\ |
123 |
|
|
const int h = 8;\ |
124 |
|
|
const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\ |
125 |
|
|
int i, j;\ |
126 |
|
|
for(j = 0; j < h; j++){\ |
127 |
|
|
for(i = 0; i < w; i++){\ |
128 |
|
|
OP(dst[i], (\ |
129 |
|
|
src[srcStride*-1+i-1] -12*src[srcStride*-1+i] -6*src[srcStride*-1+i+1] +src[srcStride*-1+i+2]+\ |
130 |
|
|
-6*src[srcStride* 0+i-1] +72*src[srcStride* 0+i] +36*src[srcStride* 0+i+1] -6*src[srcStride* 0+i+2]+\ |
131 |
|
|
-12*src[srcStride* 1+i-1] +144*src[srcStride* 1+i] +72*src[srcStride* 1+i+1] -12*src[srcStride* 1+i+2]+\ |
132 |
|
|
src[srcStride* 2+i-1] -12*src[srcStride* 2+i] -6*src[srcStride* 2+i+1] +src[srcStride* 2+i+2]+\ |
133 |
|
|
128)>>8);\ |
134 |
|
|
}\ |
135 |
|
|
src += srcStride;\ |
136 |
|
|
dst += dstStride;\ |
137 |
|
|
}\ |
138 |
|
|
}\ |
139 |
|
|
\ |
140 |
|
|
static void OPNAME ## rv30_tpel8_hhvv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
141 |
|
|
const int w = 8;\ |
142 |
|
|
const int h = 8;\ |
143 |
|
|
const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\ |
144 |
|
|
int i, j;\ |
145 |
|
|
for(j = 0; j < h; j++){\ |
146 |
|
|
for(i = 0; i < w; i++){\ |
147 |
|
|
OP(dst[i], (\ |
148 |
|
|
36*src[i+srcStride*0] +54*src[i+1+srcStride*0] +6*src[i+2+srcStride*0]+\ |
149 |
|
|
54*src[i+srcStride*1] +81*src[i+1+srcStride*1] +9*src[i+2+srcStride*1]+\ |
150 |
|
|
6*src[i+srcStride*2] + 9*src[i+1+srcStride*2] + src[i+2+srcStride*2]+\ |
151 |
|
|
128)>>8);\ |
152 |
|
|
}\ |
153 |
|
|
src += srcStride;\ |
154 |
|
|
dst += dstStride;\ |
155 |
|
|
}\ |
156 |
|
|
}\ |
157 |
|
|
\ |
158 |
|
|
static void OPNAME ## rv30_tpel16_v_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, const int C1, const int C2){\ |
159 |
|
|
OPNAME ## rv30_tpel8_v_lowpass(dst , src , dstStride, srcStride, C1, C2);\ |
160 |
|
|
OPNAME ## rv30_tpel8_v_lowpass(dst+8, src+8, dstStride, srcStride, C1, C2);\ |
161 |
|
|
src += 8*srcStride;\ |
162 |
|
|
dst += 8*dstStride;\ |
163 |
|
|
OPNAME ## rv30_tpel8_v_lowpass(dst , src , dstStride, srcStride, C1, C2);\ |
164 |
|
|
OPNAME ## rv30_tpel8_v_lowpass(dst+8, src+8, dstStride, srcStride, C1, C2);\ |
165 |
|
|
}\ |
166 |
|
|
\ |
167 |
|
|
static void OPNAME ## rv30_tpel16_h_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, const int C1, const int C2){\ |
168 |
|
|
OPNAME ## rv30_tpel8_h_lowpass(dst , src , dstStride, srcStride, C1, C2);\ |
169 |
|
|
OPNAME ## rv30_tpel8_h_lowpass(dst+8, src+8, dstStride, srcStride, C1, C2);\ |
170 |
|
|
src += 8*srcStride;\ |
171 |
|
|
dst += 8*dstStride;\ |
172 |
|
|
OPNAME ## rv30_tpel8_h_lowpass(dst , src , dstStride, srcStride, C1, C2);\ |
173 |
|
|
OPNAME ## rv30_tpel8_h_lowpass(dst+8, src+8, dstStride, srcStride, C1, C2);\ |
174 |
|
|
}\ |
175 |
|
|
\ |
176 |
|
|
static void OPNAME ## rv30_tpel16_hv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
177 |
|
|
OPNAME ## rv30_tpel8_hv_lowpass(dst , src , dstStride, srcStride);\ |
178 |
|
|
OPNAME ## rv30_tpel8_hv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
179 |
|
|
src += 8*srcStride;\ |
180 |
|
|
dst += 8*dstStride;\ |
181 |
|
|
OPNAME ## rv30_tpel8_hv_lowpass(dst , src , dstStride, srcStride);\ |
182 |
|
|
OPNAME ## rv30_tpel8_hv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
183 |
|
|
}\ |
184 |
|
|
\ |
185 |
|
|
static void OPNAME ## rv30_tpel16_hhv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
186 |
|
|
OPNAME ## rv30_tpel8_hhv_lowpass(dst , src , dstStride, srcStride);\ |
187 |
|
|
OPNAME ## rv30_tpel8_hhv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
188 |
|
|
src += 8*srcStride;\ |
189 |
|
|
dst += 8*dstStride;\ |
190 |
|
|
OPNAME ## rv30_tpel8_hhv_lowpass(dst , src , dstStride, srcStride);\ |
191 |
|
|
OPNAME ## rv30_tpel8_hhv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
192 |
|
|
}\ |
193 |
|
|
\ |
194 |
|
|
static void OPNAME ## rv30_tpel16_hvv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
195 |
|
|
OPNAME ## rv30_tpel8_hvv_lowpass(dst , src , dstStride, srcStride);\ |
196 |
|
|
OPNAME ## rv30_tpel8_hvv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
197 |
|
|
src += 8*srcStride;\ |
198 |
|
|
dst += 8*dstStride;\ |
199 |
|
|
OPNAME ## rv30_tpel8_hvv_lowpass(dst , src , dstStride, srcStride);\ |
200 |
|
|
OPNAME ## rv30_tpel8_hvv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
201 |
|
|
}\ |
202 |
|
|
\ |
203 |
|
|
static void OPNAME ## rv30_tpel16_hhvv_lowpass(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride){\ |
204 |
|
|
OPNAME ## rv30_tpel8_hhvv_lowpass(dst , src , dstStride, srcStride);\ |
205 |
|
|
OPNAME ## rv30_tpel8_hhvv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
206 |
|
|
src += 8*srcStride;\ |
207 |
|
|
dst += 8*dstStride;\ |
208 |
|
|
OPNAME ## rv30_tpel8_hhvv_lowpass(dst , src , dstStride, srcStride);\ |
209 |
|
|
OPNAME ## rv30_tpel8_hhvv_lowpass(dst+8, src+8, dstStride, srcStride);\ |
210 |
|
|
}\ |
211 |
|
|
\ |
212 |
|
|
|
213 |
|
|
#define RV30_MC(OPNAME, SIZE) \ |
214 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc10_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
215 |
|
|
{\ |
216 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _h_lowpass(dst, src, stride, stride, 12, 6);\ |
217 |
|
|
}\ |
218 |
|
|
\ |
219 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc20_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
220 |
|
|
{\ |
221 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _h_lowpass(dst, src, stride, stride, 6, 12);\ |
222 |
|
|
}\ |
223 |
|
|
\ |
224 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc01_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
225 |
|
|
{\ |
226 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _v_lowpass(dst, src, stride, stride, 12, 6);\ |
227 |
|
|
}\ |
228 |
|
|
\ |
229 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc02_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
230 |
|
|
{\ |
231 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _v_lowpass(dst, src, stride, stride, 6, 12);\ |
232 |
|
|
}\ |
233 |
|
|
\ |
234 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc11_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
235 |
|
|
{\ |
236 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _hv_lowpass(dst, src, stride, stride);\ |
237 |
|
|
}\ |
238 |
|
|
\ |
239 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc12_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
240 |
|
|
{\ |
241 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _hvv_lowpass(dst, src, stride, stride);\ |
242 |
|
|
}\ |
243 |
|
|
\ |
244 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc21_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
245 |
|
|
{\ |
246 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _hhv_lowpass(dst, src, stride, stride);\ |
247 |
|
|
}\ |
248 |
|
|
\ |
249 |
|
|
static void OPNAME ## rv30_tpel ## SIZE ## _mc22_c(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)\ |
250 |
|
|
{\ |
251 |
|
|
OPNAME ## rv30_tpel ## SIZE ## _hhvv_lowpass(dst, src, stride, stride);\ |
252 |
|
|
}\ |
253 |
|
|
\ |
254 |
|
|
|
255 |
|
|
#define op_avg(a, b) a = (((a)+cm[b]+1)>>1) |
256 |
|
|
#define op_put(a, b) a = cm[b] |
257 |
|
|
|
258 |
✓✓✓✓
|
8529040 |
RV30_LOWPASS(put_ , op_put) |
259 |
✓✓✓✓
|
2423606 |
RV30_LOWPASS(avg_ , op_avg) |
260 |
|
14998 |
RV30_MC(put_, 8) |
261 |
|
22746 |
RV30_MC(put_, 16) |
262 |
|
9980 |
RV30_MC(avg_, 8) |
263 |
|
12242 |
RV30_MC(avg_, 16) |
264 |
|
|
|
265 |
|
5 |
av_cold void ff_rv30dsp_init(RV34DSPContext *c) |
266 |
|
|
{ |
267 |
|
|
H264ChromaContext h264chroma; |
268 |
|
|
H264QpelContext qpel; |
269 |
|
|
|
270 |
|
5 |
ff_rv34dsp_init(c); |
271 |
|
5 |
ff_h264chroma_init(&h264chroma, 8); |
272 |
|
5 |
ff_h264qpel_init(&qpel, 8); |
273 |
|
|
|
274 |
|
5 |
c->put_pixels_tab[0][ 0] = qpel.put_h264_qpel_pixels_tab[0][0]; |
275 |
|
5 |
c->put_pixels_tab[0][ 1] = put_rv30_tpel16_mc10_c; |
276 |
|
5 |
c->put_pixels_tab[0][ 2] = put_rv30_tpel16_mc20_c; |
277 |
|
5 |
c->put_pixels_tab[0][ 4] = put_rv30_tpel16_mc01_c; |
278 |
|
5 |
c->put_pixels_tab[0][ 5] = put_rv30_tpel16_mc11_c; |
279 |
|
5 |
c->put_pixels_tab[0][ 6] = put_rv30_tpel16_mc21_c; |
280 |
|
5 |
c->put_pixels_tab[0][ 8] = put_rv30_tpel16_mc02_c; |
281 |
|
5 |
c->put_pixels_tab[0][ 9] = put_rv30_tpel16_mc12_c; |
282 |
|
5 |
c->put_pixels_tab[0][10] = put_rv30_tpel16_mc22_c; |
283 |
|
5 |
c->avg_pixels_tab[0][ 0] = qpel.avg_h264_qpel_pixels_tab[0][0]; |
284 |
|
5 |
c->avg_pixels_tab[0][ 1] = avg_rv30_tpel16_mc10_c; |
285 |
|
5 |
c->avg_pixels_tab[0][ 2] = avg_rv30_tpel16_mc20_c; |
286 |
|
5 |
c->avg_pixels_tab[0][ 4] = avg_rv30_tpel16_mc01_c; |
287 |
|
5 |
c->avg_pixels_tab[0][ 5] = avg_rv30_tpel16_mc11_c; |
288 |
|
5 |
c->avg_pixels_tab[0][ 6] = avg_rv30_tpel16_mc21_c; |
289 |
|
5 |
c->avg_pixels_tab[0][ 8] = avg_rv30_tpel16_mc02_c; |
290 |
|
5 |
c->avg_pixels_tab[0][ 9] = avg_rv30_tpel16_mc12_c; |
291 |
|
5 |
c->avg_pixels_tab[0][10] = avg_rv30_tpel16_mc22_c; |
292 |
|
5 |
c->put_pixels_tab[1][ 0] = qpel.put_h264_qpel_pixels_tab[1][0]; |
293 |
|
5 |
c->put_pixels_tab[1][ 1] = put_rv30_tpel8_mc10_c; |
294 |
|
5 |
c->put_pixels_tab[1][ 2] = put_rv30_tpel8_mc20_c; |
295 |
|
5 |
c->put_pixels_tab[1][ 4] = put_rv30_tpel8_mc01_c; |
296 |
|
5 |
c->put_pixels_tab[1][ 5] = put_rv30_tpel8_mc11_c; |
297 |
|
5 |
c->put_pixels_tab[1][ 6] = put_rv30_tpel8_mc21_c; |
298 |
|
5 |
c->put_pixels_tab[1][ 8] = put_rv30_tpel8_mc02_c; |
299 |
|
5 |
c->put_pixels_tab[1][ 9] = put_rv30_tpel8_mc12_c; |
300 |
|
5 |
c->put_pixels_tab[1][10] = put_rv30_tpel8_mc22_c; |
301 |
|
5 |
c->avg_pixels_tab[1][ 0] = qpel.avg_h264_qpel_pixels_tab[1][0]; |
302 |
|
5 |
c->avg_pixels_tab[1][ 1] = avg_rv30_tpel8_mc10_c; |
303 |
|
5 |
c->avg_pixels_tab[1][ 2] = avg_rv30_tpel8_mc20_c; |
304 |
|
5 |
c->avg_pixels_tab[1][ 4] = avg_rv30_tpel8_mc01_c; |
305 |
|
5 |
c->avg_pixels_tab[1][ 5] = avg_rv30_tpel8_mc11_c; |
306 |
|
5 |
c->avg_pixels_tab[1][ 6] = avg_rv30_tpel8_mc21_c; |
307 |
|
5 |
c->avg_pixels_tab[1][ 8] = avg_rv30_tpel8_mc02_c; |
308 |
|
5 |
c->avg_pixels_tab[1][ 9] = avg_rv30_tpel8_mc12_c; |
309 |
|
5 |
c->avg_pixels_tab[1][10] = avg_rv30_tpel8_mc22_c; |
310 |
|
|
|
311 |
|
5 |
c->put_chroma_pixels_tab[0] = h264chroma.put_h264_chroma_pixels_tab[0]; |
312 |
|
5 |
c->put_chroma_pixels_tab[1] = h264chroma.put_h264_chroma_pixels_tab[1]; |
313 |
|
5 |
c->avg_chroma_pixels_tab[0] = h264chroma.avg_h264_chroma_pixels_tab[0]; |
314 |
|
5 |
c->avg_chroma_pixels_tab[1] = h264chroma.avg_h264_chroma_pixels_tab[1]; |
315 |
|
5 |
} |