From 860f75203e35283c03d6cd75dfddec88db12a51b Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Thu, 2 Jul 2015 12:06:04 +0300 Subject: [PATCH] Always do recon of 4x4 intra blocks Even if this 4x4 block isn't at the bottom or right border, the other 4x4 intra blocks within the same macroblock may use it for intra prediction. This fixes intra coded macroblocks in b-frames. Bug: 22860270 Change-Id: Ifdf48c1b2bbf232e785d6d5b8244aacba1ad3dd6 --- encoder/ih264e_core_coding.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/encoder/ih264e_core_coding.c b/encoder/ih264e_core_coding.c index 76266d7..5b36aef 100644 --- a/encoder/ih264e_core_coding.c +++ b/encoder/ih264e_core_coding.c @@ -1823,27 +1823,19 @@ UWORD8 ih264e_code_luma_intra_macroblock_4x4(process_ctxt_t *ps_proc) /* itransform */ /* iquantization */ /********************************************************/ - /* If the frame is not to be used for P frame reference or dumping recon - * we only will use the recon for only predicting intra Mbs - * This will need only right and bottom edge 4x4 blocks recon - * Hence we selectively enable them - */ - if (ps_proc->u4_compute_recon || (0xF888 & (1 << ((b8 << 2) + b4)))) - { - if (u1_nnz) - ps_codec->pf_iquant_itrans_recon_4x4( - pi2_res_mb, pu1_pred_mb, pu1_ref_mb, - /*No input stride,*/i4_pred_strd, - i4_rec_strd, ps_qp_params->pu2_iscale_mat, - ps_qp_params->pu2_weigh_mat, - ps_qp_params->u1_qp_div, - ps_proc->pv_scratch_buff, 0, 0); - else - ps_codec->pf_inter_pred_luma_copy(pu1_pred_mb, pu1_ref_mb, - i4_pred_strd, i4_rec_strd, - BLK_SIZE, BLK_SIZE, NULL, - 0); - } + if (u1_nnz) + ps_codec->pf_iquant_itrans_recon_4x4( + pi2_res_mb, pu1_pred_mb, pu1_ref_mb, + /*No input stride,*/i4_pred_strd, + i4_rec_strd, ps_qp_params->pu2_iscale_mat, + ps_qp_params->pu2_weigh_mat, + ps_qp_params->u1_qp_div, + ps_proc->pv_scratch_buff, 0, 0); + else + ps_codec->pf_inter_pred_luma_copy(pu1_pred_mb, pu1_ref_mb, + i4_pred_strd, i4_rec_strd, + BLK_SIZE, BLK_SIZE, NULL, + 0); }