74 int h,
int w,
int stride,
const uint32_t *pal)
79 for (y = dx+h; y > dx; y--) {
81 for (x = 0; x < w; x++) {
84 unsigned c =
AV_RB16(sptr) & ~0x8000;
85 unsigned b = c & 0x1F;
86 unsigned g = (c >> 5) & 0x1F;
89 *dst++ = (b << 3) | (b >> 2);
90 *dst++ = (g << 3) | (g >> 2);
91 *dst++ = (r << 3) | (r >> 2);
95 uint32_t
c = pal[*sptr++];
96 bytestream_put_le24(&dst, c);
100 return sptr - orig_src;
112 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);
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,
ret;
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);
344 for (j = 0; j < v_blocks + (v_part ? 1 : 0); j++) {
347 int cur_blk_height = (j < v_blocks) ? s->
block_height : v_part;
350 for (i = 0; i < h_blocks + (h_part ? 1 : 0); i++) {
352 int cur_blk_width = (i < h_blocks) ? s->
block_width : h_part;
378 "%dx%d invalid color depth %d\n", i, j, s->
color_depth);
385 "inter frame without keyframe\n");
391 "%dx%d diff start %d height %d\n",
419 for (k = 0; k < cur_blk_height; k++)
428 cur_blk_width, cur_blk_height,
430 i + j * (h_blocks + !!h_part)))
432 "error in decompression of block %dx%d\n", i, j);
475 #if CONFIG_FLASHSV_DECODER
490 #if CONFIG_FLASHSV2_DECODER
491 static const uint32_t ff_flashsv2_default_palette[128] = {
492 0x000000, 0x333333, 0x666666, 0x999999, 0xCCCCCC, 0xFFFFFF,
493 0x330000, 0x660000, 0x990000, 0xCC0000, 0xFF0000, 0x003300,
494 0x006600, 0x009900, 0x00CC00, 0x00FF00, 0x000033, 0x000066,
495 0x000099, 0x0000CC, 0x0000FF, 0x333300, 0x666600, 0x999900,
496 0xCCCC00, 0xFFFF00, 0x003333, 0x006666, 0x009999, 0x00CCCC,
497 0x00FFFF, 0x330033, 0x660066, 0x990099, 0xCC00CC, 0xFF00FF,
498 0xFFFF33, 0xFFFF66, 0xFFFF99, 0xFFFFCC, 0xFF33FF, 0xFF66FF,
499 0xFF99FF, 0xFFCCFF, 0x33FFFF, 0x66FFFF, 0x99FFFF, 0xCCFFFF,
500 0xCCCC33, 0xCCCC66, 0xCCCC99, 0xCCCCFF, 0xCC33CC, 0xCC66CC,
501 0xCC99CC, 0xCCFFCC, 0x33CCCC, 0x66CCCC, 0x99CCCC, 0xFFCCCC,
502 0x999933, 0x999966, 0x9999CC, 0x9999FF, 0x993399, 0x996699,
503 0x99CC99, 0x99FF99, 0x339999, 0x669999, 0xCC9999, 0xFF9999,
504 0x666633, 0x666699, 0x6666CC, 0x6666FF, 0x663366, 0x669966,
505 0x66CC66, 0x66FF66, 0x336666, 0x996666, 0xCC6666, 0xFF6666,
506 0x333366, 0x333399, 0x3333CC, 0x3333FF, 0x336633, 0x339933,
507 0x33CC33, 0x33FF33, 0x663333, 0x993333, 0xCC3333, 0xFF3333,
508 0x003366, 0x336600, 0x660033, 0x006633, 0x330066, 0x663300,
509 0x336699, 0x669933, 0x993366, 0x339966, 0x663399, 0x996633,
510 0x6699CC, 0x99CC66, 0xCC6699, 0x66CC99, 0x9966CC, 0xCC9966,
511 0x99CCFF, 0xCCFF99, 0xFF99CC, 0x99FFCC, 0xCC99FF, 0xFFCC99,
512 0x111111, 0x222222, 0x444444, 0x555555, 0xAAAAAA, 0xBBBBBB,
520 s->
pal = ff_flashsv2_default_palette;
539 AVCodec ff_flashsv2_decoder = {
544 .
init = flashsv2_decode_init,
545 .
close = flashsv2_decode_end,