Loading lib_dec/lib_dec.c +6 −1 Original line number Diff line number Diff line Loading @@ -2176,7 +2176,11 @@ static ivas_error isar_generate_metadata_and_bitstream( Quaternion, st_ivas->hRenderConfig->split_rend_config.splitRendBitRate, st_ivas->hRenderConfig->split_rend_config.codec, #ifdef FIX_1342_PROPER_FLUSH_IN_SR (int16_t) ( (int32_t) nSamples * 1000 / (int32_t) st_ivas->hDecoderConfig->output_Fs ), #else st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms, #endif st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms, splitRendBits, p_Cldfb_RealBuffer_Binaural, Loading Loading @@ -4365,7 +4369,8 @@ ivas_error IVAS_DEC_Flush( /* Flush the remaining audio output in SR mode. For BINAURAL_SPLIT_PCM, generate metadata and binaural PCM from the ring buffer. The ISAR metadata output is discarded (flush frames are not written to the metadata file). */ if ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) if ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && hIvasDec->hasBeenFedFirstGoodFrame && nOutSamples > 0 ) { Decoder_Struct *st_ivas_flush = hIvasDec->st_ivas; ISAR_SPLIT_REND_BITS_DATA flushSplitRendBits; Loading lib_isar/isar_prot.h +4 −0 Original line number Diff line number Diff line Loading @@ -277,6 +277,10 @@ void isar_rend_CldfbSplitPreRendProcess( const int32_t target_md_bits, /* i : ISAR MD bitrate */ const int16_t low_res_pre_rend_rot, /* i : low time resolution pre-renderer flag */ const int16_t ro_md_flag /* i : real only metadata for yaw flag */ #ifdef FIX_1342_PROPER_FLUSH_IN_SR , const int16_t num_cldfb_slots /* i : actual number of valid CLDFB columns */ #endif ); ivas_error isar_renderMultiTDBinToSplitBinaural( Loading lib_isar/isar_splitRendererPre.c +26 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,11 @@ * Local function declarations *---------------------------------------------------------------------*/ #ifdef FIX_1342_PROPER_FLUSH_IN_SR static void isar_SplitRenderer_GetRotMd( ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float *Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], float *Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], const int16_t low_res, const int16_t ro_md_flag, const int16_t num_cldfb_slots ); #else static void isar_SplitRenderer_GetRotMd( ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float *Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], float *Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], const int16_t low_res, const int16_t ro_md_flag ); #endif /*------------------------------------------------------------------------- Loading Loading @@ -1351,6 +1355,10 @@ static void isar_SplitRenderer_GetRotMd( float *Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], /* o : Reference Binaural signals */ const int16_t low_res, const int16_t ro_md_flag /* i : Flag to indicate real only metadata for yaw */ #ifdef FIX_1342_PROPER_FLUSH_IN_SR , const int16_t num_cldfb_slots /* i : actual number of valid CLDFB columns in the input buffers */ #endif ) { float cov_ii_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; Loading @@ -1371,7 +1379,11 @@ static void isar_SplitRenderer_GetRotMd( if ( low_res ) { #ifdef FIX_1342_PROPER_FLUSH_IN_SR num_slots = num_cldfb_slots; #else num_slots = CLDFB_NO_COL_MAX; #endif num_subframes = 1; } else Loading Loading @@ -1439,11 +1451,19 @@ void isar_rend_CldfbSplitPreRendProcess( const int32_t target_md_bits, /* i : ISAR MD bitrate */ const int16_t low_res_pre_rend_rot, /* i : low time resolution pre-renderer flag */ const int16_t ro_md_flag /* i : real only metadata for yaw flag */ #ifdef FIX_1342_PROPER_FLUSH_IN_SR , const int16_t num_cldfb_slots /* i : actual number of valid CLDFB columns */ #endif ) { push_wmops( "isar_rend_CldfbSplitPreRendProcess" ); #ifdef FIX_1342_PROPER_FLUSH_IN_SR isar_SplitRenderer_GetRotMd( hBinHrSplitPreRend, pMultiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, low_res_pre_rend_rot, ro_md_flag, num_cldfb_slots ); #else isar_SplitRenderer_GetRotMd( hBinHrSplitPreRend, pMultiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, low_res_pre_rend_rot, ro_md_flag ); #endif isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, ro_md_flag, target_md_bits ); Loading Loading @@ -1985,7 +2005,12 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag ); ro_md_flag #ifdef FIX_1342_PROPER_FLUSH_IN_SR , (int16_t) num_slots #endif ); } if ( pcm_out_flag == 0 ) Loading lib_isar/lib_isar_pre_rend.c +4 −0 Original line number Diff line number Diff line Loading @@ -341,7 +341,11 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( target_md_bits = isar_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out_flag ) * L_FRAME48k / 48000; #ifdef FIX_1342_PROPER_FLUSH_IN_SR isar_rend_CldfbSplitPreRendProcess( hSplitBin->hBinHrSplitPreRend, headPosition, &hSplitBin->multiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag, (int16_t) ( isar_frame_size_ms * 1000000 / CLDFB_SLOT_NS ) ); #else isar_rend_CldfbSplitPreRendProcess( hSplitBin->hBinHrSplitPreRend, headPosition, &hSplitBin->multiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag ); #endif } if ( pcm_out_flag == 0 ) Loading Loading
lib_dec/lib_dec.c +6 −1 Original line number Diff line number Diff line Loading @@ -2176,7 +2176,11 @@ static ivas_error isar_generate_metadata_and_bitstream( Quaternion, st_ivas->hRenderConfig->split_rend_config.splitRendBitRate, st_ivas->hRenderConfig->split_rend_config.codec, #ifdef FIX_1342_PROPER_FLUSH_IN_SR (int16_t) ( (int32_t) nSamples * 1000 / (int32_t) st_ivas->hDecoderConfig->output_Fs ), #else st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms, #endif st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms, splitRendBits, p_Cldfb_RealBuffer_Binaural, Loading Loading @@ -4365,7 +4369,8 @@ ivas_error IVAS_DEC_Flush( /* Flush the remaining audio output in SR mode. For BINAURAL_SPLIT_PCM, generate metadata and binaural PCM from the ring buffer. The ISAR metadata output is discarded (flush frames are not written to the metadata file). */ if ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) if ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && hIvasDec->hasBeenFedFirstGoodFrame && nOutSamples > 0 ) { Decoder_Struct *st_ivas_flush = hIvasDec->st_ivas; ISAR_SPLIT_REND_BITS_DATA flushSplitRendBits; Loading
lib_isar/isar_prot.h +4 −0 Original line number Diff line number Diff line Loading @@ -277,6 +277,10 @@ void isar_rend_CldfbSplitPreRendProcess( const int32_t target_md_bits, /* i : ISAR MD bitrate */ const int16_t low_res_pre_rend_rot, /* i : low time resolution pre-renderer flag */ const int16_t ro_md_flag /* i : real only metadata for yaw flag */ #ifdef FIX_1342_PROPER_FLUSH_IN_SR , const int16_t num_cldfb_slots /* i : actual number of valid CLDFB columns */ #endif ); ivas_error isar_renderMultiTDBinToSplitBinaural( Loading
lib_isar/isar_splitRendererPre.c +26 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,11 @@ * Local function declarations *---------------------------------------------------------------------*/ #ifdef FIX_1342_PROPER_FLUSH_IN_SR static void isar_SplitRenderer_GetRotMd( ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float *Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], float *Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], const int16_t low_res, const int16_t ro_md_flag, const int16_t num_cldfb_slots ); #else static void isar_SplitRenderer_GetRotMd( ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, float *Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], float *Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], const int16_t low_res, const int16_t ro_md_flag ); #endif /*------------------------------------------------------------------------- Loading Loading @@ -1351,6 +1355,10 @@ static void isar_SplitRenderer_GetRotMd( float *Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX], /* o : Reference Binaural signals */ const int16_t low_res, const int16_t ro_md_flag /* i : Flag to indicate real only metadata for yaw */ #ifdef FIX_1342_PROPER_FLUSH_IN_SR , const int16_t num_cldfb_slots /* i : actual number of valid CLDFB columns in the input buffers */ #endif ) { float cov_ii_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; Loading @@ -1371,7 +1379,11 @@ static void isar_SplitRenderer_GetRotMd( if ( low_res ) { #ifdef FIX_1342_PROPER_FLUSH_IN_SR num_slots = num_cldfb_slots; #else num_slots = CLDFB_NO_COL_MAX; #endif num_subframes = 1; } else Loading Loading @@ -1439,11 +1451,19 @@ void isar_rend_CldfbSplitPreRendProcess( const int32_t target_md_bits, /* i : ISAR MD bitrate */ const int16_t low_res_pre_rend_rot, /* i : low time resolution pre-renderer flag */ const int16_t ro_md_flag /* i : real only metadata for yaw flag */ #ifdef FIX_1342_PROPER_FLUSH_IN_SR , const int16_t num_cldfb_slots /* i : actual number of valid CLDFB columns */ #endif ) { push_wmops( "isar_rend_CldfbSplitPreRendProcess" ); #ifdef FIX_1342_PROPER_FLUSH_IN_SR isar_SplitRenderer_GetRotMd( hBinHrSplitPreRend, pMultiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, low_res_pre_rend_rot, ro_md_flag, num_cldfb_slots ); #else isar_SplitRenderer_GetRotMd( hBinHrSplitPreRend, pMultiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, low_res_pre_rend_rot, ro_md_flag ); #endif isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, ro_md_flag, target_md_bits ); Loading Loading @@ -1985,7 +2005,12 @@ ivas_error isar_renderMultiTDBinToSplitBinaural( pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag ); ro_md_flag #ifdef FIX_1342_PROPER_FLUSH_IN_SR , (int16_t) num_slots #endif ); } if ( pcm_out_flag == 0 ) Loading
lib_isar/lib_isar_pre_rend.c +4 −0 Original line number Diff line number Diff line Loading @@ -341,7 +341,11 @@ ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( target_md_bits = isar_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out_flag ) * L_FRAME48k / 48000; #ifdef FIX_1342_PROPER_FLUSH_IN_SR isar_rend_CldfbSplitPreRendProcess( hSplitBin->hBinHrSplitPreRend, headPosition, &hSplitBin->multiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag, (int16_t) ( isar_frame_size_ms * 1000000 / CLDFB_SLOT_NS ) ); #else isar_rend_CldfbSplitPreRendProcess( hSplitBin->hBinHrSplitPreRend, headPosition, &hSplitBin->multiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag ); #endif } if ( pcm_out_flag == 0 ) Loading