diff --git a/lib_com/options.h b/lib_com/options.h index 099a8cdd8242790652fe43c9d1ed79ac902afaa8..5602472607c12d2ca7b95265c894d71a427af43e 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -155,6 +155,7 @@ #define FIX_1349_TNS_CRASH /* FhG: Fix crash in TNS entropy coding, in case order of joint TNS coding is reduced to 0 */ #define NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING /* Ericsson: issue 1180, corrected long term mute loop attnuation after 200ms in PhECU-PLC */ #define FIX_1179_USAN_PHASEECU /* Eri: issue 1179: better handling of 16 bit wrap around for very long(>200ms) FER-bursts */ +#define NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH /* VA: issue 1199: fix bug in renderer flush in OMASA JBM bitrate switching */ #define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */ #define NONBE_1293_CRASH_FIRST_FRAME_LOST /* VA: issue 1293: fix G.192 decoder crash when first frame is lost */ #define FIX_1384_MSAN_stereo_tcx_core_enc /* VA: issue 1384: fix use-of-uninitialized value in stereo_tcx_core_enc() */ diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 21db1c479bb5e458150289e337ee0e25c307ab36..11fed28cb0ecbb511582a149a4b87ec627404007 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -690,7 +690,12 @@ ivas_error ivas_dec_setup( st_ivas->nchan_transport = 1; move16(); } + /* this should be non-zero if original input format was MASA_ISM_FORMAT */ +#ifdef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH + st_ivas->ism_mode = ISM_MODE_NONE; + move16(); +#endif st_ivas->nchan_ism = add( st_ivas->bit_stream[sub( k, 3 )], shl( st_ivas->bit_stream[sub( k, 2 )], 1 ) ); IF( GT_16( st_ivas->nchan_ism, 0 ) ) @@ -1008,6 +1013,17 @@ ivas_error ivas_dec_setup( } } +#ifdef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH + test(); + IF( GT_16( st_ivas->ini_frame, 0 ) && EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) + { + st_ivas->nchan_ism = 0; + move16(); + st_ivas->ism_mode = ISM_MODE_NONE; + move16(); + } + +#endif IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) ) { ISM_MODE last_ism_mode = st_ivas->ism_mode; diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c index c333cc21ecea7c2b3634a9815b49e7943a9fb7aa..7dba2b5d4714c44e59743955cc05e2e939fd58da 100644 --- a/lib_dec/ivas_masa_dec_fx.c +++ b/lib_dec/ivas_masa_dec_fx.c @@ -1967,6 +1967,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( ivas_masa_set_elements_fx( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &tmp, &tmp, &tmp, st_ivas->ivas_format, st_ivas->ism_mode, ism_total_brate ); +#ifndef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { IF( NE_32( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_EXTERNAL ) ) @@ -1979,7 +1980,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( st_ivas->ism_mode = ISM_MODE_NONE; move16(); } - +#endif { Word16 tc_nchan_to_allocate; Word16 tc_nchan_transport; diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index 435417b0fdf19de36a65ab50ef1c39b4a0bc05e7..dc58c5662c718a3451076bb26ff76264946e824d 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -3644,7 +3644,6 @@ ivas_error IVAS_DEC_ReadFormat( move32(); move32(); move32(); - move32(); move16(); move32(); move32(); @@ -3760,12 +3759,14 @@ ivas_error IVAS_DEC_ReadFormat( #else // st_ivas->nchan_transport = nchan_transport_old; // ToDo: temporarily deactivated to keep FIX_HRTF_LOAD bit-exact but this is likely a bug in the main -> see issue #1200 #endif + +#ifndef NONBE_1199_OMASA_JBM_BRATE_SW_FLUSH if ( st_ivas->ivas_format == MASA_FORMAT ) { st_ivas->nchan_ism = 0; // ToDo: temporary hack to keep FIX_HRTF_LOAD bit-exact but this is likely a bug in the main -> see issue #1199 } - - IF( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) +#endif + IF( LT_16( tc_granularity_new, st_ivas->hTcBuffer->n_samples_granularity ) ) { IF( ( error = ivas_jbm_dec_flush_renderer_fx( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &st_ivas->hIntSetup, mc_mode_old, ism_mode_old, &hIvasDec->nSamplesFlushed, hIvasDec->flushbuffer ) ) != IVAS_ERR_OK ) { @@ -3787,6 +3788,7 @@ ivas_error IVAS_DEC_ReadFormat( move16(); move32(); move32(); + move32(); return IVAS_ERR_OK; }