Home | History | Annotate | Download | only in decoder

Lines Matching refs:pbi

40 void vp8cx_init_de_quantizer(VP8D_COMP *pbi)
43 VP8_COMMON *const pc = & pbi->common;
57 void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
62 VP8_COMMON *const pc = & pbi->common;
96 static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
112 eobtotal = vp8_decode_mb_tokens(pbi, xd);
121 vp8_mb_init_dequantizer(pbi, xd);
126 if(pbi->ec_active)
132 throw_residual = (!pbi->independent_partitions &&
133 pbi->frame_corrupt_residual);
136 if ((mb_idx >= pbi->mvs_corrupt_from_mb || throw_residual))
141 pbi->frame_corrupt_residual = 1;
499 static void decode_mb_rows(VP8D_COMP *pbi)
501 VP8_COMMON *const pc = & pbi->common;
502 MACROBLOCKD *const xd = & pbi->mb;
513 YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
529 YV12_BUFFER_CONFIG *this_fb = pbi->dec_fb_ref[i];
556 xd->current_bc = & pbi->mbc[ibc];
606 int corrupt_residual = (!pbi->independent_partitions &&
607 pbi->frame_corrupt_residual) ||
609 if (pbi->ec_active &&
641 decode_macroblock(pbi, xd, mb_idx);
746 static unsigned int read_partition_size(VP8D_COMP *pbi,
750 if (pbi->decrypt_cb)
752 pbi->decrypt_cb(pbi->decrypt_state, cx_size, temp, 3);
766 VP8D_COMP *pbi,
774 VP8_COMMON* pc = &pbi->common;
786 partition_size = read_partition_size(pbi, partition_size_ptr);
787 else if (pbi->ec_active)
802 if (pbi->ec_active)
813 static void setup_token_decoder(VP8D_COMP *pbi,
816 vp8_reader *bool_decoder = &pbi->mbc[0];
820 const unsigned char *first_fragment_end = pbi->fragments.ptrs[0] +
821 pbi->fragments.sizes[0];
824 (TOKEN_PARTITION)vp8_read_literal(&pbi->mbc[8], 2);
825 if (!vp8dx_bool_error(&pbi->mbc[8]))
826 pbi->common.multi_token_partition = multi_token_partition;
827 num_token_partitions = 1 << pbi->common.multi_token_partition;
831 for (fragment_idx = 0; fragment_idx < pbi->fragments.count; ++fragment_idx)
833 unsigned int fragment_size = pbi->fragments.sizes[fragment_idx];
834 const unsigned char *fragment_end = pbi->fragments.ptrs[fragment_idx] +
842 pbi->fragments.ptrs[0] + 3 * (num_token_partitions - 1);
846 pbi->fragments.sizes[0] = (unsigned int)ext_first_part_size;
850 pbi->fragments.ptrs[fragment_idx] = pbi->fragments.ptrs[0] +
851 pbi->fragments.sizes[0];
858 pbi,
860 pbi->fragments.ptrs[fragment_idx],
865 pbi->fragments.sizes[fragment_idx] = (unsigned int)partition_size;
873 pbi->fragments.ptrs[fragment_idx] =
874 pbi->fragments.ptrs[fragment_idx - 1] + partition_size;
879 pbi->fragments.count = num_token_partitions + 1;
881 for (partition_idx = 1; partition_idx < pbi->fragments.count; ++partition_idx)
884 pbi->fragments.ptrs[partition_idx],
885 pbi->fragments.sizes[partition_idx],
886 pbi->decrypt_cb, pbi->decrypt_state))
887 vpx_internal_error(&pbi->common.error, VPX_CODEC_MEM_ERROR,
896 if (pbi->decoding_thread_count > num_token_partitions - 1)
897 pbi->decoding_thread_count = num_token_partitions - 1;
902 static void init_frame(VP8D_COMP *pbi)
904 VP8_COMMON *const pc = & pbi->common;
905 MACROBLOCKD *const xd = & pbi->mb;
954 if (pbi->decoded_key_frame && pbi->ec_enabled && !pbi->ec_active)
955 pbi->ec_active = 1;
971 int vp8_decode_frame(VP8D_COMP *pbi)
973 vp8_reader *const bc = &pbi->mbc[8];
974 VP8_COMMON *const pc = &pbi->common;
975 MACROBLOCKD *const xd = &pbi->mb;
976 pbi->fragments.ptrs[0];
977 const unsigned char *data_end = data + pbi->fragments.sizes[0];
983 int prev_independent_partitions = pbi->independent_partitions;
985 YV12_BUFFER_CONFIG *yv12_fb_new = pbi->dec_fb_ref[INTRA_FRAME];
993 if (!pbi->ec_active)
1011 if (pbi->decrypt_cb)
1015 pbi->decrypt_cb(pbi->decrypt_state, data, clear_buffer, n);
1025 if (!pbi->ec_active &&
1043 if (!pbi->ec_active || data + 3 < data_end)
1054 if (!pbi->ec_active || data + 6 < data_end)
1070 if ((!pbi->decoded_key_frame && pc->frame_type != KEY_FRAME))
1075 init_frame(pbi);
1078 pbi->decrypt_cb, pbi->decrypt_state))
1185 setup_token_decoder(pbi, data + first_partition_length_in_bytes);
1187 xd->current_bc = &pbi->mbc[0];
1203 vp8cx_init_de_quantizer(pbi);
1206 vp8_mb_init_dequantizer(pbi, &pbi->mb);
1220 if (pbi->ec_active && xd->corrupted)
1228 if (pbi->ec_active && xd->corrupted)
1241 if (pbi->ec_active && xd->corrupted)
1253 if (pbi->ec_active && xd->corrupted)
1267 if (pbi->ec_active && xd->corrupted)
1280 if (pbi->ec_active && xd->corrupted)
1298 pbi->independent_partitions = 1;
1315 pbi->independent_partitions = 0;
1323 vp8_decode_mode_mvs(pbi);
1326 if (pbi->ec_active &&
1327 pbi->mvs_corrupt_from_mb < (unsigned int)pc->mb_cols * pc->mb_rows)
1331 vp8_estimate_missing_mvs(pbi);
1336 pbi->frame_corrupt_residual = 0;
1339 if (pbi->b_multithreaded_rd && pc->multi_token_partition != ONE_PARTITION)
1342 vp8mt_decode_mb_rows(pbi, xd);
1344 for (thread = 0; thread < pbi->decoding_thread_count; ++thread)
1345 corrupt_tokens |= pbi->mb_row_di[thread].mbd.corrupted;
1350 decode_mb_rows(pbi);
1360 if (!pbi->decoded_key_frame)
1364 pbi->decoded_key_frame = 1;
1366 vpx_internal_error(&pbi->common.error, VPX_CODEC_CORRUPT_FRAME,
1370 /* vpx_log("Decoder: Frame Decoded, Size Roughly:%d bytes \n",bc->pos+pbi->bc2.pos); */
1375 pbi->independent_partitions = prev_independent_partitions;
1381 unsigned int size = pbi->bc2.pos + pbi->bc.pos + 8;
1383 fwrite((void *) pbi->Source, size, 1, f);