Loading lib_dec/ivas_jbm_dec_fx.c +86 −59 Original line number Diff line number Diff line Loading @@ -2979,16 +2979,31 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( #endif } } ELSE IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ){ ELSE IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN IF( EQ_32( ism_mode_old, ISM_SBA_MODE_DISC ) ){ IF( EQ_32( ism_mode_old, ISM_SBA_MODE_DISC ) ) { #endif Word32 *tc_local_fx[MAX_TRANSPORT_CHANNELS]; Word16 last_spar_md_idx; Word16 last_dirac_md_idx; UWord16 nSamplesAvailableNext; #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN ISM_MODE ism_mode_orig; RENDERER_TYPE renderer_type_orig; Word32 ivas_total_brate; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; renderer_type_orig = st_ivas->renderer_type; ism_mode_orig = st_ivas->ism_mode; /* to render flushed samples, use configuration from the last received frame */ move32(); st_ivas->ism_mode = ism_mode_old; st_ivas->renderer_type = renderer_type_old; st_ivas->hDecoderConfig->ivas_total_brate = st_ivas->hDecoderConfig->last_ivas_total_brate; #endif last_spar_md_idx = st_ivas->hSpar->render_to_md_map[st_ivas->hSpar->slots_rendered - 1]; last_dirac_md_idx = st_ivas->hSpatParamRendCom->render_to_md_map[st_ivas->hSpatParamRendCom->slots_rendered - 1]; Loading @@ -2998,7 +3013,11 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( /* copy from ISM delay buffer to the correct place in TCs */ FOR( ch_idx = 0; ch_idx < st_ivas->nchan_ism; ch_idx++ ) { #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN tc_local_fx[ch_idx] = &st_ivas->hTcBuffer->tc_fx[ch_idx][hTcBuffer->n_samples_rendered]; #else tc_local_fx[ch_idx] = &st_ivas->hTcBuffer->tc_fx[ch_idx + 2][hTcBuffer->n_samples_rendered]; #endif Copy32( st_ivas->hSbaIsmData->delayBuffer_fx[ch_idx], tc_local_fx[ch_idx], st_ivas->hSbaIsmData->delayBuffer_size ); } Loading Loading @@ -3034,12 +3053,19 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( return error; } #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN /* restore original configuration */ st_ivas->ism_mode = ism_mode_orig; st_ivas->renderer_type = renderer_type_orig; st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate; } #endif } ELSE { return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong IVAS format in VoIP renderer flushing!" ); } hTcBuffer->n_samples_rendered = hTcBuffer->n_samples_granularity; } Loading Loading @@ -3067,6 +3093,7 @@ ivas_combined_orientation_update_start_index( st_ivas->hCombinedOrientationData, } ivas_syn_output_fx( p_output_fx, Q11, *nSamplesRendered, st_ivas->hDecoderConfig->nchan_out, data ); return IVAS_ERR_OK; } Loading Loading
lib_dec/ivas_jbm_dec_fx.c +86 −59 Original line number Diff line number Diff line Loading @@ -2979,16 +2979,31 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( #endif } } ELSE IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ){ ELSE IF( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN IF( EQ_32( ism_mode_old, ISM_SBA_MODE_DISC ) ){ IF( EQ_32( ism_mode_old, ISM_SBA_MODE_DISC ) ) { #endif Word32 *tc_local_fx[MAX_TRANSPORT_CHANNELS]; Word16 last_spar_md_idx; Word16 last_dirac_md_idx; UWord16 nSamplesAvailableNext; #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN ISM_MODE ism_mode_orig; RENDERER_TYPE renderer_type_orig; Word32 ivas_total_brate; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; renderer_type_orig = st_ivas->renderer_type; ism_mode_orig = st_ivas->ism_mode; /* to render flushed samples, use configuration from the last received frame */ move32(); st_ivas->ism_mode = ism_mode_old; st_ivas->renderer_type = renderer_type_old; st_ivas->hDecoderConfig->ivas_total_brate = st_ivas->hDecoderConfig->last_ivas_total_brate; #endif last_spar_md_idx = st_ivas->hSpar->render_to_md_map[st_ivas->hSpar->slots_rendered - 1]; last_dirac_md_idx = st_ivas->hSpatParamRendCom->render_to_md_map[st_ivas->hSpatParamRendCom->slots_rendered - 1]; Loading @@ -2998,7 +3013,11 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( /* copy from ISM delay buffer to the correct place in TCs */ FOR( ch_idx = 0; ch_idx < st_ivas->nchan_ism; ch_idx++ ) { #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN tc_local_fx[ch_idx] = &st_ivas->hTcBuffer->tc_fx[ch_idx][hTcBuffer->n_samples_rendered]; #else tc_local_fx[ch_idx] = &st_ivas->hTcBuffer->tc_fx[ch_idx + 2][hTcBuffer->n_samples_rendered]; #endif Copy32( st_ivas->hSbaIsmData->delayBuffer_fx[ch_idx], tc_local_fx[ch_idx], st_ivas->hSbaIsmData->delayBuffer_size ); } Loading Loading @@ -3034,12 +3053,19 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( return error; } #ifdef NONBE_FIX_1297_SPAR_JBM_MEM_SAN /* restore original configuration */ st_ivas->ism_mode = ism_mode_orig; st_ivas->renderer_type = renderer_type_orig; st_ivas->hDecoderConfig->ivas_total_brate = ivas_total_brate; } #endif } ELSE { return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong IVAS format in VoIP renderer flushing!" ); } hTcBuffer->n_samples_rendered = hTcBuffer->n_samples_granularity; } Loading Loading @@ -3067,6 +3093,7 @@ ivas_combined_orientation_update_start_index( st_ivas->hCombinedOrientationData, } ivas_syn_output_fx( p_output_fx, Q11, *nSamplesRendered, st_ivas->hDecoderConfig->nchan_out, data ); return IVAS_ERR_OK; } Loading