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 };
140 if (i1 < 0 || i2 < 0)
146 }
else if(val == ctx->
escapes[1]) {
149 }
else if(val == ctx->
escapes[2]) {
180 VLC vlc[2] = { { 0 } };
185 if(size >= UINT_MAX>>4){
213 tmp1.
lengths,
sizeof(
int),
sizeof(
int),
227 tmp2.
lengths,
sizeof(
int),
sizeof(
int),
245 last[0] = last[1] = last[2] = -1;
256 huff.
length = ((size + 3) >> 2) + 4;
297 int mmap_size, mclr_size, full_size, type_size;
355 recode[last[0]] = recode[last[1]] = recode[last[2]] = 0;
360 register int *table = recode;
365 table += (*table) & (~SMK_NODE);
370 if(v != recode[last[0]]) {
371 recode[last[2]] = recode[last[1]];
372 recode[last[1]] = recode[last[0]];
386 int blocks,
blk, bw, bh;
391 if (avpkt->
size <= 769)
400 pal = (uint32_t*)smk->
pic->
data[1];
402 flags = bytestream2_get_byteu(&gb2);
410 for(i = 0; i < 256; i++)
411 *pal++ = bytestream2_get_be24u(&gb2);
420 bw = avctx->
width >> 2;
425 while(blk < blocks) {
433 while(run-- && blk < blocks){
438 out = smk->
pic->
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
441 for(i = 0; i < 4; i++) {
442 if(map & 1) out[0] = hi;
else out[0] = lo;
443 if(map & 2) out[1] = hi;
else out[1] = lo;
444 if(map & 4) out[2] = hi;
else out[2] = lo;
445 if(map & 8) out[3] = hi;
else out[3] = lo;
458 while(run-- && blk < blocks){
459 out = smk->
pic->
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
462 for(i = 0; i < 4; i++) {
472 out[0] = out[1] = pix & 0xFF;
473 out[2] = out[3] = pix >> 8;
475 out[0] = out[1] = pix & 0xFF;
476 out[2] = out[3] = pix >> 8;
479 out[0] = out[1] = pix & 0xFF;
480 out[2] = out[3] = pix >> 8;
482 out[0] = out[1] = pix & 0xFF;
483 out[2] = out[3] = pix >> 8;
487 for(i = 0; i < 2; i++) {
504 while(run-- && blk < blocks)
509 while(run-- && blk < blocks){
511 out = smk->
pic->
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
512 col = mode * 0x01010101;
513 for(i = 0; i < 4; i++) {
514 *((uint32_t*)out) = col;
604 int *got_frame_ptr,
AVPacket *avpkt)
608 int buf_size = avpkt->
size;
611 VLC vlc[4] = { { 0 } };
618 int pred[2] = {0, 0};
636 if (stereo ^ (avctx->
channels != 1)) {
651 samples = (int16_t *)frame->
data[0];
652 samples8 = frame->
data[0];
655 for(i = 0; i < (1 << (bits + stereo)); i++) {
662 if (!h[i].bits || !h[i].lengths || !h[i].values) {
672 if(h[i].current > 1) {
674 h[i].lengths,
sizeof(
int),
sizeof(
int),
675 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
685 for(i = stereo; i >= 0; i--)
687 for(i = 0; i <= stereo; i++)
688 *samples++ = pred[i];
689 for(; i < unp_size / 2; i++) {
700 val |= h[3].
values[res] << 8;
702 *samples++ = pred[1];
713 val |= h[1].
values[res] << 8;
715 *samples++ = pred[0];
719 for(i = stereo; i >= 0; i--)
721 for(i = 0; i <= stereo; i++)
722 *samples8++ = pred[i];
723 for(; i < unp_size; i++) {
730 *samples8++ = pred[1];
737 *samples8++ = pred[0];
746 for(i = 0; i < 4; i++) {