57 for (i = e - 1; i >= 0; i--)
60 e = -(is_signed &&
get_rac(c, state + 11 +
FFMIN(e, 10)));
77 while (i < state->error_sum) {
83 av_dlog(
NULL,
"v:%d bias:%d error:%d drift:%d count:%d k:%d",
87 if (k == 0 && 2 * state->
drift <= -state->
count)
90 v ^= ((2 * state->
drift + state->
count) >> 31);
102 int plane_index,
int bits)
113 for (x = 0; x < w; x++) {
115 for (i=0; i<
bits; i++) {
124 for (x = 0; x < w; x++) {
125 int diff, context, sign;
127 context =
get_context(p, sample[1] + x, sample[0] + x, sample[1] + x);
139 if (context == 0 && run_mode == 0)
143 if (run_count == 0 && run_mode == 1) {
146 if (x + run_count <= w)
171 av_dlog(s->
avctx,
"count:%d index:%d, mode:%d, x:%d pos:%d\n",
178 sample[1][x] = (
predict(sample[1] + x, sample[0] + x) +
diff) &
185 int w,
int h,
int stride,
int plane_index)
196 for (y = 0; y < h; y++) {
197 int16_t *
temp = sample[0];
199 sample[0] = sample[1];
202 sample[1][-1] = sample[0][0];
203 sample[0][w] = sample[0][w - 1];
208 for (x = 0; x < w; x++)
209 src[x + stride * y] = sample[1][x];
213 for (x = 0; x < w; x++) {
214 ((uint16_t*)(src + stride*y))[x] = sample[1][x];
217 for (x = 0; x < w; x++) {
234 for (x = 0; x < 4; x++) {
243 for (y = 0; y < h; y++) {
245 int16_t *
temp = sample[p][0];
247 sample[p][0] = sample[p][1];
250 sample[p][1][-1]= sample[p][0][0 ];
251 sample[p][0][ w]= sample[p][0][w-1];
257 for (x = 0; x < w; x++) {
258 int g = sample[0][1][x];
259 int b = sample[1][1][x];
260 int r = sample[2][1][x];
261 int a = sample[3][1][x];
272 *((uint32_t*)(src[0] + x*4 + stride[0]*y)) = b + (g<<8) + (r<<16) + (a<<24);
274 *((uint16_t*)(src[0] + x*2 + stride[0]*y)) = b;
275 *((uint16_t*)(src[1] + x*2 + stride[1]*y)) = g;
276 *((uint16_t*)(src[2] + x*2 + stride[2]*y)) = r;
287 memset(state, 128,
sizeof(state));
328 }
else if (ps == 2) {
331 }
else if (ps == 3) {
391 memcpy(pdst, psrc,
sizeof(*pdst));
437 if (f->colorspace == 0) {
440 const int cx = x >> f->chroma_h_shift;
441 const int cy =
y >> f->chroma_v_shift;
444 if (f->chroma_planes) {
445 decode_plane(fs, p->data[1] + ps*cx+cy*p->linesize[1], chroma_width, chroma_height, p->linesize[1], 1);
446 decode_plane(fs, p->data[2] + ps*cx+cy*p->linesize[2], chroma_width, chroma_height, p->linesize[2], 1);
448 if (fs->transparency)
451 uint8_t *planes[3] = { p->data[0] + ps * x +
y * p->linesize[0],
452 p->data[1] + ps * x +
y * p->linesize[1],
453 p->data[2] + ps * x +
y * p->linesize[2] };
456 if (fs->ac && f->version > 2) {
459 v = fs->c.bytestream_end - fs->c.bytestream - 2 - 5*f->ec;
462 fs->slice_damaged = 1;
479 memset(state, 128,
sizeof(state));
481 for (v = 0; i < 128; v++) {
488 quant_table[i] = scale *
v;
493 for (i = 1; i < 128; i++)
494 quant_table[256 - i] = -quant_table[i];
495 quant_table[128] = -quant_table[127];
506 for (i = 0; i < 5; i++) {
510 context_count *=
ret;
511 if (context_count > 32768
U) {
515 return (context_count + 1) / 2;
525 memset(state2, 128,
sizeof(state2));
526 memset(state, 128,
sizeof(state));
542 for (i = 1; i < 256; i++)
614 "global: ver:%d.%d, coder:%d, colorspace: %d bpr:%d chroma:%d(%d:%d), alpha:%d slices:%dx%d qtabs:%d ec:%d intra:%d\n",
635 memset(state, 128,
sizeof(state));
647 for (i = 1; i < 256; i++)
653 chroma_planes =
get_rac(c, state);
656 transparency =
get_rac(c, state);
670 if (chroma_h_shift > 4
U || chroma_v_shift > 4
U) {
672 chroma_h_shift, chroma_v_shift);
752 "chroma subsampling not supported in this colorspace\n");
779 if (context_count < 0) {
791 int trailer = 3 + 5*!!f->
ec;
835 "quant_table_index out of range\n");
881 int buf_size = avpkt->
size;
916 "Cannot decode non-keyframe without valid keyframe\n");
931 buf_p = buf + buf_size;
934 int trailer = 3 + 5*!!f->
ec;
985 for (j = 0; j < 4; j++) {
1050 fsdst->
ac = fsrc->
ac;
1053 fsdst->
ec = fsrc->
ec;
1085 memcpy(fdst, fsrc,
sizeof(*fdst));