diff options
-rw-r--r-- | encoder/ih264e_me.c | 2 | ||||
-rw-r--r-- | encoder/ih264e_process.c | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/encoder/ih264e_me.c b/encoder/ih264e_me.c index 6fef9d9..68bdea6 100644 --- a/encoder/ih264e_me.c +++ b/encoder/ih264e_me.c @@ -841,6 +841,8 @@ void ih264e_init_me(process_ctxt_t *ps_proc) /* src ptr */ ps_me_ctxt->pu1_src_buf_luma = ps_proc->pu1_src_buf_luma; + /* src stride */ + ps_me_ctxt->i4_src_strd = ps_proc->i4_src_strd; /* ref ptrs and corresponding lagrange params */ ps_me_ctxt->apu1_ref_buf_luma[0] = ps_proc->apu1_ref_buf_luma[0]; diff --git a/encoder/ih264e_process.c b/encoder/ih264e_process.c index ff48f7e..2c3a18e 100644 --- a/encoder/ih264e_process.c +++ b/encoder/ih264e_process.c @@ -1187,15 +1187,21 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) /* init buffer pointers */ convert_uv_only = 1; - if (u4_pad_bottom_sz && (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1)) + if ((u4_pad_bottom_sz && (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1)) || + ps_codec->s_cfg.e_inp_color_fmt == IV_YUV_422ILE) { - u2_num_rows = (UWORD16) MB_SIZE - u4_pad_bottom_sz; + if (ps_proc->i4_mb_y == ps_proc->i4_ht_mbs - 1) + u2_num_rows = (UWORD16) MB_SIZE - u4_pad_bottom_sz; ps_proc->pu1_src_buf_luma_base = ps_codec->pu1_y_csc_buf_base; + i4_src_strd = ps_proc->i4_src_strd = ps_codec->s_cfg.u4_max_wd; ps_proc->pu1_src_buf_luma = ps_proc->pu1_src_buf_luma_base + (i4_mb_x * MB_SIZE) + ps_codec->s_cfg.u4_max_wd * (i4_mb_y * MB_SIZE); convert_uv_only = 0; } else + { + i4_src_strd = ps_proc->i4_src_strd = ps_proc->s_inp_buf.s_raw_buf.au4_strd[0]; ps_proc->pu1_src_buf_luma = ps_proc->pu1_src_buf_luma_base + (i4_mb_x * MB_SIZE) + i4_src_strd * (i4_mb_y * MB_SIZE); + } if (ps_codec->s_cfg.e_inp_color_fmt == IV_YUV_422ILE || @@ -1207,9 +1213,11 @@ IH264E_ERROR_T ih264e_init_proc_ctxt(process_ctxt_t *ps_proc) ps_proc->pu1_src_buf_chroma_base = ps_codec->pu1_uv_csc_buf_base; ps_proc->pu1_src_buf_chroma = ps_proc->pu1_src_buf_chroma_base + (i4_mb_x * MB_SIZE) + ps_codec->s_cfg.u4_max_wd * (i4_mb_y * BLK8x8SIZE); + i4_src_chroma_strd = ps_proc->i4_src_chroma_strd = ps_codec->s_cfg.u4_max_wd; } else { + i4_src_chroma_strd = ps_proc->i4_src_chroma_strd = ps_proc->s_inp_buf.s_raw_buf.au4_strd[1]; ps_proc->pu1_src_buf_chroma = ps_proc->pu1_src_buf_chroma_base + (i4_mb_x * MB_SIZE) + i4_src_chroma_strd * (i4_mb_y * BLK8x8SIZE); } |