libhevcdec: iquant-itrans issue in chroma planes

Misplaced local array on stack is resulting in color artifacts in
decoded yuv. It worked so far, because the array luma_nbr_flags_4x4[]
was always allocated on the same address and thus preserved values from
previous iteration.

Bug: 148157334
Test: atest android.media.cts.HeifWriterTest
Change-Id: Ic2b1964895bf26101508ff2ac82a94192b7b74f8
This commit is contained in:
Akshata Jadhav 2020-01-27 18:47:45 +05:30 • committed by akshata jadhav
parent 3fac63c9b7
commit 445e0d8d5e

View file

@ -542,6 +542,7 @@ WORD32 ihevcd_iquant_itrans_recon_ctb(process_ctxt_t *ps_proc)
WORD16 *pi2_tmp;
WORD32 pic_strd;
WORD32 luma_nbr_flags;
WORD32 luma_nbr_flags_4x4[4] = { 0 };
WORD32 chroma_nbr_flags = 0;
UWORD8 u1_luma_pred_mode_first_tu = 0;
/* Pointers for generating 2d coeffs from coeff-map */
@ -678,7 +679,6 @@ WORD32 ihevcd_iquant_itrans_recon_ctb(process_ctxt_t *ps_proc)
WORD32 tu_y_offset, tu_uv_offset;
WORD8 i1_chroma_pic_qp_offset, i1_chroma_slice_qp_offset;
UWORD8 u1_cbf = 0, u1_cbf_v = 0, u1_luma_pred_mode, u1_chroma_pred_mode;
WORD32 luma_nbr_flags_4x4[4];
WORD32 offset;
WORD32 pcm_flag;
WORD32 chroma_yuv420sp_vu = (ps_codec->e_ref_chroma_fmt == IV_YUV_420SP_VU);