libhevcenc: deblk sao low res race condition

While encoding inputs for size 64 x ht for ht > 64, there is a possible
race condition. Before performing deblocking/sao for current CTB, its
top right CTB is checked for its deblocking/sao completion. This can be
skipped for last CTB of a row, provided you have atleast 2 CTB's per row.
The skip is happening for rows with single CTB as well. This is corrected.

Test: hevcenc -c vid_enc_cfg.txt --src_width 64 --src_height 512 \
--input night_64x512.yuv --num_cores 4
Bug: 135516662

Change-Id: Ifed1ae25e5e460cb59d84533e5ad87730ebb3395
This commit is contained in:
Akshata Jadhav 2019-06-18 18:58:04 +05:30 • committed by Harish Mahendrakar
parent fbcad2ab1b
commit 50408aad50

View file

@ -2436,17 +2436,19 @@ void ihevce_enc_loop_process_row(
if(ps_ctxt->i4_deblk_pad_hpel_cur_pic)
{
/* Wait till top neighbour CTB has done it's deblocking*/
if(ctb_ctr < (ctb_end)-1)
/* for last ctb of a row check top instead of top right */
if(((ctb_ctr + 1) == ctb_end) && (vert_ctr > 0))
{
ihevce_dmgr_chk_row_row_sync(
pv_dep_mngr_enc_loop_dblk,
ctb_ctr,
dblk_offset,
dblk_check_dep_pos,
ps_ctxt->i4_tile_col_idx, /* Col Tile No. */
ps_ctxt->thrd_id);
dblk_offset = 1;
}
/* Wait till top neighbour CTB has done it's deblocking*/
ihevce_dmgr_chk_row_row_sync(
pv_dep_mngr_enc_loop_dblk,
ctb_ctr,
dblk_offset,
dblk_check_dep_pos,
ps_ctxt->i4_tile_col_idx, /* Col Tile No. */
ps_ctxt->thrd_id);
if((0 == ps_ctxt->i4_deblock_type))
{