Commit 771d3edc authored by Jan Kiene's avatar Jan Kiene
Browse files

Merge branch 'main' into...

Merge branch 'main' into 11-sba-stereo-items-sound-darker-than-input-during-16khz-decode-in-cpe-modes-such-as-64kbps-187
parents d570d3c8 92f8790a
Loading
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -1974,11 +1974,7 @@ ivas_error preview_indices(

            st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order );

#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT
            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 ) );
#else
            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 );
#endif
        }
    }

+0 −16
Original line number Diff line number Diff line
@@ -165,9 +165,6 @@ typedef enum
#define HEAD_ROTATION_HOA_ORDER                 3                           /* HOA 3rd order */
#define MAX_CICP_CHANNELS                       16                          /* max channels for loudspeaker layouts (16 for custom layouts)*/
#define MAX_OUTPUT_CHANNELS                     16                          /* Maximum number of output channels (HOA 3rd order) */
#ifndef FIX_DIRAC_CHANNELS
#define IVAS_MAX_NUM_CH                         16                          /* == MAX_OUTPUT_CHANNELS */
#endif

#define BINAURAL_CHANNELS                       2                           /* number of channels for binaural output configuration */
#define CPE_CHANNELS                            2                           /* number of CPE (stereo) channels */
@@ -856,20 +853,7 @@ typedef enum
 * DirAC Constants 
 *----------------------------------------------------------------------------------*/

#ifdef FIX_DIRAC_CHANNELS
#define DIRAC_MAX_ANA_CHANS                     FOA_CHANNELS                /* Maximum number of channels for DirAC analysis */
#else
#define DIRAC_MAX_ANA_CHANS                     4                           /* Maximum number of channels for DirAC analysis */
#endif

#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
#define DIRAC_MAX_TRANS_CHANS                   8                           /* Maximum number of transport channels for DirAC */
#endif

#define DIRAC_MIN_BITRATE_8_TRANS_CHAN          IVAS_384k
#define DIRAC_MIN_BITRATE_6_TRANS_CHAN          IVAS_256k
#define DIRAC_MIN_BITRATE_4_TRANS_CHAN          IVAS_160k                   /* minimum bitrate for sending 4 transport channels (FOA) */
#define DIRAC_MIN_BITRATE_2_TRANS_CHAN          IVAS_48k                    /* minimum bitrate for sending 2 transport channels (Stereo) */

