@@ -375,7 +375,7 @@ static double enc_block_rdo_slow(oapve_ctx_t *ctx, oapve_core_t *core, int log2_
375375
376376 int best_cost = INT_MAX ;
377377 int zero_dist = 0 ;
378- const u16 * scanp = oapv_tbl_scan ;
378+ const u8 * scanp = oapv_tbl_scan ;
379379 const int map_idx_diff [15 ] = { 0 , -1 , 1 , -2 , 2 , -3 , 3 , -4 , 4 , -5 , 5 , -6 , 6 , -7 , 7 };
380380 double lambda = 0.57 * pow (2.0 , (qp - 12.0 ) / 3.0 );
381381
@@ -525,7 +525,7 @@ static double enc_block_rdo_placebo(oapve_ctx_t* ctx, oapve_core_t* core, int lo
525525 s16 * best_recon = core -> coef_rec ;
526526
527527 double best_cost = INT_MAX ;
528- const u16 * scanp = oapv_tbl_scan ;
528+ const u8 * scanp = oapv_tbl_scan ;
529529
530530 oapv_mcpy (org , core -> coef , sizeof (s16 ) * OAPV_BLK_D );
531531 oapv_trans (ctx , core -> coef , log2_w , log2_h , bit_depth );
@@ -752,8 +752,8 @@ static int enc_tile_comp(oapv_bs_t *bs, oapve_tile_t *tile, oapve_ctx_t *ctx, oa
752752 ctx -> fn_imgb_to_blk [c ](o16 , OAPV_BLK_W , OAPV_BLK_H , s_org , blk_x , (OAPV_BLK_W << 1 ), core -> coef , ctx -> bit_depth );
753753
754754 ctx -> fn_enc_blk (ctx , core , OAPV_LOG2_BLK_W , OAPV_LOG2_BLK_H , c );
755- oapve_vlc_dc_coeff (ctx , core , bs , core -> dc_diff , c );
756- oapve_vlc_ac_coeff (ctx , core , bs , core -> coef , 0 , c );
755+ oapve_vlc_dc_coef (ctx , core , bs , core -> dc_diff , c );
756+ oapve_vlc_ac_coef (ctx , core , bs , core -> coef , 0 , c );
757757 DUMP_COEF (core -> coef , OAPV_BLK_D , blk_x , blk_y , c );
758758
759759 if (rec != NULL ) {
@@ -1613,12 +1613,15 @@ static int dec_tile_comp(oapvd_tile_t *tile, oapvd_ctx_t *ctx, oapvd_core_t *cor
16131613 for (mb_x = le ; mb_x < ri ; mb_x += mb_w ) {
16141614 for (blk_y = mb_y ; blk_y < (mb_y + mb_h ); blk_y += OAPV_BLK_H ) {
16151615 for (blk_x = mb_x ; blk_x < (mb_x + mb_w ); blk_x += OAPV_BLK_W ) {
1616+ // clear coefficient buffers in a macroblock
1617+ oapv_mset_x128 (core -> coef , 0 , sizeof (s16 )* OAPV_MB_D );
1618+
16161619 // parse DC coefficient
1617- ret = oapvd_vlc_dc_coeff ( ctx , core , bs , & core -> dc_diff , c );
1620+ ret = oapvd_vlc_dc_coef ( bs , & core -> dc_diff , & core -> kparam_dc [ c ] );
16181621 oapv_assert_rv (OAPV_SUCCEEDED (ret ), ret );
16191622
16201623 // parse AC coefficient
1621- ret = oapvd_vlc_ac_coeff ( ctx , core , bs , core -> coef , c );
1624+ ret = oapvd_vlc_ac_coef ( bs , core -> coef , & core -> kparam_ac [ c ] );
16221625 oapv_assert_rv (OAPV_SUCCEEDED (ret ), ret );
16231626 DUMP_COEF (core -> coef , OAPV_BLK_D , blk_x , blk_y , c );
16241627
@@ -1657,8 +1660,8 @@ static int dec_tile(oapvd_core_t *core, oapvd_tile_t *tile)
16571660 int dq_scale = oapv_tbl_dq_scale [core -> qp [c ] % 6 ];
16581661 core -> dq_shift [c ] = ctx -> bit_depth - 2 - (core -> qp [c ] / 6 );
16591662
1660- core -> prev_dc_ctx [c ] = 20 ;
1661- core -> prev_1st_ac_ctx [c ] = 0 ;
1663+ core -> kparam_dc [c ] = OAPV_KPARAM_DC_MAX ;
1664+ core -> kparam_ac [c ] = OAPV_KPARAM_AC_MIN ;
16621665 core -> prev_dc [c ] = 0 ;
16631666
16641667 midx = 0 ;
0 commit comments