36 #define MOBI_RL_VLC_BITS 12
37 #define MOBI_MV_VLC_BITS 6
41 0x00, 0x04, 0x01, 0x02, 0x05, 0x08, 0x0C, 0x09, 0x06, 0x03, 0x07, 0x0A,
42 0x0D, 0x0E, 0x0B, 0x0F
47 { 10, 13, 13, 10, 16, 10, 13, 13, 13, 13, 16, 10, 16, 13, 13, 16 },
48 { 11, 14, 14, 11, 18, 11, 14, 14, 14, 14, 18, 11, 18, 14, 14, 18 },
49 { 13, 16, 16, 13, 20, 13, 16, 16, 16, 16, 20, 13, 20, 16, 16, 20 },
50 { 14, 18, 18, 14, 23, 14, 18, 18, 18, 18, 23, 14, 23, 18, 18, 23 },
51 { 16, 20, 20, 16, 25, 16, 20, 20, 20, 20, 25, 16, 25, 20, 20, 25 },
52 { 18, 23, 23, 18, 29, 18, 23, 23, 23, 23, 29, 18, 29, 23, 23, 29 },
57 { 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,
58 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,},
59 { 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,
60 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,},
61 { 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,
62 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,},
63 { 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,
64 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,},
65 { 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,
66 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,},
67 { 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,
68 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,},
73 15, 0, 2, 1, 4, 8, 12, 3, 11, 13, 14, 7, 10, 5, 9, 6,
78 0, 4, 1, 8, 2, 12, 3, 5, 10, 15, 7, 13, 14, 11, 9, 6,
83 0x00, 0x1F, 0x3F, 0x0F, 0x08, 0x04, 0x02, 0x01, 0x0B, 0x0E, 0x1B, 0x0D,
84 0x03, 0x07, 0x0C, 0x17, 0x1D, 0x0A, 0x1E, 0x05, 0x10, 0x2F, 0x37, 0x3B,
85 0x13, 0x3D, 0x3E, 0x09, 0x1C, 0x06, 0x15, 0x1A, 0x33, 0x11, 0x12, 0x14,
86 0x18, 0x20, 0x3C, 0x35, 0x19, 0x16, 0x3A, 0x30, 0x31, 0x32, 0x27, 0x34,
87 0x2B, 0x2D, 0x39, 0x38, 0x23, 0x36, 0x2E, 0x21, 0x25, 0x22, 0x24, 0x2C,
88 0x2A, 0x28, 0x29, 0x26,
93 0x00, 0x0F, 0x04, 0x01, 0x08, 0x02, 0x0C, 0x03, 0x05, 0x0A, 0x0D, 0x07, 0x0E, 0x0B, 0x1F, 0x09,
94 0x06, 0x10, 0x3F, 0x1E, 0x17, 0x1D, 0x1B, 0x1C, 0x13, 0x18, 0x1A, 0x12, 0x11, 0x14, 0x15, 0x20,
95 0x2F, 0x16, 0x19, 0x37, 0x3D, 0x3E, 0x3B, 0x3C, 0x33, 0x35, 0x21, 0x24, 0x22, 0x28, 0x23, 0x2C,
96 0x30, 0x27, 0x2D, 0x25, 0x3A, 0x2B, 0x2E, 0x2A, 0x31, 0x34, 0x38, 0x32, 0x29, 0x26, 0x39, 0x36
102 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,
103 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,
104 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,
105 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,
106 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,
107 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,
108 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,
109 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,
112 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,
113 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,
114 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,
115 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,
116 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,
117 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,
118 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,
119 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,
124 9, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
125 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12,
126 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 7, 10, 10, 9,
127 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
128 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
129 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6,
130 6, 6, 6, 6, 6, 6, 5, 5, 5, 4, 2, 3, 4, 4,
134 0x0, 0x822, 0x803, 0xB, 0xA, 0xB81, 0xB61, 0xB41, 0xB21, 0x122,
135 0x102, 0xE2, 0xC2, 0xA2, 0x63, 0x43, 0x24, 0xC, 0x25, 0x2E1, 0x301,
136 0xBA1, 0xBC1, 0xBE1, 0xC01, 0x26, 0x44, 0x83, 0xA3, 0xC3, 0x142,
137 0x321, 0x341, 0xC21, 0xC41, 0xC61, 0xC81, 0xCA1, 0xCC1, 0xCE1, 0xD01,
138 0x0, 0x9, 0x8, 0xB01, 0xAE1, 0xAC1, 0xAA1, 0xA81, 0xA61, 0xA41, 0xA21,
139 0x802, 0x2C1, 0x2A1, 0x281, 0x261, 0x241, 0x221, 0x201, 0x1E1, 0x82,
140 0x62, 0x7, 0x6, 0xA01, 0x9E1, 0x9C1, 0x9A1, 0x981, 0x961, 0x941, 0x921,
141 0x1C1, 0x1A1, 0x42, 0x23, 0x5, 0x901, 0x8E1, 0x8C1, 0x8A1, 0x181, 0x161,
142 0x141, 0x4, 0x881, 0x861, 0x841, 0x821, 0x121, 0x101, 0xE1, 0xC1, 0x22,
143 0x3, 0xA1, 0x81, 0x61, 0x801, 0x1, 0x21, 0x41, 0x2,
147 0x0, 0x807, 0x806, 0x16, 0x15, 0x842, 0x823, 0x805, 0x1A1, 0xA3, 0x102, 0x83,
148 0x64, 0x44, 0x27, 0x14, 0x13, 0x17, 0x18, 0x28, 0x122, 0x862, 0x882, 0x9E1, 0xA01,
149 0x19, 0x1A, 0x1B, 0x29, 0xC3, 0x2A, 0x45, 0xE3, 0x1C1, 0x808, 0x8A2, 0x8C2, 0xA21,
150 0xA41, 0xA61, 0xA81, 0x0, 0x12, 0x11, 0x9C1, 0x9A1, 0x981, 0x961, 0x941, 0x822, 0x804,
151 0x181, 0x161, 0xE2, 0xC2, 0xA2, 0x63, 0x43, 0x26, 0x25, 0x10, 0x82, 0xF, 0xE, 0xD, 0x901,
152 0x8E1, 0x8C1, 0x803, 0x141, 0x121, 0x101, 0x921, 0x62, 0x24, 0xC, 0xB, 0xA, 0x881, 0x861,
153 0xC1, 0x8A1, 0xE1, 0x42, 0x23, 0x9, 0x802, 0xA1, 0x841, 0x821, 0x81, 0x61, 0x8, 0x7, 0x22,
154 0x6, 0x41, 0x5, 0x4, 0x801, 0x1, 0x2, 0x21, 0x3,
159 10, 8, 8, 7, 8, 8, 8, 7, 8, 8, 8, 7, 7, 7, 7, 6,
165 { 2, 3, 3, 5, 5, 4, 4, 5, 5, 2 },
166 { 2, 3, 4, 4, 3, 4, 4, 2 },
167 { 3, 4, 4, 2, 4, 4, 3, 2 },
168 { 1, 3, 4, 5, 5, 3, 3 },
169 { 2, 4, 4, 3, 3, 4, 4, 2 },
170 { 2, 3, 4, 4, 4, 4, 3, 2 },
171 { 2, 3, 4, 4, 4, 4, 3, 2 },
172 { 2, 2, 3, 4, 5, 5, 2 },
173 { 2, 3, 4, 4, 3, 4, 4, 2 },
174 { 2, 4, 4, 3, 4, 4, 3, 2 },
175 { 2, 3, 3, 5, 5, 4, 3, 2 },
176 { 2, 3, 4, 4, 3, 3, 2 },
177 { 1, 4, 4, 3, 3, 4, 4 },
178 { 2, 3, 4, 4, 3, 3, 2 },
179 { 2, 3, 4, 4, 3, 3, 2 },
180 { 3, 3, 2, 2, 3, 3 },
183 { 3, 4, 5, 5, 3, 5, 6, 6, 4, 1 },
184 { 2, 3, 4, 5, 5, 2, 3, 3 },
185 { 2, 4, 4, 3, 3, 4, 4, 2 },
186 { 1, 4, 4, 3, 4, 4, 3 },
187 { 3, 3, 2, 4, 5, 5, 3, 2 },
188 { 3, 4, 4, 3, 3, 3, 3, 2 },
189 { 1, 3, 3, 4, 4, 4, 5, 5 },
190 { 1, 4, 4, 3, 3, 4, 4 },
191 { 2, 4, 4, 3, 3, 4, 4, 2 },
192 { 1, 3, 3, 4, 4, 4, 5, 5 },
193 { 2, 3, 4, 4, 4, 4, 3, 2 },
194 { 2, 3, 3, 4, 4, 3, 2 },
195 { 1, 4, 4, 3, 3, 4, 4 },
196 { 1, 4, 4, 3, 3, 4, 4 },
197 { 2, 3, 3, 4, 4, 3, 2 },
198 { 2, 3, 3, 3, 3, 2 },
205 { 1, 8, 9, 4, 3, 2, 7, 5, 6, 0 },
206 { 0, 9, 5, 4, 2, 3, 8, 1 },
207 { 3, 9, 5, 0, 4, 8, 2, 1 },
208 { 1, 3, 4, 8, 5, 2, 0 },
209 { 0, 5, 4, 8, 2, 3, 9, 1 },
210 { 0, 3, 5, 9, 4, 8, 2, 1 },
211 { 0, 3, 9, 5, 8, 4, 2, 1 },
212 { 0, 2, 3, 4, 8, 5, 1 },
213 { 0, 3, 8, 4, 2, 5, 9, 1 },
214 { 2, 8, 9, 3, 5, 4, 0, 1 },
215 { 0, 4, 3, 8, 9, 5, 2, 1 },
216 { 0, 4, 8, 5, 3, 2, 1 },
217 { 1, 9, 4, 2, 0, 5, 3 },
218 { 2, 4, 9, 5, 3, 0, 1 },
219 { 0, 4, 9, 5, 3, 2, 1 },
220 { 5, 4, 1, 0, 3, 2 },
223 { 8, 2, 3, 6, 1, 7, 5, 4, 9, 0 },
224 { 9, 2, 3, 5, 4, 1, 8, 0 },
225 { 0, 5, 4, 2, 9, 3, 8, 1 },
226 { 1, 5, 4, 2, 8, 3, 0 },
227 { 2, 9, 8, 3, 5, 4, 0, 1 },
228 { 3, 5, 4, 2, 9, 8, 0, 1 },
229 { 1, 2, 0, 9, 8, 3, 5, 4 },
230 { 1, 8, 5, 2, 0, 4, 3 },
231 { 0, 5, 4, 2, 8, 3, 9, 1 },
232 { 1, 2, 0, 9, 8, 3, 5, 4 },
233 { 0, 3, 9, 8, 5, 4, 2, 1 },
234 { 0, 4, 3, 8, 5, 2, 1 },
235 { 1, 5, 4, 2, 0, 9, 3 },
236 { 1, 9, 5, 2, 0, 4, 3 },
237 { 0, 5, 3, 9, 4, 2, 1 },
238 { 0, 4, 5, 3, 2, 1 },
289 for (
int i = 0;
i < 2;
i++) {
291 for (
int j = 0; j < 16; j++) {
321 for (
int i = 0;
i < 6;
i++) {
337 if (quantizer < 12 || quantizer > 161)
340 s->quantizer = quantizer;
345 for (
int i = 0;
i < 16;
i++)
348 for (
int i = 0;
i < 64;
i++)
351 for (
int i = 0;
i < 20;
i++)
359 unsigned a = rs[0] + rs[2];
360 unsigned b = rs[0] - rs[2];
361 unsigned c = rs[1] + ((
int)rs[3] >> 1);
362 unsigned d = ((
int)rs[1] >> 1) - rs[3];
373 unsigned x3, x2, x1, x0;
388 e = (unsigned)arr[7] + arr[1] - arr[3] - (arr[3] >> 1);
389 f = (unsigned)arr[7] - arr[1] + arr[5] + (arr[5] >> 1);
390 g = (unsigned)arr[5] - arr[3] - arr[7] - (arr[7] >> 1);
391 h = (unsigned)arr[5] + arr[3] + arr[1] + (arr[1] >> 1);
392 x3 = (unsigned)
g + (
h >> 2);
393 x2 = (unsigned)e + (
f >> 2);
394 x1 = (e >> 2) - (
unsigned)
f;
395 x0 = (unsigned)
h - (
g >> 2);
397 arr[0] =
tmp[0] + x0;
398 arr[1] =
tmp[1] + x1;
399 arr[2] =
tmp[2] + x2;
400 arr[3] =
tmp[3] + x3;
401 arr[4] =
tmp[3] - x3;
402 arr[5] =
tmp[2] - x2;
403 arr[6] =
tmp[1] - x1;
404 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++)
480 dst +=
frame->linesize[plane];
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++) {
1201 offsetm, offsetx +
i * adjx, offsety +
i * adjy);
1224 s->bdsp.bswap16_buf((uint16_t *)
s->bitstream,
1234 frame->key_frame = 1;
1242 for (
int y = 0; y < avctx->
height; y += 16) {
1243 for (
int x = 0; x < avctx->
width; x += 16) {
1252 memset(motion, 0,
s->motion_size);
1255 frame->key_frame = 0;
1262 for (
int y = 0; y < avctx->
height; y += 16) {
1263 for (
int x = 0; x < avctx->
width; x += 16) {
1266 motion[0].
x =
mid_pred(motion[x / 16 + 1].x, motion[x / 16 + 2].x, motion[x / 16 + 3].x);
1267 motion[0].
y =
mid_pred(motion[x / 16 + 1].y, motion[x / 16 + 2].y, motion[x / 16 + 3].y);
1268 motion[x / 16 + 2].
x = 0;
1269 motion[x / 16 + 2].
y = 0;
1274 if (idx == 6 || idx == 7) {
1288 for (
int sy = y; sy < y + 16; sy += 8) {
1289 for (
int sx = x; sx < x + 16; sx += 8) {
1309 s->current_pic = (
s->current_pic + 1) % 6;
1322 for (
int i = 0;
i < 6;
i++)
1331 s->bitstream_size = 0;
1335 for (
int i = 0;
i < 6;
i++) {