Loading apps/decoder.c +5 −1 Original line number Diff line number Diff line Loading @@ -1844,7 +1844,11 @@ static ivas_error initOnFirstGoodFrame( return error; } IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, &splitRendCodec, &poseCorrection, &splitRendCodecFrameSizeMs ); if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, &splitRendCodec, &poseCorrection, &splitRendCodecFrameSizeMs ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); return error; } if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) ) { Loading apps/isar_post_rend.c +9 −5 Original line number Diff line number Diff line Loading @@ -780,7 +780,7 @@ static void convertOutputBuffer( /*------------------------------------------------------------------------------------------* * main() * * Main External renderer function for command-line interface * Main ISAR post renderer function for command-line interface *------------------------------------------------------------------------------------------*/ int main( Loading Loading @@ -951,8 +951,12 @@ int main( if ( args.inConfig.numBinBuses > 0 ) { IVAS_REND_SetSplitRendBitstreamHeader( hIsarPostRend, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms ); if ( ( error = IVAS_REND_SetSplitRendBitstreamHeader( hIsarPostRend, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error in getting split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } } Loading Loading @@ -1050,12 +1054,12 @@ int main( if ( !args.quietModeEnabled ) { fprintf( stdout, "\n------ Running the renderer ------\n\n" ); fprintf( stdout, "\n------ Running the ISAR post renderer ------\n\n" ); fprintf( stdout, "Frames processed: " ); } else { fprintf( stdout, "\n\n-- Start the renderer (quiet mode) --\n\n" ); fprintf( stdout, "\n\n-- Start the ISAR post renderer (quiet mode) --\n\n" ); } while ( 1 ) Loading lib_com/ivas_stat_com.h +0 −43 Original line number Diff line number Diff line Loading @@ -784,47 +784,4 @@ typedef struct ivas_param_ism_data_structure float last_cardioid_left[MAX_NUM_OBJECTS]; } PARAM_ISM_CONFIG_DATA, *PARAM_ISM_CONFIG_HANDLE; typedef struct ivas_orient_trk_state_t { IVAS_HEAD_ORIENT_TRK_T orientation_tracking; float centerAdaptationRate; float offCenterAdaptationRate; float adaptationAngle; float alpha; IVAS_QUATERNION absAvgRot; /* average absolute orientation */ IVAS_QUATERNION refRot; /* reference orientation */ IVAS_QUATERNION trkRot; /* tracked rotation */ } ivas_orient_trk_state_t; typedef struct { int8_t headRotEnabled; IVAS_QUATERNION headPositions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; float crossfade[L_FRAME48k / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; #ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; #endif ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; #ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct { #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG HANDLE_CLDFB_FILTER_BANK cldfbAna[( 1 + MAX_HEAD_ROT_POSES ) * BINAURAL_CHANNELS]; #else HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; #endif HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; } CLDFB_HANDLES_WRAPPER, *CLDFB_HANDLES_WRAPPER_HANDLE; #endif #endif /* IVAS_STAT_COM */ lib_isar/isar_stat.h +72 −0 Original line number Diff line number Diff line Loading @@ -42,8 +42,80 @@ #include "isar_lcld_prot.h" #include "isar_lc3plus_enc.h" #include "isar_lc3plus_dec.h" #endif /*-------------------------------------------------------------------* * constants common between isar and ivas rend *-------------------------------------------------------------------*/ /* Maximum buffer length (per channel) in samples. * Keep this separate from L_FRAME48k in case we want to support different size later */ #define MAX_BUFFER_LENGTH_PER_CHANNEL ( L_FRAME48k ) #ifdef SPLIT_REND_WITH_HEAD_ROT #define MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL ( MAX_BUFFER_LENGTH_PER_CHANNEL * 2 ) #endif /* Maximum buffer length (total) in samples. */ /* Maximum buffer length (total) in samples. */ #ifdef SPLIT_REND_WITH_HEAD_ROT #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #define MAX_CLDFB_BIN_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #else #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #endif #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ /* Frame size required when rendering to binaural */ #define BINAURAL_RENDERING_FRAME_SIZE_MS 5 /*-------------------------------------------------------------------* * structures common between isar and ivas rend *-------------------------------------------------------------------*/ typedef struct ivas_orient_trk_state_t { IVAS_HEAD_ORIENT_TRK_T orientation_tracking; float centerAdaptationRate; float offCenterAdaptationRate; float adaptationAngle; float alpha; IVAS_QUATERNION absAvgRot; /* average absolute orientation */ IVAS_QUATERNION refRot; /* reference orientation */ IVAS_QUATERNION trkRot; /* tracked rotation */ } ivas_orient_trk_state_t; typedef struct { int8_t headRotEnabled; IVAS_QUATERNION headPositions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; float crossfade[L_FRAME48k / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; #ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; #endif ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; #ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct { #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG HANDLE_CLDFB_FILTER_BANK cldfbAna[( 1 + MAX_HEAD_ROT_POSES ) * BINAURAL_CHANNELS]; #else HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; #endif HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; } CLDFB_HANDLES_WRAPPER, *CLDFB_HANDLES_WRAPPER_HANDLE; #endif #ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct isar_split_rend_huffman_cfg_t { const int32_t *codebook; Loading lib_isar/lib_isar_post_rend.c +0 −17 Original line number Diff line number Diff line Loading @@ -61,23 +61,6 @@ int isar_void_func( void ) * Local constants *-------------------------------------------------------------------*/ /* Maximum buffer length (per channel) in samples. * Keep this separate from L_FRAME48k in case we want to support different size later */ #define MAX_BUFFER_LENGTH_PER_CHANNEL ( L_FRAME48k ) #define MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL ( MAX_BUFFER_LENGTH_PER_CHANNEL * 2 ) /* Maximum buffer length (total) in samples. */ /* Maximum buffer length (total) in samples. */ #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #define MAX_CLDFB_BIN_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ /* Frame size required when rendering to binaural */ #define BINAURAL_RENDERING_FRAME_SIZE_MS 5 /*-------------------------------------------------------------------* * Local types *-------------------------------------------------------------------*/ Loading Loading
apps/decoder.c +5 −1 Original line number Diff line number Diff line Loading @@ -1844,7 +1844,11 @@ static ivas_error initOnFirstGoodFrame( return error; } IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, &splitRendCodec, &poseCorrection, &splitRendCodecFrameSizeMs ); if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, &splitRendCodec, &poseCorrection, &splitRendCodecFrameSizeMs ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); return error; } if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) ) { Loading
apps/isar_post_rend.c +9 −5 Original line number Diff line number Diff line Loading @@ -780,7 +780,7 @@ static void convertOutputBuffer( /*------------------------------------------------------------------------------------------* * main() * * Main External renderer function for command-line interface * Main ISAR post renderer function for command-line interface *------------------------------------------------------------------------------------------*/ int main( Loading Loading @@ -951,8 +951,12 @@ int main( if ( args.inConfig.numBinBuses > 0 ) { IVAS_REND_SetSplitRendBitstreamHeader( hIsarPostRend, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms ); if ( ( error = IVAS_REND_SetSplitRendBitstreamHeader( hIsarPostRend, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error in getting split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } } Loading Loading @@ -1050,12 +1054,12 @@ int main( if ( !args.quietModeEnabled ) { fprintf( stdout, "\n------ Running the renderer ------\n\n" ); fprintf( stdout, "\n------ Running the ISAR post renderer ------\n\n" ); fprintf( stdout, "Frames processed: " ); } else { fprintf( stdout, "\n\n-- Start the renderer (quiet mode) --\n\n" ); fprintf( stdout, "\n\n-- Start the ISAR post renderer (quiet mode) --\n\n" ); } while ( 1 ) Loading
lib_com/ivas_stat_com.h +0 −43 Original line number Diff line number Diff line Loading @@ -784,47 +784,4 @@ typedef struct ivas_param_ism_data_structure float last_cardioid_left[MAX_NUM_OBJECTS]; } PARAM_ISM_CONFIG_DATA, *PARAM_ISM_CONFIG_HANDLE; typedef struct ivas_orient_trk_state_t { IVAS_HEAD_ORIENT_TRK_T orientation_tracking; float centerAdaptationRate; float offCenterAdaptationRate; float adaptationAngle; float alpha; IVAS_QUATERNION absAvgRot; /* average absolute orientation */ IVAS_QUATERNION refRot; /* reference orientation */ IVAS_QUATERNION trkRot; /* tracked rotation */ } ivas_orient_trk_state_t; typedef struct { int8_t headRotEnabled; IVAS_QUATERNION headPositions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; float crossfade[L_FRAME48k / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; #ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; #endif ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; #ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct { #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG HANDLE_CLDFB_FILTER_BANK cldfbAna[( 1 + MAX_HEAD_ROT_POSES ) * BINAURAL_CHANNELS]; #else HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; #endif HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; } CLDFB_HANDLES_WRAPPER, *CLDFB_HANDLES_WRAPPER_HANDLE; #endif #endif /* IVAS_STAT_COM */
lib_isar/isar_stat.h +72 −0 Original line number Diff line number Diff line Loading @@ -42,8 +42,80 @@ #include "isar_lcld_prot.h" #include "isar_lc3plus_enc.h" #include "isar_lc3plus_dec.h" #endif /*-------------------------------------------------------------------* * constants common between isar and ivas rend *-------------------------------------------------------------------*/ /* Maximum buffer length (per channel) in samples. * Keep this separate from L_FRAME48k in case we want to support different size later */ #define MAX_BUFFER_LENGTH_PER_CHANNEL ( L_FRAME48k ) #ifdef SPLIT_REND_WITH_HEAD_ROT #define MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL ( MAX_BUFFER_LENGTH_PER_CHANNEL * 2 ) #endif /* Maximum buffer length (total) in samples. */ /* Maximum buffer length (total) in samples. */ #ifdef SPLIT_REND_WITH_HEAD_ROT #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #define MAX_CLDFB_BIN_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #else #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #endif #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ /* Frame size required when rendering to binaural */ #define BINAURAL_RENDERING_FRAME_SIZE_MS 5 /*-------------------------------------------------------------------* * structures common between isar and ivas rend *-------------------------------------------------------------------*/ typedef struct ivas_orient_trk_state_t { IVAS_HEAD_ORIENT_TRK_T orientation_tracking; float centerAdaptationRate; float offCenterAdaptationRate; float adaptationAngle; float alpha; IVAS_QUATERNION absAvgRot; /* average absolute orientation */ IVAS_QUATERNION refRot; /* reference orientation */ IVAS_QUATERNION trkRot; /* tracked rotation */ } ivas_orient_trk_state_t; typedef struct { int8_t headRotEnabled; IVAS_QUATERNION headPositions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; float crossfade[L_FRAME48k / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; #ifdef SPLIT_REND_WITH_HEAD_ROT ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; #endif ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; #ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct { #ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG HANDLE_CLDFB_FILTER_BANK cldfbAna[( 1 + MAX_HEAD_ROT_POSES ) * BINAURAL_CHANNELS]; #else HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; #endif HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; } CLDFB_HANDLES_WRAPPER, *CLDFB_HANDLES_WRAPPER_HANDLE; #endif #ifdef SPLIT_REND_WITH_HEAD_ROT typedef struct isar_split_rend_huffman_cfg_t { const int32_t *codebook; Loading
lib_isar/lib_isar_post_rend.c +0 −17 Original line number Diff line number Diff line Loading @@ -61,23 +61,6 @@ int isar_void_func( void ) * Local constants *-------------------------------------------------------------------*/ /* Maximum buffer length (per channel) in samples. * Keep this separate from L_FRAME48k in case we want to support different size later */ #define MAX_BUFFER_LENGTH_PER_CHANNEL ( L_FRAME48k ) #define MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL ( MAX_BUFFER_LENGTH_PER_CHANNEL * 2 ) /* Maximum buffer length (total) in samples. */ /* Maximum buffer length (total) in samples. */ #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #define MAX_CLDFB_BIN_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ /* Frame size required when rendering to binaural */ #define BINAURAL_RENDERING_FRAME_SIZE_MS 5 /*-------------------------------------------------------------------* * Local types *-------------------------------------------------------------------*/ Loading