73 int h,
int w,
int stride,
const uint32_t *pal)
78 for (y = dx+h; y > dx; y--) {
80 for (x = 0; x < w; x++) {
83 unsigned c =
AV_RB16(sptr) & ~0x8000;
84 unsigned b = c & 0x1F;
85 unsigned g = (c >> 5) & 0x1F;
88 *dst++ = (b << 3) | (b >> 2);
89 *dst++ = (g << 3) | (g >> 2);
90 *dst++ = (r << 3) | (r >> 2);
94 uint32_t
c = pal[*sptr++];
95 bytestream_put_le24(&dst, c);
99 return sptr - orig_src;
111 zret = inflateInit(&s->
zstream);
140 inflate(&s->
zstream, Z_SYNC_FLUSH);
142 if (deflateInit(&zs, 0) != Z_OK)
148 deflate(&zs, Z_SYNC_FLUSH);
151 if ((zret = inflateReset(&s->
zstream)) != Z_OK) {
160 inflate(&s->
zstream, Z_SYNC_FLUSH);
173 int ret = inflateReset(&s->
zstream);
189 ret = inflate(&s->
zstream, Z_FINISH);
190 if (ret == Z_DATA_ERROR) {
193 ret = inflate(&s->
zstream, Z_FINISH);
196 if (ret != Z_OK && ret != Z_STREAM_END) {
230 zstream.zalloc = Z_NULL;
231 zstream.zfree = Z_NULL;
232 zstream.opaque = Z_NULL;
233 if (deflateInit(&zstream, 0) != Z_OK)
235 size = deflateBound(&zstream, tmpblock_size);
236 deflateEnd(&zstream);
244 int buf_size = avpkt->
size;
246 int h_blocks, v_blocks, h_part, v_part, i, j;
320 "Frame width or height differs from first frame!\n");
336 av_dlog(avctx,
"image: %dx%d block: %dx%d num: %dx%d part: %dx%d\n",
338 h_blocks, v_blocks, h_part, v_part);
350 for (j = 0; j < v_blocks + (v_part ? 1 : 0); j++) {
353 int cur_blk_height = (j < v_blocks) ? s->
block_height : v_part;
356 for (i = 0; i < h_blocks + (h_part ? 1 : 0); i++) {
358 int cur_blk_width = (i < h_blocks) ? s->
block_width : h_part;
385 "%dx%d invalid color depth %d\n", i, j, s->
color_depth);
392 "inter frame without keyframe\n");
398 "%dx%d diff start %d height %d\n",
426 for (k = 0; k < cur_blk_height; k++)
435 cur_blk_width, cur_blk_height,
437 i + j * (h_blocks + !!h_part)))
439 "error in decompression of block %dx%d\n", i, j);
481 #if CONFIG_FLASHSV_DECODER
496 #if CONFIG_FLASHSV2_DECODER
497 static const uint32_t ff_flashsv2_default_palette[128] = {
498 0x000000, 0x333333, 0x666666, 0x999999, 0xCCCCCC, 0xFFFFFF,
499 0x330000, 0x660000, 0x990000, 0xCC0000, 0xFF0000, 0x003300,
500 0x006600, 0x009900, 0x00CC00, 0x00FF00, 0x000033, 0x000066,
501 0x000099, 0x0000CC, 0x0000FF, 0x333300, 0x666600, 0x999900,
502 0xCCCC00, 0xFFFF00, 0x003333, 0x006666, 0x009999, 0x00CCCC,
503 0x00FFFF, 0x330033, 0x660066, 0x990099, 0xCC00CC, 0xFF00FF,
504 0xFFFF33, 0xFFFF66, 0xFFFF99, 0xFFFFCC, 0xFF33FF, 0xFF66FF,
505 0xFF99FF, 0xFFCCFF, 0x33FFFF, 0x66FFFF, 0x99FFFF, 0xCCFFFF,
506 0xCCCC33, 0xCCCC66, 0xCCCC99, 0xCCCCFF, 0xCC33CC, 0xCC66CC,
507 0xCC99CC, 0xCCFFCC, 0x33CCCC, 0x66CCCC, 0x99CCCC, 0xFFCCCC,
508 0x999933, 0x999966, 0x9999CC, 0x9999FF, 0x993399, 0x996699,
509 0x99CC99, 0x99FF99, 0x339999, 0x669999, 0xCC9999, 0xFF9999,
510 0x666633, 0x666699, 0x6666CC, 0x6666FF, 0x663366, 0x669966,
511 0x66CC66, 0x66FF66, 0x336666, 0x996666, 0xCC6666, 0xFF6666,
512 0x333366, 0x333399, 0x3333CC, 0x3333FF, 0x336633, 0x339933,
513 0x33CC33, 0x33FF33, 0x663333, 0x993333, 0xCC3333, 0xFF3333,
514 0x003366, 0x336600, 0x660033, 0x006633, 0x330066, 0x663300,
515 0x336699, 0x669933, 0x993366, 0x339966, 0x663399, 0x996633,
516 0x6699CC, 0x99CC66, 0xCC6699, 0x66CC99, 0x9966CC, 0xCC9966,
517 0x99CCFF, 0xCCFF99, 0xFF99CC, 0x99FFCC, 0xCC99FF, 0xFFCC99,
518 0x111111, 0x222222, 0x444444, 0x555555, 0xAAAAAA, 0xBBBBBB,
526 s->
pal = ff_flashsv2_default_palette;
545 AVCodec ff_flashsv2_decoder = {
550 .
init = flashsv2_decode_init,
551 .
close = flashsv2_decode_end,