Loading lib_com/bitstream.c +3 −11 Original line number Diff line number Diff line Loading @@ -1978,21 +1978,13 @@ ivas_error preview_indices( /* Read SBA planar flag and SBA order */ st_ivas->sba_planar = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA] == 1 ); #ifndef SBA_ORDER_BITSTREAM st_ivas->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 2] == 1 ); st_ivas->sba_order += 2 * ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 1] == 1 ); #else st_ivas->hDecoderConfig->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 2] == 1 ); st_ivas->hDecoderConfig->sba_order += 2 * ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 1] == 1 ); st_ivas->sba_analysis_order = st_ivas->hDecoderConfig->sba_order; #endif #ifdef SBA_ORDER_BITSTREAM /*Hard coding the the sba_oder as 1 as higher not supported below 256k bitrate*/ if ( total_brate < IVAS_256k ) { st_ivas->sba_analysis_order = 1; } st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order ); #endif #ifdef SBA_ORDER_BITSTREAM ivas_sba_config( total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &( st_ivas->nSCE ), &( st_ivas->nCPE ), &( st_ivas->element_mode_init ), st_ivas->sba_mode ); #else Loading lib_com/ivas_cnst.h +1 −0 Original line number Diff line number Diff line Loading @@ -831,6 +831,7 @@ typedef enum { #define SBA_PLANAR_BITS 1 #define SBA_ORDER_BITS 2 #define SBA_MIN_BRATE_HOA IVAS_256k #define SBA_NHARM_HOA3 16 #define SBA_T_DESIGN_11_SIZE 70 Loading lib_com/ivas_prot.h +12 −2 Original line number Diff line number Diff line Loading @@ -3033,15 +3033,25 @@ void ivas_init_dec_get_num_cldfb_instances( int16_t *numCldfbSyntheses /* o : number of CLDFB synthesis instances */ ); /*! r: Ambisonic (SBA) order */ int16_t ivas_sba_get_order( const int16_t nb_channels, /* i : Number of ambisonic channels */ const int16_t sba_planar /* i : SBA planar flag */ ); #ifdef SBA_ORDER_BITSTREAM /*! r: Ambisonic (SBA) order used for analysis and coding */ int16_t ivas_sba_get_analysis_order( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t sba_order /* i : Ambisonic (SBA) order */ ); #endif int16_t ivas_sba_get_order_transport( const int16_t nchan_transport /* i : Number of transport channels */ ); /*!r: number of Ambisonic channels */ int16_t ivas_sba_get_nchan( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t sba_planar /* i : SBA planar flag */ Loading Loading @@ -3858,7 +3868,7 @@ ivas_error ivas_spar_md_enc_open( const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */ #ifdef SBA_ORDER_BITSTREAM , int16_t sba_order const int16_t sba_order /* i : Ambisonic (SBA) order */ #endif ); Loading @@ -3874,7 +3884,7 @@ ivas_error ivas_spar_md_enc_process( const int16_t dtx_silence_mode #ifdef SBA_ORDER_BITSTREAM , int16_t sba_order const int16_t sba_order /* i : Ambisonic (SBA) order */ #endif ); Loading lib_com/ivas_sba_config.c +30 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ void ivas_sba_config( * Get Ambisonic order from number of ambisonic channels *-------------------------------------------------------------------*/ /*! r: Ambisonic (SBA) order */ int16_t ivas_sba_get_order( const int16_t nb_channels, /* i : Number of ambisonic channels */ const int16_t sba_planar /* i : SBA Planar flag */ Loading @@ -182,6 +183,34 @@ int16_t ivas_sba_get_order( } #ifdef SBA_ORDER_BITSTREAM /*-------------------------------------------------------------------* * ivas_sba_get_analysis_order() * * Get Ambisonic order used for analysis and coding *-------------------------------------------------------------------*/ /*! r: Ambisonic (SBA) order used for analysis and coding */ int16_t ivas_sba_get_analysis_order( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t sba_order /* i : Ambisonic (SBA) order */ ) { int16_t sba_analysis_order; sba_analysis_order = sba_order; if ( ivas_total_brate < SBA_MIN_BRATE_HOA ) { /* Hard coding the sba_analysis_order as 1 as higher not supported below SBA_MIN_BRATE_HOA bitrate */ sba_analysis_order = 1; } return sba_analysis_order; } #endif /*-------------------------------------------------------------------* * ivas_sba_get_order_transport() * Loading Loading @@ -215,6 +244,7 @@ int16_t ivas_sba_get_order_transport( * Get number of Ambisonic channels *-------------------------------------------------------------------*/ /*!r: number of Ambisonic channels */ int16_t ivas_sba_get_nchan( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t sba_planar /* i : SBA planar flag */ Loading lib_dec/ivas_dirac_dec.c +1 −0 Original line number Diff line number Diff line Loading @@ -192,6 +192,7 @@ ivas_error ivas_dirac_dec_config( st_ivas->nchan_transport = ivas_sba_get_nchan_metadata( st_ivas->sba_order ); #endif } nchan_transport = st_ivas->nchan_transport; if ( st_ivas->ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE && ivas_total_brate > IVAS_SID_4k4 ) { Loading Loading
lib_com/bitstream.c +3 −11 Original line number Diff line number Diff line Loading @@ -1978,21 +1978,13 @@ ivas_error preview_indices( /* Read SBA planar flag and SBA order */ st_ivas->sba_planar = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA] == 1 ); #ifndef SBA_ORDER_BITSTREAM st_ivas->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 2] == 1 ); st_ivas->sba_order += 2 * ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 1] == 1 ); #else st_ivas->hDecoderConfig->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 2] == 1 ); st_ivas->hDecoderConfig->sba_order += 2 * ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 1] == 1 ); st_ivas->sba_analysis_order = st_ivas->hDecoderConfig->sba_order; #endif #ifdef SBA_ORDER_BITSTREAM /*Hard coding the the sba_oder as 1 as higher not supported below 256k bitrate*/ if ( total_brate < IVAS_256k ) { st_ivas->sba_analysis_order = 1; } st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order ); #endif #ifdef SBA_ORDER_BITSTREAM ivas_sba_config( total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &( st_ivas->nSCE ), &( st_ivas->nCPE ), &( st_ivas->element_mode_init ), st_ivas->sba_mode ); #else Loading
lib_com/ivas_cnst.h +1 −0 Original line number Diff line number Diff line Loading @@ -831,6 +831,7 @@ typedef enum { #define SBA_PLANAR_BITS 1 #define SBA_ORDER_BITS 2 #define SBA_MIN_BRATE_HOA IVAS_256k #define SBA_NHARM_HOA3 16 #define SBA_T_DESIGN_11_SIZE 70 Loading
lib_com/ivas_prot.h +12 −2 Original line number Diff line number Diff line Loading @@ -3033,15 +3033,25 @@ void ivas_init_dec_get_num_cldfb_instances( int16_t *numCldfbSyntheses /* o : number of CLDFB synthesis instances */ ); /*! r: Ambisonic (SBA) order */ int16_t ivas_sba_get_order( const int16_t nb_channels, /* i : Number of ambisonic channels */ const int16_t sba_planar /* i : SBA planar flag */ ); #ifdef SBA_ORDER_BITSTREAM /*! r: Ambisonic (SBA) order used for analysis and coding */ int16_t ivas_sba_get_analysis_order( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t sba_order /* i : Ambisonic (SBA) order */ ); #endif int16_t ivas_sba_get_order_transport( const int16_t nchan_transport /* i : Number of transport channels */ ); /*!r: number of Ambisonic channels */ int16_t ivas_sba_get_nchan( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t sba_planar /* i : SBA planar flag */ Loading Loading @@ -3858,7 +3868,7 @@ ivas_error ivas_spar_md_enc_open( const ENCODER_CONFIG_HANDLE hEncoderConfig /* i : configuration structure */ #ifdef SBA_ORDER_BITSTREAM , int16_t sba_order const int16_t sba_order /* i : Ambisonic (SBA) order */ #endif ); Loading @@ -3874,7 +3884,7 @@ ivas_error ivas_spar_md_enc_process( const int16_t dtx_silence_mode #ifdef SBA_ORDER_BITSTREAM , int16_t sba_order const int16_t sba_order /* i : Ambisonic (SBA) order */ #endif ); Loading
lib_com/ivas_sba_config.c +30 −0 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ void ivas_sba_config( * Get Ambisonic order from number of ambisonic channels *-------------------------------------------------------------------*/ /*! r: Ambisonic (SBA) order */ int16_t ivas_sba_get_order( const int16_t nb_channels, /* i : Number of ambisonic channels */ const int16_t sba_planar /* i : SBA Planar flag */ Loading @@ -182,6 +183,34 @@ int16_t ivas_sba_get_order( } #ifdef SBA_ORDER_BITSTREAM /*-------------------------------------------------------------------* * ivas_sba_get_analysis_order() * * Get Ambisonic order used for analysis and coding *-------------------------------------------------------------------*/ /*! r: Ambisonic (SBA) order used for analysis and coding */ int16_t ivas_sba_get_analysis_order( const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t sba_order /* i : Ambisonic (SBA) order */ ) { int16_t sba_analysis_order; sba_analysis_order = sba_order; if ( ivas_total_brate < SBA_MIN_BRATE_HOA ) { /* Hard coding the sba_analysis_order as 1 as higher not supported below SBA_MIN_BRATE_HOA bitrate */ sba_analysis_order = 1; } return sba_analysis_order; } #endif /*-------------------------------------------------------------------* * ivas_sba_get_order_transport() * Loading Loading @@ -215,6 +244,7 @@ int16_t ivas_sba_get_order_transport( * Get number of Ambisonic channels *-------------------------------------------------------------------*/ /*!r: number of Ambisonic channels */ int16_t ivas_sba_get_nchan( const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t sba_planar /* i : SBA planar flag */ Loading
lib_dec/ivas_dirac_dec.c +1 −0 Original line number Diff line number Diff line Loading @@ -192,6 +192,7 @@ ivas_error ivas_dirac_dec_config( st_ivas->nchan_transport = ivas_sba_get_nchan_metadata( st_ivas->sba_order ); #endif } nchan_transport = st_ivas->nchan_transport; if ( st_ivas->ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE && ivas_total_brate > IVAS_SID_4k4 ) { Loading