Lines Matching refs:bi
176 static av_always_inline PutBitContext *dv_encode_ac(EncBlockInfo *bi,
182 int size = bi->partial_bit_count;
183 uint32_t vlc = bi->partial_bit_buffer;
185 bi->partial_bit_count =
186 bi->partial_bit_buffer = 0;
196 bi->partial_bit_count = size;
197 bi->partial_bit_buffer = vlc;
205 if (bi->cur_ac >= 64)
209 prev = bi->cur_ac;
210 bi->cur_ac = bi->next[prev];
211 if (bi->cur_ac < 64) {
212 size = dv_rl2vlc(bi->cur_ac - prev - 1, bi->mb[bi->cur_ac],
213 bi->sign[bi->cur_ac], &vlc);
371 int16_t *blk, EncBlockInfo *bi,
396 bi->mb[0] = blk[0];
399 bi->prev[area] = prev;
400 bi->bit_size[area] = 1; // 4 areas 4 bits for EOB :)
405 bi->sign[i] = (level >> 31) & 1;
413 bi->mb[i] = level;
416 bi->bit_size[area] += dv_rl2vlc_size(i - prev - 1, level);
417 bi->next[prev] = i;
422 bi->next[prev] = i;
423 for (bi->cno = 0; max > classes[bi->cno]; bi->cno++)
426 bi->cno += bias;
428 if (bi->cno >= 3) {
429 bi->cno = 3;
431 i = bi->next[prev];
433 bi->prev[area] = prev;
434 bi->bit_size[area] = 1; // 4 areas 4 bits for EOB :)
435 for (; i < mb_area_start[area + 1]; i = bi->next[i]) {
436 bi->mb[i] >>= 1;
438 if (bi->mb[i]) {
439 bi->bit_size[area] += dv_rl2vlc_size(i - prev - 1, bi->mb[i]);
440 bi->next[prev] = i;
445 bi->next[prev] = i;
448 return bi->bit_size[0] + bi->bit_size[1] +
449 bi->bit_size[2] + bi->bit_size[3];
455 int16_t *blk, EncBlockInfo *bi,
462 bi->area_q[0] = 1;
475 bi->sign[i+0] = (level0>>31)&1;
476 bi->sign[i+1] = (level1>>31)&1;
487 bi->save[i+0] = level0;
488 bi->save[i+1] = level1;
491 if (bi->save[i+0] > max)
492 max = bi->save[i+0];
493 if (bi->save[i+1] > max)
494 max = bi->save[i+1];
498 bi->mb[0] = blk[0];
501 bi->bit_size[0] = 4;
502 bi->bit_size[1] = bi->bit_size[2] = bi->bit_size[3] = 0;
505 bi->min_qlevel = ((max+256) >> 8);
507 bi->area_q[0] = 25; /* set to an "impossible" value */
508 bi->cno = 0;
511 static av_always_inline int dv_init_enc_block(EncBlockInfo* bi, uint8_t *data, int linesize,
516 bi->area_q[0] = bi->area_q[1] = bi->area_q[2] = bi->area_q[3] = 0;
517 bi->partial_bit_count = 0;
518 bi->partial_bit_buffer = 0;
519 bi->cur_ac = 0;
523 s->get_pixels(blk, data, linesize * (1 << bi->dct_mode));
526 bi->dct_mode = dv_guess_dct_mode(s, data, linesize);
528 s->fdct[bi->dct_mode](blk);
534 bi->dct_mode = 0;
544 dv_set_class_number_hd(s, blk, bi,
549 dv_set_class_number_sd(s, blk, bi,
550 bi->dct_mode ? ff_dv_zigzag248_direct : ff_zigzag_direct,
551 bi->dct_mode ? dv_weight_248 : dv_weight_88,
555 return bi->bit_size[0] + bi->bit_size[1] + bi->bit_size[2] + bi->bit_size[3];