38 #define BITSTREAM_READER_LE
42 #define SMKTREE_BITS 9
43 #define SMK_NODE 0x80000000
79 1, 2, 3, 4, 5, 6, 7, 8,
80 9, 10, 11, 12, 13, 14, 15, 16,
81 17, 18, 19, 20, 21, 22, 23, 24,
82 25, 26, 27, 28, 29, 30, 31, 32,
83 33, 34, 35, 36, 37, 38, 39, 40,
84 41, 42, 43, 44, 45, 46, 47, 48,
85 49, 50, 51, 52, 53, 54, 55, 56,
86 57, 58, 59, 128, 256, 512, 1024, 2048 };
136 int val, i1, i2, b1, b2;
143 if (i1 < 0 || i2 < 0)
149 }
else if(val == ctx->
escapes[1]) {
152 }
else if(val == ctx->
escapes[2]) {
188 if(size >= UINT_MAX>>4){
207 memset(&vlc[0], 0,
sizeof(
VLC));
208 memset(&vlc[1], 0,
sizeof(
VLC));
214 tmp1.
lengths,
sizeof(
int),
sizeof(
int),
227 tmp2.
lengths,
sizeof(
int),
sizeof(
int),
244 last[0] = last[1] = last[2] = -1;
255 huff.
length = ((size + 3) >> 2) + 3;
285 int mmap_size, mclr_size, full_size, type_size;
335 recode[last[0]] = recode[last[1]] = recode[last[2]] = 0;
340 register int *table = recode;
346 table += (*table) & (~SMK_NODE);
352 if(v != recode[last[0]]) {
353 recode[last[2]] = recode[last[1]];
354 recode[last[1]] = recode[last[0]];
362 const uint8_t *buf = avpkt->
data;
363 int buf_size = avpkt->
size;
368 int blocks,
blk, bw, bh;
383 pal = (uint32_t*)smk->
pic.
data[1];
392 for(i = 0; i < 256; i++)
393 *pal++ = bytestream_get_be24(&buf);
403 bw = avctx->
width >> 2;
408 while(blk < blocks) {
416 while(run-- && blk < blocks){
421 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
424 for(i = 0; i < 4; i++) {
425 if(map & 1) out[0] = hi;
else out[0] = lo;
426 if(map & 2) out[1] = hi;
else out[1] = lo;
427 if(map & 4) out[2] = hi;
else out[2] = lo;
428 if(map & 8) out[3] = hi;
else out[3] = lo;
441 while(run-- && blk < blocks){
442 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
445 for(i = 0; i < 4; i++) {
455 out[0] = out[1] = pix & 0xFF;
456 out[2] = out[3] = pix >> 8;
458 out[0] = out[1] = pix & 0xFF;
459 out[2] = out[3] = pix >> 8;
462 out[0] = out[1] = pix & 0xFF;
463 out[2] = out[3] = pix >> 8;
465 out[0] = out[1] = pix & 0xFF;
466 out[2] = out[3] = pix >> 8;
470 for(i = 0; i < 2; i++) {
487 while(run-- && blk < blocks)
492 while(run-- && blk < blocks){
494 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
495 col = mode * 0x01010101;
496 for(i = 0; i < 4; i++) {
497 *((uint32_t*)out) = col;
590 int *got_frame_ptr,
AVPacket *avpkt)
593 const uint8_t *buf = avpkt->
data;
594 int buf_size = avpkt->
size;
604 int pred[2] = {0, 0};
622 if (stereo ^ (avctx->
channels != 1)) {
640 memset(vlc, 0,
sizeof(
VLC) * 4);
643 for(i = 0; i < (1 << (bits + stereo)); i++) {
653 if(h[i].current > 1) {
655 h[i].lengths,
sizeof(
int),
sizeof(
int),
656 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
664 for(i = stereo; i >= 0; i--)
666 for(i = 0; i <= stereo; i++)
667 *samples++ = pred[i];
668 for(; i < unp_size / 2; i++) {
679 val |= h[3].
values[res] << 8;
681 *samples++ = av_clip_int16(pred[1]);
692 val |= h[1].
values[res] << 8;
694 *samples++ = av_clip_int16(pred[0]);
698 for(i = stereo; i >= 0; i--)
700 for(i = 0; i <= stereo; i++)
701 *samples8++ = pred[i];
702 for(; i < unp_size; i++) {
709 *samples8++ = av_clip_uint8(pred[1]);
716 *samples8++ = av_clip_uint8(pred[0]);
721 for(i = 0; i < 4; i++) {