Lines Matching refs:bi
116 static int get_block_info(BlockInfo *bi, int block)
118 bi->row = block / bi->blocks_per_row;
119 bi->col = block % bi->blocks_per_row;
122 if (bi->col == bi->blocks_per_row - 1 && (bi->image_width % 4) != 0) {
123 bi->block_width = bi->image_width % 4;
125 bi->block_width = 4;
129 if (bi->row == (bi->image_height / 4) && (bi->image_height % 4) != 0) {
130 bi->block_height = bi->image_height % 4;
132 bi->block_height = 4;
135 return block ? (bi->col * 4) + (bi->row * bi->rowstride * 4) : 0;
195 static void get_max_component_diff(BlockInfo *bi, uint16_t *block_ptr,
207 for (y = 0; y < bi->block_height; y++) {
208 for (x = 0; x < bi->block_width; x++) {
218 block_ptr += bi->rowstride;
245 static int compare_blocks(uint16_t *block1, uint16_t *block2, BlockInfo *bi, int thresh)
248 for (y = 0; y < bi->block_height; y++) {
249 for (x = 0; x < bi->block_width; x++) {
255 block1 += bi->rowstride;
256 block2 += bi->rowstride;
265 static int leastsquares(uint16_t *block_ptr, BlockInfo *bi,
274 count = bi->block_height * bi->block_width;
279 for (i = 0; i < bi->block_height; i++) {
280 for (j = 0; j < bi->block_width; j++) {
289 block_ptr += bi->rowstride;
318 static int calc_lsq_max_fit_error(uint16_t *block_ptr, BlockInfo *bi,
326 for (i = 0; i < bi->block_height; i++) {
327 for (j = 0; j < bi->block_width; j++) {
350 block_ptr += bi->rowstride;
387 PutBitContext *pb, uint16_t *block_ptr, BlockInfo *bi)
410 block_ptr += bi->rowstride;
420 const BlockInfo *bi, int block_counter)
422 const int y_size = FFMIN(4, bi->image_height - bi->row * 4);
426 dest_pixels += bi->rowstride;
427 src_pixels += bi->rowstride;
446 static int update_block_stats(RpzaContext *s, BlockInfo *bi, uint16_t *block,
489 total_pixels_blk = *total_pixels + bi->block_height * bi->block_width;
494 for (y = 0; y < bi->block_height; y++) {
495 for (x = 0; x < bi->block_width; x++) {
508 block += bi->rowstride;
552 BlockInfo bi;
573 bi.image_width = s->frame_width;
574 bi.image_height = s->frame_height;
575 bi.rowstride = pict->linesize[0] / 2;
577 bi.blocks_per_row = (s->frame_width + 3) / 4;
589 block_offset = get_block_info(&bi, block_counter + n_blocks);
593 /* TODO: Should eventually use bi.row here to determine when a
605 &src_pixels[block_offset], &bi, s->skip_frame_thresh) != 0) {
625 // &prev_pixels[block_offset], &bi, block_counter + n_blocks);
641 block_offset = get_block_info(&bi, block_counter);
646 if (update_block_stats(s, &bi, &src_pixels[block_offset],
655 &prev_pixels[block_offset], &bi, block_counter + n_blocks);
659 block_offset = get_block_info(&bi, block_counter + n_blocks);
667 if (!update_block_stats(s, &bi, &src_pixels[block_offset],
677 &prev_pixels[block_offset], &bi, block_counter + n_blocks);
692 get_max_component_diff(&bi, &src_pixels[block_offset], &min, &max, &chan);
711 if (leastsquares(&src_pixels[block_offset], &bi, chan, i,
724 err = FFMAX(calc_lsq_max_fit_error(&src_pixels[block_offset], &bi,
736 block_offset = get_block_info(&bi, block_counter);
739 y_size = FFMIN(4, bi.image_height - bi.row * 4);
740 x_size = FFMIN(4, bi.image_width - bi.col * 4);
750 row_ptr += bi.rowstride;
761 &s->pb, &src_pixels[block_offset], &bi);
766 &prev_pixels[block_offset], &bi, block_counter);