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){
208 tmp1.
lengths,
sizeof(
int),
sizeof(
int),
221 tmp2.
lengths,
sizeof(
int),
sizeof(
int),
238 last[0] = last[1] = last[2] = -1;
249 huff.
length = ((size + 3) >> 2) + 4;
279 int mmap_size, mclr_size, full_size, type_size;
329 recode[last[0]] = recode[last[1]] = recode[last[2]] = 0;
334 register int *table = recode;
339 table += (*table) & (~SMK_NODE);
344 if(v != recode[last[0]]) {
345 recode[last[2]] = recode[last[1]];
346 recode[last[1]] = recode[last[0]];
360 int blocks,
blk, bw, bh;
365 if (avpkt->
size <= 769)
376 pal = (uint32_t*)smk->
pic.
data[1];
378 flags = bytestream2_get_byteu(&gb2);
386 for(i = 0; i < 256; i++)
387 *pal++ = bytestream2_get_be24u(&gb2);
396 bw = avctx->
width >> 2;
401 while(blk < blocks) {
409 while(run-- && blk < blocks){
414 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
417 for(i = 0; i < 4; i++) {
418 if(map & 1) out[0] = hi;
else out[0] = lo;
419 if(map & 2) out[1] = hi;
else out[1] = lo;
420 if(map & 4) out[2] = hi;
else out[2] = lo;
421 if(map & 8) out[3] = hi;
else out[3] = lo;
434 while(run-- && blk < blocks){
435 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
438 for(i = 0; i < 4; i++) {
448 out[0] = out[1] = pix & 0xFF;
449 out[2] = out[3] = pix >> 8;
451 out[0] = out[1] = pix & 0xFF;
452 out[2] = out[3] = pix >> 8;
455 out[0] = out[1] = pix & 0xFF;
456 out[2] = out[3] = pix >> 8;
458 out[0] = out[1] = pix & 0xFF;
459 out[2] = out[3] = pix >> 8;
463 for(i = 0; i < 2; i++) {
480 while(run-- && blk < blocks)
485 while(run-- && blk < blocks){
487 out = smk->
pic.
data[0] + (blk / bw) * (stride * 4) + (blk % bw) * 4;
488 col = mode * 0x01010101;
489 for(i = 0; i < 4; i++) {
490 *((uint32_t*)out) = col;
583 int *got_frame_ptr,
AVPacket *avpkt)
587 int buf_size = avpkt->
size;
590 VLC vlc[4] = { { 0 } };
597 int pred[2] = {0, 0};
615 if (stereo ^ (avctx->
channels != 1)) {
634 for(i = 0; i < (1 << (bits + stereo)); i++) {
643 for (; i >= 0; i--) {
653 if(h[i].current > 1) {
655 h[i].lengths,
sizeof(
int),
sizeof(
int),
656 h[i].bits,
sizeof(uint32_t),
sizeof(uint32_t),
INIT_VLC_LE);
664 for(i = stereo; i >= 0; i--)
666 for(i = 0; i <= stereo; i++)
667 *samples++ = pred[i];
668 for(; i < unp_size / 2; i++) {
679 val |= h[3].
values[res] << 8;
681 *samples++ = av_clip_int16(pred[1]);
692 val |= h[1].
values[res] << 8;
694 *samples++ = av_clip_int16(pred[0]);
698 for(i = stereo; i >= 0; i--)
700 for(i = 0; i <= stereo; i++)
701 *samples8++ = pred[i];
702 for(; i < unp_size; i++) {
709 *samples8++ = av_clip_uint8(pred[1]);
716 *samples8++ = av_clip_uint8(pred[0]);
721 for(i = 0; i < 4; i++) {