From 50408aad50606c6da4a5068b40ff8cb83f375c82 Mon Sep 17 00:00:00 2001 From: Akshata Jadhav Date: Tue, 18 Jun 2019 18:58:04 +0530 Subject: [PATCH] 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 --- encoder/ihevce_enc_loop_pass.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/encoder/ihevce_enc_loop_pass.c b/encoder/ihevce_enc_loop_pass.c index f1cb79c..64c1839 100644 --- a/encoder/ihevce_enc_loop_pass.c +++ b/encoder/ihevce_enc_loop_pass.c @@ -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)) {