Commit cb29ea23 authored by vaclav's avatar vaclav
Browse files

simplification: introduce function ivas_sba_get_analysis_order()

parent a77ea0ca
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -1980,14 +1980,9 @@ ivas_error preview_indices(
            st_ivas->sba_planar = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA] == 1 );
            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 );
#ifdef SBA_ORDER_BITSTREAM

            st_ivas->sba_analysis_order = st_ivas->sba_order;            
            if ( total_brate < SBA_MIN_BRATE_HOA )
            {
                /* Hard coding the sba_analysis_order as 1 as higher not supported below SBA_MIN_BRATE_HOA bitrate */
                st_ivas->sba_analysis_order = 1;
            }
#ifdef SBA_ORDER_BITSTREAM
            st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order );
#endif

#ifdef SBA_ORDER_BITSTREAM
+10 −0
Original line number Diff line number Diff line
@@ -3043,15 +3043,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                         */
+29 −0
Original line number Diff line number Diff line
@@ -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                  */
@@ -182,6 +183,33 @@ int16_t ivas_sba_get_order(
}


#ifdef SBA_ORDER_BITSTREAM
/*-------------------------------------------------------------------*
 * ivas_sba_get_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()
 *
@@ -215,6 +243,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                  */
+1 −6
Original line number Diff line number Diff line
@@ -123,12 +123,7 @@ ivas_error ivas_dec_setup(
            st_ivas->sba_order += 2 * st_ivas->bit_stream[num_bits_read];

#ifdef SBA_ORDER_BITSTREAM
            st_ivas->sba_analysis_order = st_ivas->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 */
                st_ivas->sba_analysis_order = 1;
            }
            st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order );
#endif

            num_bits_read += SBA_ORDER_BITS;
+5 −1
Original line number Diff line number Diff line
@@ -485,11 +485,15 @@ ivas_error ivas_sba_dec_reconfigure(
    numCldfbAnalyses = 0;
    sba_total_brate = ivas_total_brate;


    nSCE_old = st_ivas->nSCE;
    nCPE_old = st_ivas->nCPE;
    nchan_transport_old = st_ivas->nchan_transport;
    sba_dirac_stereo_flag_old = st_ivas->sba_dirac_stereo_flag;

#ifdef SBA_ORDER_BITSTREAM
    st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order );
#endif

#ifndef SBA_ORDER_BITSTREAM
    ivas_sba_config( sba_total_brate, st_ivas->sba_order, -1, &nchan_transport, st_ivas->sba_planar, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->element_mode_init, st_ivas->sba_mode );
#else
Loading