39 #define BITSTREAM_READER_LE
43 #define SMKTREE_BITS 9
44 #define SMK_NODE 0x80000000
80 1, 2, 3, 4, 5, 6, 7, 8,
81 9, 10, 11, 12, 13, 14, 15, 16,
82 17, 18, 19, 20, 21, 22, 23, 24,
83 25, 26, 27, 28, 29, 30, 31, 32,
84 33, 34, 35, 36, 37, 38, 39, 40,
85 41, 42, 43, 44, 45, 46, 47, 48,
86 49, 50, 51, 52, 53, 54, 55, 56,
87 57, 58, 59, 128, 256, 512, 1024, 2048 };
137 int val, i1, i2, b1, b2;
144 if (i1 < 0 || i2 < 0)
150 }
else if(val == ctx->
escapes[1]) {
153 }
else if(val == ctx->
escapes[2]) {
189 if(size >= UINT_MAX>>4){
208 memset(&vlc[0], 0,
sizeof(
VLC));
209 memset(&vlc[1], 0,
sizeof(
VLC));
215 tmp1.
lengths,
sizeof(
int),
sizeof(
int),
228 tmp2.
lengths,
sizeof(
int),
sizeof(
int),
245 last[0] = last[1] = last[2] = -1;
256 huff.
length = ((size + 3) >> 2) + 4;
292 int mmap_size, mclr_size, full_size, type_size;
342 recode[last[0]] = recode[last[1]] = recode[last[2]] = 0;
347 register int *table = recode;
353 table += (*table) & (~SMK_NODE);
359 if(v != recode[last[0]]) {
360 recode[last[2]] = recode[last[1]];
361 recode[last[1]] = recode[last[0]];
369 const uint8_t *buf = avpkt->
data;
370 int buf_size = avpkt->
size;
375 int blocks,
blk, bw, bh;
390 pal = (uint32_t*)smk->
pic.
data[1];
399 for(i = 0; i < 256; i++)
400 *pal++ = bytestream_get_be24(&buf);
410 bw = avctx->
width >> 2;
415 while(blk < blocks) {
423 while(run-- && blk < blocks){
428 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
431 for(i = 0; i < 4; i++) {
432 if(map & 1) out[0] = hi;
else out[0] = lo;
433 if(map & 2) out[1] = hi;
else out[1] = lo;
434 if(map & 4) out[2] = hi;
else out[2] = lo;
435 if(map & 8) out[3] = hi;
else out[3] = lo;
448 while(run-- && blk < blocks){
449 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
452 for(i = 0; i < 4; i++) {
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;
469 out[0] = out[1] = pix & 0xFF;
470 out[2] = out[3] = pix >> 8;
472 out[0] = out[1] = pix & 0xFF;
473 out[2] = out[3] = pix >> 8;
477 for(i = 0; i < 2; i++) {
494 while(run-- && blk < blocks)
499 while(run-- && blk < blocks){
501 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
502 col = mode * 0x01010101;
503 for(i = 0; i < 4; i++) {
504 *((uint32_t*)out) = col;
597 int *got_frame_ptr,
AVPacket *avpkt)
600 const uint8_t *buf = avpkt->
data;
601 int buf_size = avpkt->
size;
611 int pred[2] = {0, 0};
629 if (stereo ^ (avctx->
channels != 1)) {
647 memset(vlc, 0,
sizeof(
VLC) * 4);
650 for(i = 0; i < (1 << (bits + stereo)); i++) {
659 for (; i >= 0; i--) {
669 if(h[i].current > 1) {
671 h[i].lengths,
sizeof(
int),
sizeof(
int),
672 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
680 for(i = stereo; i >= 0; i--)
682 for(i = 0; i <= stereo; i++)
683 *samples++ = pred[i];
684 for(; i < unp_size / 2; i++) {
695 val |= h[3].
values[res] << 8;
697 *samples++ = av_clip_int16(pred[1]);
708 val |= h[1].
values[res] << 8;
710 *samples++ = av_clip_int16(pred[0]);
714 for(i = stereo; i >= 0; i--)
716 for(i = 0; i <= stereo; i++)
717 *samples8++ = pred[i];
718 for(; i < unp_size; i++) {
725 *samples8++ = av_clip_uint8(pred[1]);
732 *samples8++ = av_clip_uint8(pred[0]);
737 for(i = 0; i < 4; i++) {