Merge sc-dev-plus-aosp-without-vendor@7634622

Merged-In: Iaa58fca12b868b2bcbf80d8c57b1199d3f5906eb
Change-Id: I52a5f915b9bb31f432c4ad55ae4117ff4ddceb54
This commit is contained in:
Xin Li 2021-08-14 06:30:56 +00:00
commit 1603a390d9
2 changed files with 31 additions and 18 deletions

View file

@ -1435,17 +1435,20 @@ WORD32 ih264d_parse_decode_slice(UWORD8 u1_is_idr_slice,
i1_is_end_of_poc = 0;
}
if (ps_dec->u4_first_slice_in_pic == 0)
/* Increment only if the current slice has atleast 1 more MB */
if (ps_dec->u4_first_slice_in_pic == 0 &&
(ps_dec->ps_parse_cur_slice->u4_first_mb_in_slice <
(UWORD32)(ps_dec->u2_total_mbs_coded >> ps_dec->ps_cur_slice->u1_mbaff_frame_flag)))
{
ps_dec->ps_parse_cur_slice++;
ps_dec->u2_cur_slice_num++;
// in the case of single core increment ps_decode_cur_slice
if(ps_dec->u1_separate_parse == 0)
{
ps_dec->ps_decode_cur_slice++;
}
}
// in the case of single core increment ps_decode_cur_slice
if((ps_dec->u1_separate_parse == 0) && (ps_dec->u4_first_slice_in_pic == 0))
{
ps_dec->ps_decode_cur_slice++;
}
ps_dec->u1_slice_header_done = 0;

View file

@ -1259,7 +1259,8 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc)
/* init buffer pointers */
convert_uv_only = 1;
if (u4_pad_bottom_sz || u4_pad_right_sz ||
ps_codec->s_cfg.e_inp_color_fmt == IV_YUV_422ILE)
ps_codec->s_cfg.e_inp_color_fmt == IV_YUV_422ILE ||
ps_proc->i4_mb_y == (ps_proc->i4_ht_mbs - 1))
{
if (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1)
u2_num_rows = (UWORD16) MB_SIZE - u4_pad_bottom_sz;
@ -1311,7 +1312,7 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc)
case IV_YUV_420SP_UV:
case IV_YUV_420SP_VU:
/* In case of 420 semi-planar input, copy last few rows to intermediate
buffer as chroma trans functions access one extra byte due to interleaved input.
buffer as few SIMD functions access upto 16 more bytes.
This data will be padded if required */
if (ps_proc->i4_mb_y == (ps_proc->i4_ht_mbs - 1) || u4_pad_bottom_sz || u4_pad_right_sz)
{
@ -1324,16 +1325,13 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc)
pu1_dst = ps_proc->pu1_src_buf_luma;
/* If padding is required, we always copy luma, if padding isn't required we never copy luma. */
if (u4_pad_bottom_sz || u4_pad_right_sz) {
if (ps_proc->i4_mb_y == (ps_proc->i4_ht_mbs - 1))
num_rows = MB_SIZE - u4_pad_bottom_sz;
for (i = 0; i < num_rows; i++)
{
memcpy(pu1_dst, pu1_src, ps_codec->s_cfg.u4_wd);
pu1_src += ps_proc->s_inp_buf.s_raw_buf.au4_strd[0];
pu1_dst += ps_proc->i4_src_strd;
}
if (ps_proc->i4_mb_y == (ps_proc->i4_ht_mbs - 1))
num_rows = MB_SIZE - u4_pad_bottom_sz;
for (i = 0; i < num_rows; i++)
{
memcpy(pu1_dst, pu1_src, ps_codec->s_cfg.u4_wd);
pu1_src += ps_proc->s_inp_buf.s_raw_buf.au4_strd[0];
pu1_dst += ps_proc->i4_src_strd;
}
pu1_src = (UWORD8 *)ps_proc->s_inp_buf.s_raw_buf.apv_bufs[1] + (i4_mb_x * BLK8x8SIZE) +
ps_proc->s_inp_buf.s_raw_buf.au4_strd[1] * (i4_mb_y * BLK8x8SIZE);
@ -1414,6 +1412,18 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc)
ps_proc->i4_src_chroma_strd, u4_pad_ht / 2, u4_pad_wd);
}
if (ps_proc->i4_mb_y && ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1) {
UWORD8 *pu1_src = (UWORD8 *)ps_proc->s_inp_buf.s_raw_buf.apv_bufs[0] +
ps_proc->s_inp_buf.s_raw_buf.au4_strd[0] * (i4_mb_y * MB_SIZE) -
ps_proc->s_inp_buf.s_raw_buf.au4_strd[0];
UWORD8 *pu1_dst = ps_proc->pu1_src_buf_luma - ps_proc->i4_src_strd;
memcpy(pu1_dst, pu1_src, ps_codec->s_cfg.u4_wd);
if (u4_pad_right_sz && (ps_proc->i4_mb_x == 0)) {
pu1_dst += ps_codec->s_cfg.u4_disp_wd;
memset(pu1_dst, pu1_dst[-1], u4_pad_right_sz);
}
}
/* pad bottom edge */
if (u4_pad_bottom_sz && (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1) && ps_proc->i4_mb_x == 0)
{