Commit 8d2b4e1f authored by vaclav's avatar vaclav
Browse files

- FIX_DIRAC_CHANNELS - lower number of DirAC analysis channels

- FIX_CREND_CHANNELS - fix number of Crend channels
- HARMONIZE_SBA_NCHAN_TRANSPORT harmonize setting of number of transport channels in SBA
parent a55e7d9e
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1981,7 +1981,6 @@ ivas_error preview_indices(
        }
        else if ( st_ivas->ivas_format == SBA_FORMAT )
        {

            /* Read SBA planar flag and SBA order */
            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 );
@@ -1989,7 +1988,11 @@ 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
        }
    }

+9 −0
Original line number Diff line number Diff line
@@ -165,7 +165,9 @@ 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_CREND_CHANNELS
#define IVAS_MAX_NUM_CH                         16                          /* == MAX_OUTPUT_CHANNELS */
#endif

#define FOA_CHANNELS                            4                           /* number of FOA channels */

@@ -867,8 +869,15 @@ 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
+15 −5
Original line number Diff line number Diff line
@@ -142,8 +142,12 @@ 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;
        }
@@ -307,7 +311,9 @@ 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                            */
)
@@ -430,7 +436,11 @@ ivas_error ivas_dirac_sba_config(
    if ( sba_total_brate > IVAS_SID_4k4 )
#endif
    {
#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
    }
#ifdef ALIGN_SID_SIZE
    else if ( sba_total_brate == IVAS_SID_5k2 )
@@ -575,7 +585,7 @@ ivas_error ivas_dirac_sba_config(
    return error;
}


#ifndef HARMONIZE_SBA_NCHAN_TRANSPORT
/*-------------------------------------------------------------------------
 * ivas_dirac_getNumTransportChannels()
 *
@@ -647,7 +657,7 @@ int16_t ivas_dirac_getNumTransportChannels(

    return num_channels;
}

#endif

/*-------------------------------------------------------------------------
 * computeDirectionVectors()
+12 −2
Original line number Diff line number Diff line
@@ -3033,8 +3033,10 @@ void ivas_sba_config(
    const int16_t sba_planar,                                   /* i  : SBA planar flag                         */
    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          */
    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(
@@ -3173,18 +3175,21 @@ 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                  */
);
@@ -3827,7 +3832,12 @@ 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                          */
);
+9 −2
Original line number Diff line number Diff line
@@ -87,8 +87,11 @@ void ivas_sba_config(
    const int16_t sba_planar,      /* i  : SBA Planar flag                          */
    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           */
    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
)
{
    if ( ( sba_order < 0 ) && ( nb_channels < 0 ) )
@@ -117,6 +120,9 @@ void ivas_sba_config(

    if ( nchan_transport != NULL )
    {
#ifdef HARMONIZE_SBA_NCHAN_TRANSPORT
        *nchan_transport = ivas_get_sba_num_TCs( sba_total_brate, sba_order );
#else
        if ( sba_mode == SBA_MODE_SPAR )
        {
            *nchan_transport = ivas_get_spar_num_TCs( sba_total_brate, sba_order );
@@ -125,6 +131,7 @@ void ivas_sba_config(
        {
            *nchan_transport = ivas_dirac_getNumTransportChannels( sba_total_brate, sba_order, sba_planar );
        }
#endif
    }

    /* Configure core coder number of elements*/
Loading