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) + 4;
291 int mmap_size, mclr_size, full_size, type_size;
341 recode[last[0]] = recode[last[1]] = recode[last[2]] = 0;
346 register int *table = recode;
352 table += (*table) & (~SMK_NODE);
358 if(v != recode[last[0]]) {
359 recode[last[2]] = recode[last[1]];
360 recode[last[1]] = recode[last[0]];
368 const uint8_t *buf = avpkt->
data;
369 int buf_size = avpkt->
size;
374 int blocks,
blk, bw, bh;
389 pal = (uint32_t*)smk->
pic.
data[1];
398 for(i = 0; i < 256; i++)
399 *pal++ = bytestream_get_be24(&buf);
409 bw = avctx->
width >> 2;
414 while(blk < blocks) {
422 while(run-- && blk < blocks){
427 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
430 for(i = 0; i < 4; i++) {
431 if(map & 1) out[0] = hi;
else out[0] = lo;
432 if(map & 2) out[1] = hi;
else out[1] = lo;
433 if(map & 4) out[2] = hi;
else out[2] = lo;
434 if(map & 8) out[3] = hi;
else out[3] = lo;
447 while(run-- && blk < blocks){
448 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
451 for(i = 0; i < 4; i++) {
461 out[0] = out[1] = pix & 0xFF;
462 out[2] = out[3] = pix >> 8;
464 out[0] = out[1] = pix & 0xFF;
465 out[2] = out[3] = pix >> 8;
468 out[0] = out[1] = pix & 0xFF;
469 out[2] = out[3] = pix >> 8;
471 out[0] = out[1] = pix & 0xFF;
472 out[2] = out[3] = pix >> 8;
476 for(i = 0; i < 2; i++) {
493 while(run-- && blk < blocks)
498 while(run-- && blk < blocks){
500 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
501 col = mode * 0x01010101;
502 for(i = 0; i < 4; i++) {
503 *((uint32_t*)out) = col;
596 int *got_frame_ptr,
AVPacket *avpkt)
599 const uint8_t *buf = avpkt->
data;
600 int buf_size = avpkt->
size;
610 int pred[2] = {0, 0};
628 if (stereo ^ (avctx->
channels != 1)) {
646 memset(vlc, 0,
sizeof(
VLC) * 4);
649 for(i = 0; i < (1 << (bits + stereo)); i++) {
658 for (; i >= 0; i--) {
668 if(h[i].current > 1) {
670 h[i].lengths,
sizeof(
int),
sizeof(
int),
671 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
679 for(i = stereo; i >= 0; i--)
681 for(i = 0; i <= stereo; i++)
682 *samples++ = pred[i];
683 for(; i < unp_size / 2; i++) {
694 val |= h[3].
values[res] << 8;
696 *samples++ = av_clip_int16(pred[1]);
707 val |= h[1].
values[res] << 8;
709 *samples++ = av_clip_int16(pred[0]);
713 for(i = stereo; i >= 0; i--)
715 for(i = 0; i <= stereo; i++)
716 *samples8++ = pred[i];
717 for(; i < unp_size; i++) {
724 *samples8++ = av_clip_uint8(pred[1]);
731 *samples8++ = av_clip_uint8(pred[0]);
736 for(i = 0; i < 4; i++) {