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 };
144 if (i1 < 0 || i2 < 0)
150 }
else if(val == ctx->
escapes[1]) {
153 }
else if(val == ctx->
escapes[2]) {
184 VLC vlc[2] = { { 0 } };
189 if(size >= UINT_MAX>>4){
215 tmp1.
lengths,
sizeof(
int),
sizeof(
int),
233 tmp2.
lengths,
sizeof(
int),
sizeof(
int),
249 last[0] = last[1] = last[2] = -1;
260 huff.
length = ((size + 3) >> 2) + 4;
295 int mmap_size, mclr_size, full_size, type_size;
345 recode[last[0]] = recode[last[1]] = recode[last[2]] = 0;
350 register int *
table = recode;
355 table += (*table) & (~SMK_NODE);
360 if(v != recode[last[0]]) {
361 recode[last[2]] = recode[last[1]];
362 recode[last[1]] = recode[last[0]];
376 int blocks,
blk, bw, bh;
381 if (avpkt->
size <= 769)
388 pal = (uint32_t*)smk->
pic.
data[1];
390 flags = bytestream2_get_byteu(&gb2);
398 for(i = 0; i < 256; i++)
399 *pal++ = 0xFFU << 24 | bytestream2_get_be24u(&gb2);
408 bw = avctx->
width >> 2;
413 while(blk < blocks) {
421 while(run-- && blk < blocks){
426 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
429 for(i = 0; i < 4; i++) {
430 if(map & 1) out[0] = hi;
else out[0] = lo;
431 if(map & 2) out[1] = hi;
else out[1] = lo;
432 if(map & 4) out[2] = hi;
else out[2] = lo;
433 if(map & 8) out[3] = hi;
else out[3] = lo;
446 while(run-- && blk < blocks){
447 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
450 for(i = 0; i < 4; i++) {
460 out[0] = out[1] = pix & 0xFF;
461 out[2] = out[3] = pix >> 8;
463 out[0] = out[1] = pix & 0xFF;
464 out[2] = out[3] = pix >> 8;
467 out[0] = out[1] = pix & 0xFF;
468 out[2] = out[3] = pix >> 8;
470 out[0] = out[1] = pix & 0xFF;
471 out[2] = out[3] = pix >> 8;
475 for(i = 0; i < 2; i++) {
492 while(run-- && blk < blocks)
497 while(run-- && blk < blocks){
499 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
500 col = mode * 0x01010101;
501 for(i = 0; i < 4; i++) {
502 *((uint32_t*)out) = col;
587 int *got_frame_ptr,
AVPacket *avpkt)
591 int buf_size = avpkt->
size;
594 VLC vlc[4] = { { 0 } };
601 int pred[2] = {0, 0};
610 if (unp_size > (1
U<<24)) {
624 if (stereo ^ (avctx->
channels != 1)) {
637 samples = (int16_t *)frame->
data[0];
638 samples8 = frame->
data[0];
641 for(i = 0; i < (1 << (bits + stereo)); i++) {
650 for (; i >= 0; i--) {
660 if(h[i].current > 1) {
662 h[i].lengths,
sizeof(
int),
sizeof(
int),
663 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
672 for(i = stereo; i >= 0; i--)
674 for(i = 0; i <= stereo; i++)
675 *samples++ = pred[i];
676 for(; i < unp_size / 2; i++) {
699 *samples++ = pred[1];
720 *samples++ = pred[0];
724 for(i = stereo; i >= 0; i--)
726 for(i = 0; i <= stereo; i++)
727 *samples8++ = pred[i];
728 for(; i < unp_size; i++) {
741 *samples8++ = pred[1];
752 *samples8++ = pred[0];
757 for(i = 0; i < 4; i++) {