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;
600 int *got_frame_ptr,
AVPacket *avpkt)
604 int buf_size = avpkt->
size;
607 VLC vlc[4] = { { 0 } };
614 int pred[2] = {0, 0};
623 if (unp_size > (1
U<<24)) {
637 if (stereo ^ (avctx->
channels != 1)) {
656 for(i = 0; i < (1 << (bits + stereo)); 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++) {
704 val |= h[3].
values[res] << 8;
706 *samples++ = pred[1];
725 val |= h[1].
values[res] << 8;
727 *samples++ = pred[0];
731 for(i = stereo; i >= 0; i--)
733 for(i = 0; i <= stereo; i++)
734 *samples8++ = pred[i];
735 for(; i < unp_size; i++) {
748 *samples8++ = av_clip_uint8(pred[1]);
759 *samples8++ = av_clip_uint8(pred[0]);
764 for(i = 0; i < 4; i++) {