31 { 0, 0, 0, 0, 0, 0, 0, 0 },
32 { 2, 0, 0, 0, 0, 0, 0, 0 },
33 { 5, 7, 0, 0, 0, 0, 0, 0 },
34 { 5, 0, 0, 0, 0, 0, 0, 0 },
35 { 6, 0, 0, 0, 0, 0, 0, 0 },
36 { 5, 7, 5, 7, 0, 0, 0, 0 },
37 { 5, 7, 5, 0, 0, 0, 0, 0 },
38 { 5, 7, 6, 0, 0, 0, 0, 0 },
39 { 5, 5, 0, 0, 0, 0, 0, 0 },
40 { 3, 0, 0, 0, 0, 0, 0, 0 },
41 { 6, 6, 0, 0, 0, 0, 0, 0 },
42 { 2, 4, 0, 0, 0, 0, 0, 0 },
43 { 2, 4, 5, 7, 0, 0, 0, 0 },
44 { 2, 4, 5, 0, 0, 0, 0, 0 },
45 { 2, 4, 6, 0, 0, 0, 0, 0 },
46 { 2, 4, 5, 7, 5, 7, 0, 0 },
71 for (i = 0; i < 4; i++)
87 "width %d and height %d must be multiplie of 4.\n",
100 for (i = 0; i < 4; i++) {
115 for (i = 0; i < 4; i++) {
125 for (i = 0; i < 4; i++) {
126 if (mask & (1 << 7 - i))
128 if (mask & (1 << 3 - i))
129 dst[width + i] =
color;
137 for (i = 0; i < 4; i++) {
138 if (mask & (1 << 7 - i))
140 if (mask & (1 << 3 - i))
141 dst[width + i] = src[width + i];
149 int val = bytestream2_get_be16(&c->
gb);
150 int page = val >> 14;
151 int x = (val & 0x7F);
152 int y = ((val >> 7) & 0x7F);
154 *p = c->
frame[page] + x * 2 + y * 2 * c->
width;
160 uint32_t opcode_size,
offset;
165 i = bytestream2_get_byte(&c->
gb);
176 val = bytestream2_get_be16(&c->
gb);
178 x = (val & 0x7F) * 2;
179 y = ((val >> 7) & 0x7F) * 2;
182 offset = (x & 0x7F) * 2;
183 j = bytestream2_get_le16(&c->
gb) +
offset;
186 if (dst + 3 * c->
width + 4 > dend)
189 if ((offset & 0x3F) == 0)
192 }
while (offset < j);
200 if ((src + 3 * c->
width + 4 > send) ||
201 (dst + 3 * c->
width + 4 > dend))
208 }
while (i < c->video_size / 16);
210 opcode_size = bytestream2_get_le16(&c->
gb);
221 for (i = 0; i < c->
height; i += 4, dst += c->
width * 3)
222 for (j = 0; j < c->
width; j += 4, dst += 4) {
224 if (op > opcode_size)
227 opcode = opcodes[
op] & 15;
230 opcode = opcodes[
op] >> 4;
234 offset = c->
width * 2;
241 color = bytestream2_get_byte(&c->
gb);
243 mask = bytestream2_get_byte(&c->
gb);
251 if (src + offset + c->
width + 4 > send)
253 mask = bytestream2_get_byte(&c->
gb);
275 code = bytestream2_get_byte(&c->
gb);
277 for (i = 0; i < 4; i++)
293 index = bytestream2_get_byte(&c->
gb);
294 count = bytestream2_get_byte(&c->
gb) + 1;
296 if (index +
count > 256)
302 for (i = 0; i <
count; i++) {
305 r = bytestream2_get_byteu(&c->
gb);
307 g = bytestream2_get_byteu(&c->
gb);
309 b = bytestream2_get_byteu(&c->
gb);
311 *out++ = (0xFF
U << 24) | (r << 16) | (g << 8) | b;
316 switch (code & 0x0F) {
337 frame = bytestream2_get_byte(&c->
gb);
357 code = bytestream2_get_byteu(&c->
gb);
358 count =
FFABS(code) + 1;
360 if (dst + count > end)
363 memset(dst, bytestream2_get_byteu(&c->
gb), count);