Home | History | Annotate | Download | only in decoder

Lines Matching defs:xd

64 void mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd)
68 MB_MODE_INFO *mbmi = &xd->mode_info_context->mbmi;
72 if (xd->segmentation_enabled)
75 if (xd->mb_segement_abs_delta == SEGMENT_ABSDATA)
76 QIndex = xd->segment_feature_data[MB_LVL_ALT_Q][mbmi->segment_id];
81 QIndex = pc->base_qindex + xd->segment_feature_data[MB_LVL_ALT_Q][mbmi->segment_id];
91 xd->block[i].dequant = pc->Y1dequant[QIndex];
96 xd->block[i].dequant = pc->UVdequant[QIndex];
99 xd->block[24].dequant = pc->Y2dequant[QIndex];
112 static void skip_recon_mb(VP8D_COMP *pbi, MACROBLOCKD *xd)
114 if (xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME)
117 vp8_build_intra_predictors_mbuv_s(xd);
119 build_intra_predictors_mby_s)(xd);
123 vp8_build_inter_predictors_mb_s(xd);
127 static void clamp_mv_to_umv_border(MV *mv, const MACROBLOCKD *xd)
138 if (mv->col < (xd->mb_to_left_edge - (19 << 3)))
139 mv->col = xd->mb_to_left_edge - (16 << 3);
140 else if (mv->col > xd->mb_to_right_edge + (18 << 3))
141 mv->col = xd->mb_to_right_edge + (16 << 3);
143 if (mv->row < (xd->mb_to_top_edge - (19 << 3)))
144 mv->row = xd->mb_to_top_edge - (16 << 3);
145 else if (mv->row > xd->mb_to_bottom_edge + (18 << 3))
146 mv->row = xd->mb_to_bottom_edge + (16 << 3);
150 static void clamp_uvmv_to_umv_border(MV *mv, const MACROBLOCKD *xd)
152 mv->col = (2*mv->col < (xd->mb_to_left_edge - (19 << 3))) ? (xd->mb_to_left_edge - (16 << 3)) >> 1 : mv->col;
153 mv->col = (2*mv->col > xd->mb_to_right_edge + (18 << 3)) ? (xd->mb_to_right_edge + (16 << 3)) >> 1 : mv->col;
155 mv->row = (2*mv->row < (xd->mb_to_top_edge - (19 << 3))) ? (xd->mb_to_top_edge - (16 << 3)) >> 1 : mv->row;
156 mv->row = (2*mv->row > xd->mb_to_bottom_edge + (18 << 3)) ? (xd->mb_to_bottom_edge + (16 << 3)) >> 1 : mv->row;
159 void clamp_mvs(MACROBLOCKD *xd)
161 if (xd->mode_info_context->mbmi.mode == SPLITMV)
166 clamp_mv_to_umv_border(&xd->block[i].bmi.mv.as_mv, xd);
168 clamp_uvmv_to_umv_border(&xd->block[i].bmi.mv.as_mv, xd);
172 clamp_mv_to_umv_border(&xd->mode_info_context->mbmi.mv.as_mv, xd);
173 clamp_uvmv_to_umv_border(&xd->block[16].bmi.mv.as_mv, xd);
178 static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd)
181 int i, do_clamp = xd->mode_info_context->mbmi.need_to_clamp_mvs;
183 if (xd->mode_info_context->mbmi.mb_skip_coeff)
185 vp8_reset_mb_tokens_context(xd);
189 eobtotal = vp8_decode_mb_tokens(pbi, xd);
195 clamp_mvs(xd);
198 xd->mode_info_context->mbmi.dc_diff = 1;
200 if (xd->mode_info_context->mbmi.mode != B_PRED && xd->mode_info_context->mbmi.mode != SPLITMV && eobtotal == 0)
202 xd->mode_info_context->mbmi.dc_diff = 0;
203 skip_recon_mb(pbi, xd);
207 if (xd->segmentation_enabled)
208 mb_init_dequantizer(pbi, xd);
211 if (xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME)
213 vp8_build_intra_predictors_mbuv(xd);
215 if (xd->mode_info_context->mbmi.mode != B_PRED)
218 build_intra_predictors_mby)(xd);
220 vp8_intra_prediction_down_copy(xd);
225 vp8_build_inter_predictors_mb(xd);
229 if (xd->mode_info_context->mbmi.mode != B_PRED && xd->mode_info_context->mbmi.mode != SPLITMV)
231 BLOCKD *b = &xd->block[24];
235 if (xd->eobs[24] > 1)
254 (xd->qcoeff, xd->block[0].dequant,
255 xd->predictor, xd->dst.y_buffer,
256 xd->dst.y_stride, xd->eobs, xd->block[24].diff);
258 else if ((xd->frame_type == KEY_FRAME || xd->mode_info_context->mbmi.ref_frame == INTRA_FRAME) && xd->mode_info_context->mbmi.mode == B_PRED)
263 BLOCKD *b = &xd->block[i];
266 if (xd->eobs[i] > 1)
285 (xd->qcoeff, xd->block[0].dequant,
286 xd->predictor, xd->dst.y_buffer,
287 xd->dst.y_stride, xd->eobs);
291 (xd->qcoeff+16*16, xd->block[16].dequant,
292 xd->predictor+16*16, xd->dst.u_buffer, xd->dst.v_buffer,
293 xd->dst.uv_stride, xd->eobs+16);
324 decode_mb_row(VP8D_COMP *pbi, VP8_COMMON *pc, int mb_row, MACROBLOCKD *xd)
340 xd->above_context = pc->above_context;
341 xd->up_available = (mb_row != 0);
343 xd->mb_to_top_edge = -((mb_row * 16)) << 3;
344 xd->mb_to_bottom_edge = ((pc->mb_rows - 1 - mb_row) * 16) << 3;
349 if (xd->mode_info_context->mbmi.mode == SPLITMV || xd->mode_info_context->mbmi.mode == B_PRED)
353 BLOCKD *d = &xd->block[i];
354 vpx_memcpy(&d->bmi, &xd->mode_info_context->bmi[i], sizeof(B_MODE_INFO));
361 xd->mb_to_left_edge = -((mb_col * 16) << 3);
362 xd->mb_to_right_edge = ((pc->mb_cols - 1 - mb_col) * 16) << 3;
364 xd->dst.y_buffer = pc->yv12_fb[dst_fb_idx].y_buffer + recon_yoffset;
365 xd->dst.u_buffer = pc->yv12_fb[dst_fb_idx].u_buffer + recon_uvoffset;
366 xd->dst.v_buffer = pc->yv12_fb[dst_fb_idx].v_buffer + recon_uvoffset;
368 xd->left_available = (mb_col != 0);
371 if (xd->mode_info_context->mbmi.ref_frame == LAST_FRAME)
373 else if (xd->mode_info_context->mbmi.ref_frame == GOLDEN_FRAME)
378 xd->pre.y_buffer = pc->yv12_fb[ref_fb_idx].y_buffer + recon_yoffset;
379 xd->pre.u_buffer = pc->yv12_fb[ref_fb_idx].u_buffer + recon_uvoffset;
380 xd->pre.v_buffer = pc->yv12_fb[ref_fb_idx].v_buffer + recon_uvoffset;
382 if (xd->mode_info_context->mbmi.ref_frame != INTRA_FRAME)
385 xd->corrupted |= pc->yv12_fb[ref_fb_idx].corrupted;
388 vp8_build_uvmvs(xd, pc->full_pixel);
396 decode_macroblock(pbi, xd);
399 xd->corrupted |= vp8dx_bool_error(xd->current_bc);
404 ++xd->mode_info_context; /* next mb */
406 xd->above_context++;
413 xd->dst.y_buffer + 16, xd->dst.u_buffer + 8, xd->dst.v_buffer + 8
416 ++xd->mode_info_context; /* skip prediction column */
504 MACROBLOCKD *const xd = & pbi->mb;
517 vpx_memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
518 xd->mb_segement_abs_delta = SEGMENT_DELTADATA;
521 xd->ref_lf_deltas, 0, sizeof(xd->ref_lf_deltas));
522 vpx_memset(xd->mode_lf_deltas, 0, sizeof(xd->mode_lf_deltas));
546 xd->subpixel_predict = SUBPIX_INVOKE(RTCD_VTABLE(subpix), sixtap4x4);
547 xd->subpixel_predict8x4 = SUBPIX_INVOKE(RTCD_VTABLE(subpix), sixtap8x4);
548 xd->subpixel_predict8x8 = SUBPIX_INVOKE(RTCD_VTABLE(subpix), sixtap8x8);
549 xd->subpixel_predict16x16 = SUBPIX_INVOKE(RTCD_VTABLE(subpix), sixtap16x16);
553 xd->subpixel_predict = SUBPIX_INVOKE(RTCD_VTABLE(subpix), bilinear4x4);
554 xd->subpixel_predict8x4 = SUBPIX_INVOKE(RTCD_VTABLE(subpix), bilinear8x4);
555 xd->subpixel_predict8x8 = SUBPIX_INVOKE(RTCD_VTABLE(subpix), bilinear8x8);
556 xd->subpixel_predict16x16 = SUBPIX_INVOKE(RTCD_VTABLE(subpix), bilinear16x16);
560 xd->left_context = &pc->left_context;
561 xd->mode_info_context = pc->mi;
562 xd->frame_type = pc->frame_type;
563 xd->mode_info_context->mbmi.mode = DC_PRED;
564 xd->mode_info_stride = pc->mode_info_stride;
565 xd->corrupted = 0; /* init without corruption */
572 MACROBLOCKD *const xd = & pbi->mb;
582 xd->corrupted = 0;
662 xd->segmentation_enabled = (unsigned char)vp8_read_bit(bc);
664 if (xd->segmentation_enabled)
667 xd->update_mb_segmentation_map = (unsigned char)vp8_read_bit(bc);
668 xd->update_mb_segmentation_data = (unsigned char)vp8_read_bit(bc);
670 if (xd->update_mb_segmentation_data)
672 xd->mb_segement_abs_delta = (unsigned char)vp8_read_bit(bc);
674 vpx_memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
684 xd->segment_feature_data[i][j] = (signed char)vp8_read_literal(bc, mb_feature_data_bits[i]);
687 xd->segment_feature_data[i][j] = -xd->segment_feature_data[i][j];
690 xd->segment_feature_data[i][j] = 0;
695 if (xd->update_mb_segmentation_map)
698 vpx_memset(xd->mb_segment_tree_probs, 255, sizeof(xd->mb_segment_tree_probs));
705 xd->mb_segment_tree_probs[i] = (vp8_prob)vp8_read_literal(bc, 8);
716 xd->mode_ref_lf_delta_update = 0;
717 xd->mode_ref_lf_delta_enabled = (unsigned char)vp8_read_bit(bc);
719 if (xd->mode_ref_lf_delta_enabled)
722 xd->mode_ref_lf_delta_update = (unsigned char)vp8_read_bit(bc);
724 if (xd->mode_ref_lf_delta_update)
732 xd->ref_lf_deltas[i] = (signed char)vp8_read_literal(bc, 6);
735 xd->ref_lf_deltas[i] = xd->ref_lf_deltas[i] * -1;
745 xd->mode_lf_deltas[i] = (signed char)vp8_read_literal(bc, 6);
748 xd->mode_lf_deltas[i] = xd->mode_lf_deltas[i] * -1;
755 xd->current_bc = &pbi->bc2;
843 vpx_memcpy(&xd->pre, &pc->yv12_fb[pc->lst_fb_idx], sizeof(YV12_BUFFER_CONFIG));
844 vpx_memcpy(&xd->dst, &pc->yv12_fb[pc->new_fb_idx], sizeof(YV12_BUFFER_CONFIG));
852 vp8_setup_block_dptrs(xd);
854 vp8_build_block_doffsets(xd);
857 vpx_memset(xd->qcoeff, 0, sizeof(xd->qcoeff));
867 vpx_memcpy(&xd->block[0].bmi, &xd->mode_info_context->bmi[0], sizeof(B_MODE_INFO));
872 vp8mt_decode_mb_rows(pbi, xd);
895 xd->current_bc = & pbi->mbc[ibc];
902 decode_mb_row(pbi, pc, mb_row, xd);
915 xd->corrupted;