39 #define MOBI_RL_VLC_BITS 12
40 #define MOBI_MV_VLC_BITS 6
44 0x00, 0x04, 0x01, 0x02, 0x05, 0x08, 0x0C, 0x09, 0x06, 0x03, 0x07, 0x0A,
45 0x0D, 0x0E, 0x0B, 0x0F
50 { 10, 13, 13, 10, 16, 10, 13, 13, 13, 13, 16, 10, 16, 13, 13, 16 },
51 { 11, 14, 14, 11, 18, 11, 14, 14, 14, 14, 18, 11, 18, 14, 14, 18 },
52 { 13, 16, 16, 13, 20, 13, 16, 16, 16, 16, 20, 13, 20, 16, 16, 20 },
53 { 14, 18, 18, 14, 23, 14, 18, 18, 18, 18, 23, 14, 23, 18, 18, 23 },
54 { 16, 20, 20, 16, 25, 16, 20, 20, 20, 20, 25, 16, 25, 20, 20, 25 },
55 { 18, 23, 23, 18, 29, 18, 23, 23, 23, 23, 29, 18, 29, 23, 23, 29 },
60 { 20, 19, 19, 25, 18, 25, 19, 24, 24, 19, 20, 18, 32, 18, 20, 19, 19, 24, 24, 19, 19, 25, 18, 25, 18, 25, 18, 25, 19, 24, 24, 19,
61 19, 24, 24, 19, 18, 32, 18, 20, 18, 32, 18, 24, 24, 19, 19, 24, 24, 18, 25, 18, 25, 18, 19, 24, 24, 19, 18, 32, 18, 24, 24, 18,},
62 { 22, 21, 21, 28, 19, 28, 21, 26, 26, 21, 22, 19, 35, 19, 22, 21, 21, 26, 26, 21, 21, 28, 19, 28, 19, 28, 19, 28, 21, 26, 26, 21,
63 21, 26, 26, 21, 19, 35, 19, 22, 19, 35, 19, 26, 26, 21, 21, 26, 26, 19, 28, 19, 28, 19, 21, 26, 26, 21, 19, 35, 19, 26, 26, 19,},
64 { 26, 24, 24, 33, 23, 33, 24, 31, 31, 24, 26, 23, 42, 23, 26, 24, 24, 31, 31, 24, 24, 33, 23, 33, 23, 33, 23, 33, 24, 31, 31, 24,
65 24, 31, 31, 24, 23, 42, 23, 26, 23, 42, 23, 31, 31, 24, 24, 31, 31, 23, 33, 23, 33, 23, 24, 31, 31, 24, 23, 42, 23, 31, 31, 23,},
66 { 28, 26, 26, 35, 25, 35, 26, 33, 33, 26, 28, 25, 45, 25, 28, 26, 26, 33, 33, 26, 26, 35, 25, 35, 25, 35, 25, 35, 26, 33, 33, 26,
67 26, 33, 33, 26, 25, 45, 25, 28, 25, 45, 25, 33, 33, 26, 26, 33, 33, 25, 35, 25, 35, 25, 26, 33, 33, 26, 25, 45, 25, 33, 33, 25,},
68 { 32, 30, 30, 40, 28, 40, 30, 38, 38, 30, 32, 28, 51, 28, 32, 30, 30, 38, 38, 30, 30, 40, 28, 40, 28, 40, 28, 40, 30, 38, 38, 30,
69 30, 38, 38, 30, 28, 51, 28, 32, 28, 51, 28, 38, 38, 30, 30, 38, 38, 28, 40, 28, 40, 28, 30, 38, 38, 30, 28, 51, 28, 38, 38, 28,},
70 { 36, 34, 34, 46, 32, 46, 34, 43, 43, 34, 36, 32, 58, 32, 36, 34, 34, 43, 43, 34, 34, 46, 32, 46, 32, 46, 32, 46, 34, 43, 43, 34,
71 34, 43, 43, 34, 32, 58, 32, 36, 32, 58, 32, 43, 43, 34, 34, 43, 43, 32, 46, 32, 46, 32, 34, 43, 43, 34, 32, 58, 32, 43, 43, 32,},
76 15, 0, 2, 1, 4, 8, 12, 3, 11, 13, 14, 7, 10, 5, 9, 6,
81 0, 4, 1, 8, 2, 12, 3, 5, 10, 15, 7, 13, 14, 11, 9, 6,
86 0x00, 0x1F, 0x3F, 0x0F, 0x08, 0x04, 0x02, 0x01, 0x0B, 0x0E, 0x1B, 0x0D,
87 0x03, 0x07, 0x0C, 0x17, 0x1D, 0x0A, 0x1E, 0x05, 0x10, 0x2F, 0x37, 0x3B,
88 0x13, 0x3D, 0x3E, 0x09, 0x1C, 0x06, 0x15, 0x1A, 0x33, 0x11, 0x12, 0x14,
89 0x18, 0x20, 0x3C, 0x35, 0x19, 0x16, 0x3A, 0x30, 0x31, 0x32, 0x27, 0x34,
90 0x2B, 0x2D, 0x39, 0x38, 0x23, 0x36, 0x2E, 0x21, 0x25, 0x22, 0x24, 0x2C,
91 0x2A, 0x28, 0x29, 0x26,
96 0x00, 0x0F, 0x04, 0x01, 0x08, 0x02, 0x0C, 0x03, 0x05, 0x0A, 0x0D, 0x07, 0x0E, 0x0B, 0x1F, 0x09,
97 0x06, 0x10, 0x3F, 0x1E, 0x17, 0x1D, 0x1B, 0x1C, 0x13, 0x18, 0x1A, 0x12, 0x11, 0x14, 0x15, 0x20,
98 0x2F, 0x16, 0x19, 0x37, 0x3D, 0x3E, 0x3B, 0x3C, 0x33, 0x35, 0x21, 0x24, 0x22, 0x28, 0x23, 0x2C,
99 0x30, 0x27, 0x2D, 0x25, 0x3A, 0x2B, 0x2E, 0x2A, 0x31, 0x34, 0x38, 0x32, 0x29, 0x26, 0x39, 0x36
105 12, 6, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
107 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
108 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
109 1, 27, 11, 7, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
110 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
111 1, 41, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
112 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
115 27, 10, 5, 4, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
117 8, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
119 1, 15, 10, 8, 4, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
120 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
121 1, 21, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
122 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
127 9, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
128 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
129 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 7, 10, 10, 9,
130 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
131 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
132 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6,
133 6, 6, 6, 6, 6, 6, 5, 5, 5, 4, 2, 3, 4, 4,
137 0x0, 0x822, 0x803, 0xB, 0xA, 0xB81, 0xB61, 0xB41, 0xB21, 0x122,
138 0x102, 0xE2, 0xC2, 0xA2, 0x63, 0x43, 0x24, 0xC, 0x25, 0x2E1, 0x301,
139 0xBA1, 0xBC1, 0xBE1, 0xC01, 0x26, 0x44, 0x83, 0xA3, 0xC3, 0x142,
140 0x321, 0x341, 0xC21, 0xC41, 0xC61, 0xC81, 0xCA1, 0xCC1, 0xCE1, 0xD01,
141 0x0, 0x9, 0x8, 0xB01, 0xAE1, 0xAC1, 0xAA1, 0xA81, 0xA61, 0xA41, 0xA21,
142 0x802, 0x2C1, 0x2A1, 0x281, 0x261, 0x241, 0x221, 0x201, 0x1E1, 0x82,
143 0x62, 0x7, 0x6, 0xA01, 0x9E1, 0x9C1, 0x9A1, 0x981, 0x961, 0x941, 0x921,
144 0x1C1, 0x1A1, 0x42, 0x23, 0x5, 0x901, 0x8E1, 0x8C1, 0x8A1, 0x181, 0x161,
145 0x141, 0x4, 0x881, 0x861, 0x841, 0x821, 0x121, 0x101, 0xE1, 0xC1, 0x22,
146 0x3, 0xA1, 0x81, 0x61, 0x801, 0x1, 0x21, 0x41, 0x2,
150 0x0, 0x807, 0x806, 0x16, 0x15, 0x842, 0x823, 0x805, 0x1A1, 0xA3, 0x102, 0x83,
151 0x64, 0x44, 0x27, 0x14, 0x13, 0x17, 0x18, 0x28, 0x122, 0x862, 0x882, 0x9E1, 0xA01,
152 0x19, 0x1A, 0x1B, 0x29, 0xC3, 0x2A, 0x45, 0xE3, 0x1C1, 0x808, 0x8A2, 0x8C2, 0xA21,
153 0xA41, 0xA61, 0xA81, 0x0, 0x12, 0x11, 0x9C1, 0x9A1, 0x981, 0x961, 0x941, 0x822, 0x804,
154 0x181, 0x161, 0xE2, 0xC2, 0xA2, 0x63, 0x43, 0x26, 0x25, 0x10, 0x82, 0xF, 0xE, 0xD, 0x901,
155 0x8E1, 0x8C1, 0x803, 0x141, 0x121, 0x101, 0x921, 0x62, 0x24, 0xC, 0xB, 0xA, 0x881, 0x861,
156 0xC1, 0x8A1, 0xE1, 0x42, 0x23, 0x9, 0x802, 0xA1, 0x841, 0x821, 0x81, 0x61, 0x8, 0x7, 0x22,
157 0x6, 0x41, 0x5, 0x4, 0x801, 0x1, 0x2, 0x21, 0x3,
162 10, 8, 8, 7, 8, 8, 8, 7, 8, 8, 8, 7, 7, 7, 7, 6,
168 { 2, 3, 3, 5, 5, 4, 4, 5, 5, 2 },
169 { 2, 3, 4, 4, 3, 4, 4, 2 },
170 { 3, 4, 4, 2, 4, 4, 3, 2 },
171 { 1, 3, 4, 5, 5, 3, 3 },
172 { 2, 4, 4, 3, 3, 4, 4, 2 },
173 { 2, 3, 4, 4, 4, 4, 3, 2 },
174 { 2, 3, 4, 4, 4, 4, 3, 2 },
175 { 2, 2, 3, 4, 5, 5, 2 },
176 { 2, 3, 4, 4, 3, 4, 4, 2 },
177 { 2, 4, 4, 3, 4, 4, 3, 2 },
178 { 2, 3, 3, 5, 5, 4, 3, 2 },
179 { 2, 3, 4, 4, 3, 3, 2 },
180 { 1, 4, 4, 3, 3, 4, 4 },
181 { 2, 3, 4, 4, 3, 3, 2 },
182 { 2, 3, 4, 4, 3, 3, 2 },
183 { 3, 3, 2, 2, 3, 3 },
186 { 3, 4, 5, 5, 3, 5, 6, 6, 4, 1 },
187 { 2, 3, 4, 5, 5, 2, 3, 3 },
188 { 2, 4, 4, 3, 3, 4, 4, 2 },
189 { 1, 4, 4, 3, 4, 4, 3 },
190 { 3, 3, 2, 4, 5, 5, 3, 2 },
191 { 3, 4, 4, 3, 3, 3, 3, 2 },
192 { 1, 3, 3, 4, 4, 4, 5, 5 },
193 { 1, 4, 4, 3, 3, 4, 4 },
194 { 2, 4, 4, 3, 3, 4, 4, 2 },
195 { 1, 3, 3, 4, 4, 4, 5, 5 },
196 { 2, 3, 4, 4, 4, 4, 3, 2 },
197 { 2, 3, 3, 4, 4, 3, 2 },
198 { 1, 4, 4, 3, 3, 4, 4 },
199 { 1, 4, 4, 3, 3, 4, 4 },
200 { 2, 3, 3, 4, 4, 3, 2 },
201 { 2, 3, 3, 3, 3, 2 },
208 { 1, 8, 9, 4, 3, 2, 7, 5, 6, 0 },
209 { 0, 9, 5, 4, 2, 3, 8, 1 },
210 { 3, 9, 5, 0, 4, 8, 2, 1 },
211 { 1, 3, 4, 8, 5, 2, 0 },
212 { 0, 5, 4, 8, 2, 3, 9, 1 },
213 { 0, 3, 5, 9, 4, 8, 2, 1 },
214 { 0, 3, 9, 5, 8, 4, 2, 1 },
215 { 0, 2, 3, 4, 8, 5, 1 },
216 { 0, 3, 8, 4, 2, 5, 9, 1 },
217 { 2, 8, 9, 3, 5, 4, 0, 1 },
218 { 0, 4, 3, 8, 9, 5, 2, 1 },
219 { 0, 4, 8, 5, 3, 2, 1 },
220 { 1, 9, 4, 2, 0, 5, 3 },
221 { 2, 4, 9, 5, 3, 0, 1 },
222 { 0, 4, 9, 5, 3, 2, 1 },
223 { 5, 4, 1, 0, 3, 2 },
226 { 8, 2, 3, 6, 1, 7, 5, 4, 9, 0 },
227 { 9, 2, 3, 5, 4, 1, 8, 0 },
228 { 0, 5, 4, 2, 9, 3, 8, 1 },
229 { 1, 5, 4, 2, 8, 3, 0 },
230 { 2, 9, 8, 3, 5, 4, 0, 1 },
231 { 3, 5, 4, 2, 9, 8, 0, 1 },
232 { 1, 2, 0, 9, 8, 3, 5, 4 },
233 { 1, 8, 5, 2, 0, 4, 3 },
234 { 0, 5, 4, 2, 8, 3, 9, 1 },
235 { 1, 2, 0, 9, 8, 3, 5, 4 },
236 { 0, 3, 9, 8, 5, 4, 2, 1 },
237 { 0, 4, 3, 8, 5, 2, 1 },
238 { 1, 5, 4, 2, 0, 9, 3 },
239 { 1, 9, 5, 2, 0, 4, 3 },
240 { 0, 5, 3, 9, 4, 2, 1 },
241 { 0, 4, 5, 3, 2, 1 },
287 for (
int i = 0;
i < 2;
i++) {
293 for (
int j = 0; j < 16; j++) {
322 for (
int i = 0;
i < 6;
i++) {
338 if (quantizer < 12 || quantizer > 161)
341 s->quantizer = quantizer;
346 for (
int i = 0;
i < 16;
i++)
349 for (
int i = 0;
i < 64;
i++)
352 for (
int i = 0;
i < 20;
i++)
360 unsigned a = rs[0] + rs[2];
361 unsigned b = rs[0] - rs[2];
362 unsigned c = rs[1] + ((int)rs[3] >> 1);
363 unsigned d = ((int)rs[1] >> 1) - rs[3];
374 unsigned x3, x2, x1, x0;
389 e = (unsigned)arr[7] + arr[1] - arr[3] - (arr[3] >> 1);
390 f = (unsigned)arr[7] - arr[1] + arr[5] + (arr[5] >> 1);
391 g = (unsigned)arr[5] - arr[3] - arr[7] - (arr[7] >> 1);
392 h = (unsigned)arr[5] + arr[3] + arr[1] + (arr[1] >> 1);
393 x3 = (unsigned)
g + (
h >> 2);
394 x2 = (unsigned)e + (
f >> 2);
395 x1 = (e >> 2) - (
unsigned)
f;
396 x0 = (unsigned)
h - (
g >> 2);
398 arr[0] =
tmp[0] + x0;
399 arr[1] =
tmp[1] + x1;
400 arr[2] =
tmp[2] + x2;
401 arr[3] =
tmp[3] + x3;
402 arr[4] =
tmp[3] - x3;
403 arr[5] =
tmp[2] - x2;
404 arr[6] =
tmp[1] - x1;
405 arr[7] =
tmp[0] - x0;
415 *last = (n >> 11) == 1;
416 *
run = (n >> 5) & 0x3F;
421 int bx,
int by,
int size,
int plane)
427 const int *qtab =
s->qtab[
size == 8];
428 uint8_t *
dst =
frame->data[plane] + by *
frame->linesize[plane] + bx;
458 mat[ztab[
pos]] = qval *(unsigned)
level;
465 for (
int y = 0; y <
size; y++)
468 for (
int y = 0; y <
size; y++) {
469 for (
int x = y + 1; x <
size; x++) {
470 int a = mat[x *
size + y];
471 int b = mat[y *
size + x];
473 mat[y *
size + x] =
a;
474 mat[x *
size + y] =
b;
478 for (
int x = 0; x <
size; x++)
487 int bx,
int by,
int size,
int plane)
498 for (
int y = by; y < by + 8; y += 4) {
499 for (
int x = bx; x < bx + 8; x += 4) {
516 return size == 16 ? (x + 1) >> 1 : x;
524 if (
b.x == -1 &&
b.y >=
b.size) {
525 ret.x = -1,
ret.y =
b.size - 1;
526 }
else if (
b.x >= -1 &&
b.y >= -1) {
528 }
else if (
b.x == -1 &&
b.y == -2) {
530 }
else if (
b.x == -2 &&
b.y == -1) {
537 return ret.block[y *
ret.linesize + x];
542 return ((
a +
b) + 1) / 2;
547 return ((
a +
b +
b +
c) * 2 / 4 + 1) / 2;
588 if ((bxy.
x % 2) == 0) {
594 ba.
y = bxy.
y + bxy.
x / 2;
599 bb.
y = bxy.
y + bxy.
x / 2 + 1;
608 ba.
y = bxy.
y + bxy.
x / 2 + 1;
629 }
else if (bxy.
y == 0) {
636 }
else if (bxy.
x == 1) {
669 }
else if (bxy.
x == 0) {
676 }
else if (bxy.
y == 1) {
724 return half3(acc1, clr, acc2);
745 }
else if (bxy.
y == 1) {
750 }
else if (bxy.
x < bxy.
size - 1) {
755 }
else if (bxy.
y % 2 == 0) {
758 ba.
x = bxy.
y / 2 + bxy.
size - 1;
762 bb.
x = bxy.
y / 2 + bxy.
size;
769 ba.
x = bxy.
y / 2 + bxy.
size;
780 for (
int y = 0; y <
size; y++) {
787 int w,
int h,
int ax,
int ay,
800 for (
int y = 0; y <
size; y++) {
802 for (
int x = 0; x <
size; x++) {
809 block[ax + x + (ay + y) * linesize] =
val;
818 for (
int y = 0; y <
h; y++) {
819 for (
int x = 0; x <
w; x++) {
829 int pmode,
int add_coeffs,
int size,
int plane)
833 int w = avctx->
width >> !!plane,
h = avctx->
height >> !!plane;
847 uint8_t *top =
frame->data[plane] +
FFMAX(ay - 1, 0) *
frame->linesize[plane] + ax;
849 int bottommost =
frame->data[plane][(ay +
size - 1) *
frame->linesize[plane] +
FFMAX(ax - 1, 0)];
850 int rightmost =
frame->data[plane][
FFMAX(ay - 1, 0) *
frame->linesize[plane] + ax +
size - 1];
857 for (
int x = 0; x <
size; x++) {
862 for (
int y = 0; y <
size; y++) {
868 for (
int y = 0; y <
size; y++) {
869 for (
int x = 0; x <
size; x++) {
870 block[x] = (((top[x] +
left[0] + ((arr1[x] * (y + 1) +
871 arr2[y] * (x + 1)) >> 2 *
shift)) + 1) / 2) & 0xFF;
882 if (ax == 0 && ay == 0) {
884 }
else if (ax >= 1 && ay >= 1) {
890 fill = ((
left + top) * 2 / (2 *
size) + 1) / 2;
891 }
else if (ax >= 1) {
894 }
else if (ay >= 1) {
932 int index = (y & 0xC) | (x / 4 % 4);
940 val = x + (x >=
val ? 1 : 0);
951 int x,
int y,
int pmode,
int has_coeffs,
int plane)
974 for (
int by = y; by < y + 8; by += 4) {
975 for (
int bx = x; bx < x + 8; bx += 4) {
976 int new_pmode = pmode;
1050 if (pmode_uv == 2) {
1073 return x == 16 ? 0 : x == 8 ? 1 : x == 4 ? 2 : x == 2 ? 3 : 0;
1078 int offsetm,
int offsetx,
int offsety)
1083 int fheight = avctx->
height;
1084 int fwidth = avctx->
width;
1097 if (
mv.x >= INT_MAX ||
mv.y >= INT_MAX)
1100 motion[offsetm].
x =
mv.x;
1101 motion[offsetm].
y =
mv.y;
1103 for (
int i = 0;
i < 3;
i++) {
1104 int method, src_linesize, dst_linesize;
1108 offsetx = offsetx >> 1;
1109 offsety = offsety >> 1;
1114 fwidth = fwidth >> 1;
1115 fheight = fheight >> 1;
1121 if (!
s->pic[sidx]->data[
i])
1124 method = (
mv.x & 1) | ((
mv.y & 1) << 1);
1125 src_linesize =
s->pic[sidx]->linesize[
i];
1126 dst_linesize =
s->pic[
s->current_pic]->linesize[
i];
1127 dst =
s->pic[
s->current_pic]->data[
i] + offsetx + offsety * dst_linesize;
1129 if (offsetx + (
mv.x >> 1) < 0 ||
1130 offsety + (
mv.y >> 1) < 0 ||
1131 offsetx +
width + (
mv.x + 1 >> 1) > fwidth ||
1132 offsety +
height + (
mv.y + 1 >> 1) > fheight)
1137 src =
s->pic[sidx]->data[
i] + offsetx + (
mv.x >> 1) +
1138 (offsety + (
mv.y >> 1)) * src_linesize;
1139 for (
int y = 0; y <
height; y++) {
1140 for (
int x = 0; x <
width; x++)
1142 dst += dst_linesize;
1143 src += src_linesize;
1147 src =
s->pic[sidx]->data[
i] + offsetx + (
mv.x >> 1) +
1148 (offsety + (
mv.y >> 1)) * src_linesize;
1149 for (
int y = 0; y <
height; y++) {
1150 for (
int x = 0; x <
width; x++) {
1151 dst[x] = (uint8_t)((
src[x] >> 1) + (
src[x + 1] >> 1));
1154 dst += dst_linesize;
1155 src += src_linesize;
1159 src =
s->pic[sidx]->data[
i] + offsetx + (
mv.x >> 1) +
1160 (offsety + (
mv.y >> 1)) * src_linesize;
1161 for (
int y = 0; y <
height; y++) {
1162 for (
int x = 0; x <
width; x++) {
1163 dst[x] = (uint8_t)((
src[x] >> 1) + (
src[x + src_linesize] >> 1));
1166 dst += dst_linesize;
1167 src += src_linesize;
1171 src =
s->pic[sidx]->data[
i] + offsetx + (
mv.x >> 1) +
1172 (offsety + (
mv.y >> 1)) * src_linesize;
1173 for (
int y = 0; y <
height; y++) {
1174 for (
int x = 0; x <
width; x++) {
1175 dst[x] = (uint8_t)((((
src[x] >> 1) + (
src[x + 1] >> 1)) >> 1) +
1176 (((
src[x + src_linesize] >> 1) + (
src[x + 1 + src_linesize] >> 1)) >> 1));
1179 dst += dst_linesize;
1180 src += src_linesize;
1194 for (
int i = 0;
i < 2;
i++) {
1200 offsetm, offsetx +
i * adjx, offsety +
i * adjy);
1226 s->bdsp.bswap16_buf((uint16_t *)
s->bitstream,
1244 for (
int y = 0; y < avctx->
height; y += 16) {
1245 for (
int x = 0; x < avctx->
width; x += 16) {
1254 memset(motion, 0,
s->motion_size);
1264 for (
int y = 0; y < avctx->
height; y += 16) {
1265 for (
int x = 0; x < avctx->
width; x += 16) {
1268 motion[0].
x =
mid_pred(motion[x / 16 + 1].x, motion[x / 16 + 2].x, motion[x / 16 + 3].x);
1269 motion[0].
y =
mid_pred(motion[x / 16 + 1].y, motion[x / 16 + 2].y, motion[x / 16 + 3].y);
1270 motion[x / 16 + 2].
x = 0;
1271 motion[x / 16 + 2].
y = 0;
1275 if (idx == 6 || idx == 7) {
1289 for (
int sy = y; sy < y + 16; sy += 8) {
1290 for (
int sx = x; sx < x + 16; sx += 8) {
1310 s->current_pic = (
s->current_pic + 1) % 6;
1323 for (
int i = 0;
i < 6;
i++)
1332 s->bitstream_size = 0;
1336 for (
int i = 0;
i < 6;
i++) {
1344 .
p.
name =
"mobiclip",