Lines Matching defs:pbi

43 void vp8cx_init_de_quantizer(VP8D_COMP *pbi)
46 VP8_COMMON *const pc = & pbi->common;
60 void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
65 VP8_COMMON *const pc = & pbi->common;
98 static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
116 eobtotal = vp8_decode_mb_tokens(pbi, xd);
125 vp8_mb_init_dequantizer(pbi, xd);
130 if(pbi->ec_active)
136 throw_residual = (!pbi->independent_partitions &&
137 pbi->frame_corrupt_residual);
140 if ((mb_idx >= pbi->mvs_corrupt_from_mb || throw_residual))
145 pbi->frame_corrupt_residual = 1;
503 static void decode_mb_rows(VP8D_COMP *pbi)
505 VP8_COMMON *const pc = & pbi->common;
506 MACROBLOCKD *const xd = & pbi->mb;
517 YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
533 YV12_BUFFER_CONFIG *this_fb = pbi->dec_fb_ref[i];
560 xd->current_bc = & pbi->mbc[ibc];
610 int corrupt_residual = (!pbi->independent_partitions &&
611 pbi->frame_corrupt_residual) ||
613 if (pbi->ec_active &&
653 decode_macroblock(pbi, xd, mb_idx);
758 static unsigned int read_partition_size(VP8D_COMP *pbi,
762 if (pbi->decrypt_cb)
764 pbi->decrypt_cb(pbi->decrypt_state, cx_size, temp, 3);
778 VP8D_COMP *pbi,
786 VP8_COMMON* pc = &pbi->common;
798 partition_size = read_partition_size(pbi, partition_size_ptr);
799 else if (pbi->ec_active)
814 if (pbi->ec_active)
825 static void setup_token_decoder(VP8D_COMP *pbi,
828 vp8_reader *bool_decoder = &pbi->mbc[0];
832 const unsigned char *first_fragment_end = pbi->fragments.ptrs[0] +
833 pbi->fragments.sizes[0];
836 (TOKEN_PARTITION)vp8_read_literal(&pbi->mbc[8], 2);
837 if (!vp8dx_bool_error(&pbi->mbc[8]))
838 pbi->common.multi_token_partition = multi_token_partition;
839 num_token_partitions = 1 << pbi->common.multi_token_partition;
843 for (fragment_idx = 0; fragment_idx < pbi->fragments.count; ++fragment_idx)
845 unsigned int fragment_size = pbi->fragments.sizes[fragment_idx];
846 const unsigned char *fragment_end = pbi->fragments.ptrs[fragment_idx] +
854 pbi->fragments.ptrs[0] + 3 * (num_token_partitions - 1);
858 pbi->fragments.sizes[0] = (unsigned int)ext_first_part_size;
862 pbi->fragments.ptrs[fragment_idx] = pbi->fragments.ptrs[0] +
863 pbi->fragments.sizes[0];
870 pbi,
872 pbi->fragments.ptrs[fragment_idx],
877 pbi->fragments.sizes[fragment_idx] = (unsigned int)partition_size;
885 pbi->fragments.ptrs[fragment_idx] =
886 pbi->fragments.ptrs[fragment_idx - 1] + partition_size;
891 pbi->fragments.count = num_token_partitions + 1;
893 for (partition_idx = 1; partition_idx < pbi->fragments.count; ++partition_idx)
896 pbi->fragments.ptrs[partition_idx],
897 pbi->fragments.sizes[partition_idx],
898 pbi->decrypt_cb, pbi->decrypt_state))
899 vpx_internal_error(&pbi->common.error, VPX_CODEC_MEM_ERROR,
908 if (pbi->decoding_thread_count > num_token_partitions - 1)
909 pbi->decoding_thread_count = num_token_partitions - 1;
914 static void init_frame(VP8D_COMP *pbi)
916 VP8_COMMON *const pc = & pbi->common;
917 MACROBLOCKD *const xd = & pbi->mb;
966 if (pbi->decoded_key_frame && pbi->ec_enabled && !pbi->ec_active)
967 pbi->ec_active = 1;
983 int vp8_decode_frame(VP8D_COMP *pbi)
985 vp8_reader *const bc = &pbi->mbc[8];
986 VP8_COMMON *const pc = &pbi->common;
987 MACROBLOCKD *const xd = &pbi->mb;
988 const unsigned char *data = pbi->fragments.ptrs[0];
989 const unsigned char *data_end = data + pbi->fragments.sizes[0];
995 int prev_independent_partitions = pbi->independent_partitions;
997 YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
1005 if (!pbi->ec_active)
1023 if (pbi->decrypt_cb)
1026 pbi->decrypt_cb(pbi->decrypt_state, data, clear_buffer, n);
1036 if (!pbi->ec_active &&
1054 if (!pbi->ec_active || data + 3 < data_end)
1065 if (!pbi->ec_active || data + 6 < data_end)
1080 if ((!pbi->decoded_key_frame && pc->frame_type != KEY_FRAME))
1085 init_frame(pbi);
1088 pbi->decrypt_cb, pbi->decrypt_state))
1195 setup_token_decoder(pbi, data + first_partition_length_in_bytes);
1197 xd->current_bc = &pbi->mbc[0];
1213 vp8cx_init_de_quantizer(pbi);
1216 vp8_mb_init_dequantizer(pbi, &pbi->mb);
1230 if (pbi->ec_active && xd->corrupted)
1238 if (pbi->ec_active && xd->corrupted)
1251 if (pbi->ec_active && xd->corrupted)
1263 if (pbi->ec_active && xd->corrupted)
1277 if (pbi->ec_active && xd->corrupted)
1290 if (pbi->ec_active && xd->corrupted)
1308 pbi->independent_partitions = 1;
1325 pbi->independent_partitions = 0;
1333 vp8_decode_mode_mvs(pbi);
1336 if (pbi->ec_active &&
1337 pbi->mvs_corrupt_from_mb < (unsigned int)pc->mb_cols * pc->mb_rows)
1341 vp8_estimate_missing_mvs(pbi);
1346 pbi->frame_corrupt_residual = 0;
1349 if (pbi->b_multithreaded_rd && pc->multi_token_partition != ONE_PARTITION)
1352 vp8mt_decode_mb_rows(pbi, xd);
1354 for (thread = 0; thread < pbi->decoding_thread_count; ++thread)
1355 corrupt_tokens |= pbi->mb_row_di[thread].mbd.corrupted;
1360 decode_mb_rows(pbi);
1370 if (!pbi->decoded_key_frame)
1374 pbi->decoded_key_frame = 1;
1376 vpx_internal_error(&pbi->common.error, VPX_CODEC_CORRUPT_FRAME,
1380 /* vpx_log("Decoder: Frame Decoded, Size Roughly:%d bytes \n",bc->pos+pbi->bc2.pos); */
1385 pbi->independent_partitions = prev_independent_partitions;
1391 unsigned int size = pbi->bc2.pos + pbi->bc.pos + 8;
1393 fwrite((void *) pbi->Source, size, 1, f);