Commit 4e3f64e6 authored by vaclav's avatar vaclav
Browse files

Merge branch 'main' into 115_bitrateswitching_ISM

parents 41867f8f 92f8790a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -481,6 +481,8 @@ codec-comparison-on-main-push:
    when: always
    paths:
      - ep_015.g192
      # second wildcard is necessary to get encoder and no-PLC run logs
      - "CLANG*/logs*"

sanitizer-test-mono:
  extends: .sanitizer-test-template
+11 −3
Original line number Diff line number Diff line
@@ -93,12 +93,20 @@ def run_check(modes: list, out_formats: list, tests: list, run_fec: bool = True)
    subprocess.call(GENPATT_CMD.split())

    # cleanup to avoid script errors
    # we want "logs" and "dec" subfolders to be empty -> delete and recreate them
    cleanup_folders = ["logs", "dec"]
    # we want "logs" and "dec" subfolders to be empty -> delete "dec" and rename "log"
    # to keep the log files from the first run with no frame losses
    folders_to_delete = ["dec"]
    folders_to_backup = ["logs"]
    for t in tests:
        for fol in cleanup_folders:
        for fol in folders_to_delete:
            for fi in pathlib.Path(t).joinpath(fol).iterdir():
                fi.unlink()
        for fol in folders_to_backup:
            path = pathlib.Path(t).joinpath(fol)
            new_name = pathlib.Path(str(path) + "_noPLC")
            path.rename(new_name)
            # need empty log folder to avoid crashes
            path.mkdir()

    cmd_fec = cmd_no_fec + ["--decoder_only", "-f", EP_FILE]
    print("======== Script command line WITH plc: ========\n{}".format(" ".join(cmd_no_fec)))
+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
        }
    }

+2 −16
Original line number Diff line number Diff line
@@ -166,10 +166,9 @@ typedef enum
#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) */

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

#define BINAURAL_CHANNELS                       2                           /* number of channels for binaural output configuration */
#define CPE_CHANNELS                            2                           /* number of CPE (stereo) channels */
#define FOA_CHANNELS                            4                           /* number of FOA channels */
#define MAX_NUM_OBJECTS                         4                           /* max. number of audio objects */

#define MAX_SCE                                 MAX_NUM_OBJECTS             /* max. number of SCEs */
@@ -854,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 */
@@ -934,7 +920,7 @@ typedef enum

#define SPAR_CONFIG_BW                          FB

#define IVAS_SPAR_MAX_CH                        (2*IVAS_MAX_SBA_ORDER + 2) /* FOA + planar HOA */
#define IVAS_SPAR_MAX_CH                        (FOA_CHANNELS + 2 * ( IVAS_MAX_SBA_ORDER - 1 )) /* FOA + planar HOA */

#define IVAS_SPAR_P_LOWERTRI                    ((IVAS_SPAR_MAX_CH - 1) * (IVAS_SPAR_MAX_CH - 2)) >> 1
#define IVAS_SPAR_MAX_C_COEFF                   (IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS) * ( IVAS_SPAR_MAX_DMX_CHS - 1)
+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()
Loading