#define DIRAC_NUM_DIMS                          3                           /* number of directions to estimate (X,Y,Z) */
#define DIRAC_MAX_NBANDS                        12                          /* Maximum number of frequency bands for the DirAC Side Parameter decoding */
+3 −98
Original line number Diff line number Diff line
@@ -60,11 +60,7 @@ ivas_error ivas_dirac_config(
)
{
    IVAS_FORMAT ivas_format;
#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT
    int16_t sba_order;
#else
    int16_t sba_order, sba_planar;
#endif
    int16_t *nSCE, *nCPE, *element_mode, *nchan_transport;
    int32_t ivas_total_brate;
    DIRAC_CONFIG_DATA_HANDLE hConfig;
@@ -87,9 +83,6 @@ ivas_error ivas_dirac_config(
        element_mode = &( (Encoder_Struct *) st_ivas )->hEncoderConfig->element_mode_init;
        nchan_transport = &( (Encoder_Struct *) st_ivas )->nchan_transport;
        sba_order = ( (Encoder_Struct *) st_ivas )->sba_analysis_order;
#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
        sba_planar = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->sba_planar;
#endif
        ivas_total_brate = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->ivas_total_brate;
        Fs = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->input_Fs;
        band_grouping = ( (Encoder_Struct *) st_ivas )->hDirAC->band_grouping;
@@ -114,9 +107,6 @@ ivas_error ivas_dirac_config(
        element_mode = &( (Decoder_Struct *) st_ivas )->element_mode_init;
        nchan_transport = &( (Decoder_Struct *) st_ivas )->nchan_transport;
        sba_order = ( (Decoder_Struct *) st_ivas )->sba_analysis_order;
#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
        sba_planar = ( (Decoder_Struct *) st_ivas )->sba_planar;
#endif
        ivas_total_brate = ( (Decoder_Struct *) st_ivas )->hDecoderConfig->ivas_total_brate;
        Fs = ( (Decoder_Struct *) st_ivas )->hDecoderConfig->output_Fs;
        band_grouping = ( (Decoder_Struct *) st_ivas )->hDirAC->band_grouping;
@@ -150,12 +140,7 @@ ivas_error ivas_dirac_config(

    if ( ivas_format == SBA_FORMAT ) /* skip for MASA decoder */
    {
#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT
        if ( ( error = ivas_dirac_sba_config( hQMetaData, nchan_transport, nSCE, nCPE, element_mode, ivas_total_brate, sba_order, sba_mode, hConfig->nbands - spar_dirac_split_band ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_dirac_sba_config( hQMetaData, nchan_transport, nSCE, nCPE, element_mode, ivas_total_brate, sba_order, sba_planar,
                                              sba_mode, hConfig->nbands - spar_dirac_split_band ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
@@ -319,9 +304,6 @@ ivas_error ivas_dirac_sba_config(
    int16_t *element_mode,            /* i/o: element mode of the core coder                       */
    int32_t sba_total_brate,          /* i  : SBA total bitrate                                    */
    const int16_t sba_order,          /* i  : Ambisonic (SBA) order                                */
#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
    const int16_t sba_planar, /* i  : SBA planar flag                                      */
#endif
    const SBA_MODE sba_mode,          /* i  : SBA mode                                             */
    const int16_t nbands              /* i  : number of frequency bands                            */
)
@@ -436,11 +418,7 @@ ivas_error ivas_dirac_sba_config(

    if ( sba_total_brate > IVAS_SID_5k2 )
    {
#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT
        *nchan_transport = ivas_get_sba_num_TCs( sba_total_brate, sba_order );
#else
        *nchan_transport = ivas_dirac_getNumTransportChannels( sba_total_brate, sba_order, sba_planar );
#endif
    }
    else if ( sba_total_brate == IVAS_SID_5k2 )
    {
@@ -581,79 +559,6 @@ ivas_error ivas_dirac_sba_config(
    return error;
}

#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
/*-------------------------------------------------------------------------
 * ivas_dirac_getNumTransportChannels()
 *
 *
 *------------------------------------------------------------------------*/

/*! r: number of IVAS transport channels */
int16_t ivas_dirac_getNumTransportChannels(
    const int32_t sba_total_brate, /* i  : SBA total bitrate         */
    const int16_t sba_order,       /* i  : SBA order                 */
    const int16_t sba_planar       /* i  : SBA planar flag           */
)
{
    int16_t num_channels;

    num_channels = 0;

    if ( sba_total_brate >= DIRAC_MIN_BITRATE_8_TRANS_CHAN )
    {
        switch ( sba_order )
        {
            case 3:
                num_channels = sba_planar ? 7 : 8;
                break;
            case 2:
                num_channels = sba_planar ? 5 : 6;
                break;
            case 1:
                num_channels = sba_planar ? 3 : 4;
                break;
            default:
                assert( 0 && "Order not supported!" );
        }
    }
    else if ( sba_total_brate >= DIRAC_MIN_BITRATE_6_TRANS_CHAN )
    {
        switch ( sba_order )
        {
            case 3:
            case 2:
                num_channels = sba_planar ? 5 : 6;
                break;
            case 1:
                num_channels = sba_planar ? 3 : 4;
                break;
            default:
                assert( 0 && "Order not supported!" );
        }
    }
    else if ( sba_total_brate >= DIRAC_MIN_BITRATE_4_TRANS_CHAN )
    {
        if ( sba_planar )
        {
            num_channels = 3;
        }
        else
        {
            num_channels = 4;
        }
    }
    else if ( sba_total_brate >= DIRAC_MIN_BITRATE_2_TRANS_CHAN )
    {
        num_channels = 2;
    }
    else
    {
        num_channels = 1;
    }

    return num_channels;
}
#endif

/*-------------------------------------------------------------------------
 * computeDirectionVectors()
+4 −12
Original line number Diff line number Diff line
@@ -136,11 +136,11 @@ static void house_refl(
    }
    else
    {
        float _rcp = 1.f / ( *normu );
        float rcp = 1.f / ( *normu );

        for ( i = 0; i < sizex; i++ )
        {
            pu[i] *= _rcp;
            pu[i] *= rcp;
        }
        if ( pu[0] >= 0.f )
        {
@@ -152,15 +152,11 @@ static void house_refl(
            pu[0] -= 1;
        }

#ifdef FIX_I120_INV_SQRT
        _rcp = inv_sqrt( fabsf( pu[0] ) );
#else
        _rcp = 1.f / sqrtf( fabsf( pu[0] ) );
#endif
        rcp = inv_sqrt( fabsf( pu[0] ) );

        for ( i = 0; i < sizex; i++ )
        {
            pu[i] *= _rcp;
            pu[i] *= rcp;
        }
    }

@@ -649,11 +645,7 @@ static void norm_quat(

    norm_q = dotp( q, q, IVAS_PCA_INTERP );

#ifdef FIX_I120_INV_SQRT
    norm_q = inv_sqrt( norm_q ); // VE: TBV: possible division by 0
#else
    norm_q = 1 / sqrtf( norm_q ); // VE: TBV: possible division by 0
#endif

    for ( i = 0; i < IVAS_PCA_INTERP; i++ )
    {
+1 −26
Original line number Diff line number Diff line
@@ -3030,9 +3030,6 @@ void ivas_sba_config(
    int16_t *nSCE,                                              /* o  : number of SCEs                          */
    int16_t *nCPE,                                              /* o  : number of CPEs                          */
    int16_t *element_mode                                       /* o  : element mode of the core coder          */
#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
   ,const SBA_MODE sba_mode                                     /* i  : SBA mode                                */
#endif
);

ivas_error ivas_sba_dec_reconfigure(
@@ -3171,21 +3168,10 @@ ivas_error ivas_dirac_sba_config(
    int16_t *element_mode,                                      /* o  : element mode of the core coder                       */
    int32_t sba_total_brate,                                    /* i  : SBA total bitrate                                    */
    const int16_t sba_order,                                    /* i  : Ambisonic (SBA) order                                */
#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
    const int16_t sba_planar,                                   /* i  : SBA planar flag                                      */
#endif
    const SBA_MODE sba_mode,                                    /* i  : SBA mode                                             */
    const int16_t nbands                                        /* i  : number of frequency bands                            */
);

#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
/*! r: number of IVAS transport channels */
int16_t ivas_dirac_getNumTransportChannels(
    const int32_t sba_total_brate,                              /* i  : SBA total bitrate                       */
    const int16_t sba_order,                                    /* i  : SBA order                               */
    const int16_t sba_planar                                    /* i  : SBA Planar flag                         */
);
#endif
ivas_error ivas_dirac_dec_open(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                  */
);
@@ -3232,7 +3218,6 @@ void ivas_dirac_dec_binaural(
    const int16_t nchan_transport                               /* i  : number of transport channels            */
);

#ifdef SRAM_REDUCTION_BINRENDERER_ROOM
ivas_error ivas_binaural_reverb_open(
    REVERB_STRUCT_HANDLE *hReverbPr,                            /* i/o: binaural reverb handle                  */
    const int16_t numBins,                                      /* i  : number of CLDFB bins                    */
@@ -3242,13 +3227,7 @@ ivas_error ivas_binaural_reverb_open(
    const int32_t sampling_rate,                                /* i  : sampling rate                           */
    const RENDERER_TYPE renderer_type                           /* i  : renderer type                           */
);
#else
ivas_error ivas_binaural_reverb_open(
    REVERB_STRUCT_HANDLE *hReverbPr,                            /* i/o: binaural reverb handle                  */
    const int16_t numBins,                                      /* i  : number of CLDFB bins                    */
    const int16_t numCldfbSlotsPerFrame                         /* i  : number of CLDFB slots per frame         */
);
#endif

void ivas_binaural_reverb_close(
    REVERB_STRUCT_HANDLE *hReverb                               /* i/o: binaural reverb handle                  */
);
@@ -3839,12 +3818,8 @@ int16_t ivas_get_spar_table_idx(
    int16_t *ind                                                /* o  : indice                                  */
);

#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT
/*! r: number of transport channels */
int16_t ivas_get_sba_num_TCs( 
#else
int16_t ivas_get_spar_num_TCs( 
#endif
    const int32_t ivas_total_brate,                             /* i  : IVAS total bitrate                      */
    const int16_t sba_order                                     /* i  : IVAS SBA order                          */
);
Loading