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) + 3;
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)
392 pal = (uint32_t*)smk->
pic.
data[1];
394 flags = bytestream2_get_byteu(&gb2);
402 for(i = 0; i < 256; i++)
403 *pal++ = 0xFFU << 24 | bytestream2_get_be24u(&gb2);
412 bw = avctx->
width >> 2;
417 while(blk < blocks) {
425 while(run-- && blk < blocks){
430 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
433 for(i = 0; i < 4; i++) {
434 if(map & 1) out[0] = hi;
else out[0] = lo;
435 if(map & 2) out[1] = hi;
else out[1] = lo;
436 if(map & 4) out[2] = hi;
else out[2] = lo;
437 if(map & 8) out[3] = hi;
else out[3] = lo;
450 while(run-- && blk < blocks){
451 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
454 for(i = 0; i < 4; i++) {
464 out[0] = out[1] = pix & 0xFF;
465 out[2] = out[3] = pix >> 8;
467 out[0] = out[1] = pix & 0xFF;
468 out[2] = out[3] = pix >> 8;
471 out[0] = out[1] = pix & 0xFF;
472 out[2] = out[3] = pix >> 8;
474 out[0] = out[1] = pix & 0xFF;
475 out[2] = out[3] = pix >> 8;
479 for(i = 0; i < 2; i++) {
496 while(run-- && blk < blocks)
501 while(run-- && blk < blocks){
503 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
504 col = mode * 0x01010101;
505 for(i = 0; i < 4; i++) {
506 *((uint32_t*)out) = col;
591 int *got_frame_ptr,
AVPacket *avpkt)
595 int buf_size = avpkt->
size;
598 VLC vlc[4] = { { 0 } };
605 int pred[2] = {0, 0};
614 if (unp_size > (1
U<<24)) {
628 if (stereo ^ (avctx->
channels != 1)) {
643 samples = (int16_t *)frame->
data[0];
644 samples8 = frame->
data[0];
647 for(i = 0; i < (1 << (bits + stereo)); i++) {
659 if(h[i].current > 1) {
661 h[i].lengths,
sizeof(
int),
sizeof(
int),
662 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
670 for(i = stereo; i >= 0; i--)
672 for(i = 0; i <= stereo; i++)
673 *samples++ = pred[i];
674 for(; i < unp_size / 2; i++) {
695 val |= h[3].
values[res] << 8;
697 *samples++ = pred[1];
716 val |= h[1].
values[res] << 8;
718 *samples++ = pred[0];
722 for(i = stereo; i >= 0; i--)
724 for(i = 0; i <= stereo; i++)
725 *samples8++ = pred[i];
726 for(; i < unp_size; i++) {
739 *samples8++ = av_clip_uint8(pred[1]);
750 *samples8++ = av_clip_uint8(pred[0]);
755 for(i = 0; i < 4; i++) {