From 9aeca7e5825569751a7e0acf64d98b8b7f7e0465 Mon Sep 17 00:00:00 2001 From: rtyag Date: Thu, 18 Jan 2024 11:50:24 +1100 Subject: [PATCH] fix for issue 952 --- lib_com/options.h | 2 ++ lib_dec/ivas_mc_paramupmix_dec.c | 34 ++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/lib_com/options.h b/lib_com/options.h index 6b87fb5d0e..1a3bad2e80 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -176,6 +176,8 @@ #define SPLIT_EXT_REND_FIX_LIMITER_POS /* Dlb: issue 950: fixing limiter position in split rendering mode in external renderer*/ #endif +#define NONBE_FIX_952_MC_PARAMUPMIX_5MS /*Dlb : issue 952 : Differences between 5ms and 20ms rendering for ParamUpmix*/ + /* ##################### End NON-BE switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_dec/ivas_mc_paramupmix_dec.c b/lib_dec/ivas_mc_paramupmix_dec.c index fdbca9f546..e6eadb43d2 100644 --- a/lib_dec/ivas_mc_paramupmix_dec.c +++ b/lib_dec/ivas_mc_paramupmix_dec.c @@ -117,6 +117,15 @@ void ivas_mc_paramupmix_dec_read_BS( hMCParamUpmix->betas[i][k] = hMCParamUpmix->beta_prev[i][k]; } } + +#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS + for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) + { + mvr2r( hMCParamUpmix->alpha_prev[i], hMCParamUpmix->alpha_sf[i], IVAS_MAX_NUM_BANDS ); + mvr2r( hMCParamUpmix->beta_prev[i], hMCParamUpmix->beta_sf[i], IVAS_MAX_NUM_BANDS ); + } +#endif + hMCParamUpmix->first_frame = 1; } else /* if (!st->bfi) */ @@ -135,6 +144,17 @@ void ivas_mc_paramupmix_dec_read_BS( st0->bits_frame = min( MAX_BITS_METADATA, last_bit_pos + 1 ); st0->total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ +#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS + if ( hMCParamUpmix->first_frame == 0 ) + { + for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) + { + mvr2r( hMCParamUpmix->alphas[i], hMCParamUpmix->alpha_prev[i], IVAS_MAX_NUM_BANDS ); + mvr2r( hMCParamUpmix->betas[i], hMCParamUpmix->beta_prev[i], IVAS_MAX_NUM_BANDS ); + } + } +#endif + for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { get_ec_data( st0, ALPHA, hMCParamUpmix->alpha_quant[i], alpha_quant, hMCParamUpmix->alphas[i] ); @@ -154,6 +174,14 @@ void ivas_mc_paramupmix_dec_read_BS( } hMCParamUpmix->first_frame = 0; } + +#ifdef NONBE_FIX_952_MC_PARAMUPMIX_5MS + for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) + { + mvr2r( hMCParamUpmix->alpha_prev[i], hMCParamUpmix->alpha_sf[i], IVAS_MAX_NUM_BANDS ); + mvr2r( hMCParamUpmix->beta_prev[i], hMCParamUpmix->beta_sf[i], IVAS_MAX_NUM_BANDS ); + } +#endif } pop_wmops(); @@ -245,12 +273,13 @@ void ivas_mc_paramupmix_dec_render( assert( slots_to_render == 0 ); #endif { - +#ifndef NONBE_FIX_952_MC_PARAMUPMIX_5MS for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) { mvr2r( hMCParamUpmix->alpha_prev[ch], hMCParamUpmix->alpha_sf[ch], IVAS_MAX_NUM_BANDS ); mvr2r( hMCParamUpmix->beta_prev[ch], hMCParamUpmix->beta_sf[ch], IVAS_MAX_NUM_BANDS ); } +#endif #ifdef SPLIT_REND_WITH_HEAD_ROT slot_index_start = 0; @@ -275,12 +304,13 @@ void ivas_mc_paramupmix_dec_render( /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_sf ); } - +#ifndef NONBE_FIX_952_MC_PARAMUPMIX_5MS for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) { mvr2r( hMCParamUpmix->alphas[ch], hMCParamUpmix->alpha_prev[ch], IVAS_MAX_NUM_BANDS ); mvr2r( hMCParamUpmix->betas[ch], hMCParamUpmix->beta_prev[ch], IVAS_MAX_NUM_BANDS ); } +#endif } *nSamplesAvailable = ( st_ivas->hTcBuffer->num_slots - st_ivas->hTcBuffer->slots_rendered ) * slot_size; -- GitLab