Commit e6b83a83 authored by vaclav's avatar vaclav
Browse files

Merge remote-tracking branch...

Merge remote-tracking branch 'remotes/origin/521-harmonize-audio_config-with-ivas_rend_audioconfig' into framework_maintenance
parents 079dbd07 d89cabdb
Loading
Loading
Loading
Loading
+53 −50
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ typedef struct
    char *outputWavFilename;
    IVAS_DEC_MODE decMode;
    int32_t output_Fs;
    IVAS_DEC_AUDIO_CONFIG outputFormat;
    AUDIO_CONFIG outputFormat;
    bool quietModeEnabled;
    bool delayCompensationEnabled;
    bool voipMode;
@@ -292,7 +292,7 @@ int main(
    if ( arg.hrtfReaderEnabled )
    {
        /* sanity check */
        if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB )
        if ( arg.outputFormat != AUDIO_CONFIG_BINAURAL && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
        {
            arg.hrtfReaderEnabled = false;
            fprintf( stderr, "\nError: HRTF binary file cannot be used in this output configuration.\n\n" );
@@ -314,9 +314,9 @@ int main(
    if ( arg.enableHeadRotation )
    {
        /* sanity check */
        if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB
        if ( arg.outputFormat != AUDIO_CONFIG_BINAURAL && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_REVERB
#ifdef SPLIT_REND_WITH_HEAD_ROT
             && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM
             && arg.outputFormat != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputFormat != AUDIO_CONFIG_BINAURAL_SPLIT_PCM
#endif
        )
        {
@@ -338,7 +338,7 @@ int main(
    if ( arg.enableReferenceRotation )
    {
        /* sanity check */
        if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB )
        if ( arg.outputFormat != AUDIO_CONFIG_BINAURAL && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
        {
            fprintf( stderr, "\nError: Reference rotation file cannot be used in this output configuration.\n\n" );
            goto cleanup;
@@ -365,7 +365,7 @@ int main(
    if ( arg.enableReferenceVectorTracking )
    {
        /* sanity check */
        if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB )
        if ( arg.outputFormat != AUDIO_CONFIG_BINAURAL && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
        {
            fprintf( stderr, "\nError: Reference vector trajectory file cannot be used in this output configuration.\n\n" );
            goto cleanup;
@@ -418,9 +418,9 @@ int main(
    if ( arg.renderConfigEnabled )
    {
        /* sanity check */
        if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB
        if ( arg.outputFormat != AUDIO_CONFIG_BINAURAL && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_REVERB
#ifdef SPLIT_REND_WITH_HEAD_ROT
             && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED && arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM
             && arg.outputFormat != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputFormat != AUDIO_CONFIG_BINAURAL_SPLIT_PCM
#endif
        )
        {
@@ -438,8 +438,9 @@ int main(
    /*------------------------------------------------------------------------------------------*
     * Configure the decoder
     *------------------------------------------------------------------------------------------*/

#ifdef SPLIT_REND_WITH_HEAD_ROT
    if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED || arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM )
    if ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
        arg.enableHeadRotation = true;
    }
@@ -592,9 +593,9 @@ int main(

        /* sanity check */
#ifdef SPLIT_REND_WITH_HEAD_ROT
        if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB &&
             arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED &&
             arg.outputFormat != IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM )
        if ( arg.outputFormat != AUDIO_CONFIG_BINAURAL && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputFormat != AUDIO_CONFIG_BINAURAL_ROOM_REVERB &&
             arg.outputFormat != AUDIO_CONFIG_BINAURAL_SPLIT_CODED &&
             arg.outputFormat != AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
        {
            fprintf( stderr, "\nExternal Renderer Config is supported only when binaural output configurations is used as output OR when Split rendering mode is enabled. Exiting. \n" );
            exit( -1 );
@@ -622,6 +623,7 @@ int main(
            fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename );
            goto cleanup;
        }

#ifdef CONTROL_METADATA_DIRECTIVITY
        if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK )
        {
@@ -631,7 +633,7 @@ int main(
#endif

#ifdef CONTROL_METADATA_REVERB
        if ( arg.outputFormat == IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB )
        if ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
        {
            if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, arg.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK )
            {
@@ -649,6 +651,7 @@ int main(
            renderConfig.room_acoustics.override = true;
        }
#endif

        if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
@@ -839,10 +842,10 @@ cleanup:
 * Translate command-line argument to output configuration
 *---------------------------------------------------------------------*/

static IVAS_DEC_AUDIO_CONFIG cmdline2config(
static AUDIO_CONFIG cmdline2config(
    char *argv )
{
    IVAS_DEC_AUDIO_CONFIG output_config;
    AUDIO_CONFIG output_config;

    char argv_to_upper[FILENAME_MAX];

@@ -852,73 +855,73 @@ static IVAS_DEC_AUDIO_CONFIG cmdline2config(

    if ( strcmp( argv_to_upper, "EXT" ) == 0 ) /* external renderer */
    {
        output_config = IVAS_DEC_OUTPUT_EXT;
        output_config = AUDIO_CONFIG_EXTERNAL;
    }
    else if ( strcmp( argv_to_upper, "MONO" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_MONO;
        output_config = AUDIO_CONFIG_MONO;
    }
    else if ( strcmp( argv_to_upper, "STEREO" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_STEREO;
        output_config = AUDIO_CONFIG_STEREO;
    }
    else if ( strcmp( argv_to_upper, "5_1" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_5_1;
        output_config = AUDIO_CONFIG_5_1;
    }
    else if ( strcmp( argv_to_upper, "7_1" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_7_1;
        output_config = AUDIO_CONFIG_7_1;
    }
    else if ( strcmp( argv_to_upper, "5_1_2" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_5_1_2;
        output_config = AUDIO_CONFIG_5_1_2;
    }
    else if ( strcmp( argv_to_upper, "5_1_4" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_5_1_4;
        output_config = AUDIO_CONFIG_5_1_4;
    }
    else if ( strcmp( argv_to_upper, "7_1_4" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_7_1_4;
        output_config = AUDIO_CONFIG_7_1_4;
    }
    else if ( strcmp( argv_to_upper, "FOA" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_FOA;
        output_config = AUDIO_CONFIG_FOA;
    }
    else if ( strcmp( argv_to_upper, "HOA2" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_HOA2;
        output_config = AUDIO_CONFIG_HOA2;
    }
    else if ( strcmp( argv_to_upper, "HOA3" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_HOA3;
        output_config = AUDIO_CONFIG_HOA3;
    }
    else if ( strcmp( argv_to_upper, "BINAURAL" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_BINAURAL;
        output_config = AUDIO_CONFIG_BINAURAL;
    }
#ifdef SPLIT_REND_WITH_HEAD_ROT
    else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_CODED" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED;
        output_config = AUDIO_CONFIG_BINAURAL_SPLIT_CODED;
    }
    else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_PCM" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM;
        output_config = AUDIO_CONFIG_BINAURAL_SPLIT_PCM;
    }
#endif
    else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_IR" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR;
        output_config = AUDIO_CONFIG_BINAURAL_ROOM_IR;
    }
    else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_REVERB" ) == 0 )
    {
        output_config = IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB;
        output_config = AUDIO_CONFIG_BINAURAL_ROOM_REVERB;
    }
    else
    {
        output_config = IVAS_DEC_OUTPUT_LS_CUSTOM;
        output_config = AUDIO_CONFIG_LS_CUSTOM;
    }

    return output_config;
@@ -948,7 +951,7 @@ static bool parseCmdlIVAS_dec(
#endif
#endif
    arg->output_Fs = 48000;
    arg->outputFormat = IVAS_DEC_OUTPUT_MONO;
    arg->outputFormat = AUDIO_CONFIG_MONO;
    arg->decMode = IVAS_DEC_MODE_IVAS;
    arg->quietModeEnabled = false;
    arg->delayCompensationEnabled = true;
@@ -1419,13 +1422,13 @@ static bool parseCmdlIVAS_dec(
    if ( i < argc - 3 )
    {
        arg->outputFormat = cmdline2config( argv[i] );
        if ( arg->outputFormat == IVAS_DEC_OUTPUT_LS_CUSTOM )
        if ( arg->outputFormat == AUDIO_CONFIG_LS_CUSTOM )
        {
            arg->customLsOutputEnabled = true;
            arg->customLsSetupFilename = argv[i];
        }
        i++;
        if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputFormat != IVAS_DEC_OUTPUT_STEREO ) )
        if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputFormat != AUDIO_CONFIG_STEREO ) )
        {
            fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" );
            usage_dec();
@@ -1434,11 +1437,11 @@ static bool parseCmdlIVAS_dec(
    }
    else
    {
        arg->outputFormat = IVAS_DEC_OUTPUT_MONO;
        arg->outputFormat = AUDIO_CONFIG_MONO;
        arg->decMode = IVAS_DEC_MODE_EVS;
        if ( ( arg->Opt_non_diegetic_pan ) )
        {
            arg->outputFormat = IVAS_DEC_OUTPUT_STEREO;
            arg->outputFormat = AUDIO_CONFIG_STEREO;
        }
    }

@@ -1642,8 +1645,8 @@ static ivas_error initOnFirstGoodFrame(
        return error;
    }
#ifdef SPLIT_REND_WITH_HEAD_ROT
    if ( ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) ||
         ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) )
    if ( ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ||
         ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) )
    {
        pFullDelayNumSamples[0] = 0;
    }
@@ -1670,7 +1673,7 @@ static ivas_error initOnFirstGoodFrame(
    }

#ifdef SPLIT_REND_WITH_HEAD_ROT
    if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED )
    if ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_CODED )
    {
        int16_t delayNumSamples_temp[3];
        int32_t delayTimeScale_temp;
@@ -1685,7 +1688,7 @@ static ivas_error initOnFirstGoodFrame(
    }
    else
    {
        if ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM )
        if ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
        {
            int16_t delayNumSamples_temp[3];
            int32_t delayTimeScale_temp;
@@ -1753,7 +1756,7 @@ static ivas_error initOnFirstGoodFrame(
    free( zeroBuf );

    /* Open other output files if EXT output config - now details about ISM or MASA are known */
    if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
    if ( arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
    {
        if ( ( error = IVAS_DEC_GetFormat( hIvasDec, pBsFormat ) ) != IVAS_ERR_OK )
        {
@@ -2139,7 +2142,7 @@ static ivas_error decodeG192(
        if ( decodedGoodFrame )
        {
#ifdef SPLIT_REND_WITH_HEAD_ROT
            if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_CODED ) )
            if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) )
            {
                if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written,
                                                         splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK )
@@ -2150,7 +2153,7 @@ static ivas_error decodeG192(
            }
            else
            {
                if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == IVAS_DEC_OUTPUT_SPLIT_BINAURAL_PCM ) )
                if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputFormat == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
                {
                    if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written,
                                                             splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK )
@@ -2179,7 +2182,7 @@ static ivas_error decodeG192(
        }

        /* Write MASA/ISM metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
        if ( decodedGoodFrame && arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
        {
#ifdef MASA_AND_OBJECTS
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM
@@ -2292,7 +2295,7 @@ static ivas_error decodeG192(
    }

    /* Print output metadata file name(s) */
    if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
    if ( arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
    {
        if ( bsFormat == IVAS_DEC_BS_OBJ )
        {
@@ -2777,7 +2780,7 @@ static ivas_error decodeVoIP(
            }

            /* Write ISM metadata to external file(s) */
            if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
            if ( decodedGoodFrame && arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
            {
                int16_t i;

@@ -3217,7 +3220,7 @@ static ivas_error decodeVariableSpeed(
        }

        /* Write ISm metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
        if ( decodedGoodFrame && arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
        {
#ifdef MASA_AND_OBJECTS
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM )
@@ -3405,7 +3408,7 @@ static ivas_error decodeVariableSpeed(
        }

        /* Write ISm metadata to external file(s) */
        if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
        if ( decodedGoodFrame && arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
        {
#ifdef MASA_AND_OBJECTS
            if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM )
@@ -3491,7 +3494,7 @@ static ivas_error decodeVariableSpeed(
    }

    /* Print output metadata file name(s) */
    if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT )
    if ( arg.outputFormat == AUDIO_CONFIG_EXTERNAL )
    {
        if ( bsFormat == IVAS_DEC_BS_OBJ )
        {
+82 −82

File changed.

Preview size limit exceeded, changes collapsed.

+35 −0
Original line number Diff line number Diff line
@@ -56,6 +56,41 @@
#define QC_ABS_COEFF 6
#endif

/*----------------------------------------------------------------------------------*
 * Common API enum for output audio configurations
 *----------------------------------------------------------------------------------*/

typedef enum _IVAS_AUDIO_CONFIG
{
    AUDIO_CONFIG_INVALID,
    AUDIO_CONFIG_MONO,                 /* mono output                            */
    AUDIO_CONFIG_STEREO,               /* stereo output                          */
    AUDIO_CONFIG_5_1,                  /* 5.1 speakers layout CICP6              */
    AUDIO_CONFIG_7_1,                  /* 7.1 speakers layout CICP12             */
    AUDIO_CONFIG_5_1_2,                /* 5.1+2 speakers layout CICP14           */
    AUDIO_CONFIG_5_1_4,                /* 5.1+4 speakers layout CICP16           */
    AUDIO_CONFIG_7_1_4,                /* 7.1+4 speakers layout CICP19           */
    AUDIO_CONFIG_LS_CUSTOM,            /* custom loudspeaker layout              */
    AUDIO_CONFIG_FOA,                  /* ambisonics, order 1                    */
    AUDIO_CONFIG_HOA2,                 /* ambisonics, order 2                    */
    AUDIO_CONFIG_HOA3,                 /* ambisonics, order 3                    */
    AUDIO_CONFIG_OBA,                  /* object based audio                     */
    AUDIO_CONFIG_BINAURAL,             /* binaural with HRIR                     */
    AUDIO_CONFIG_BINAURAL_SPLIT_CODED, /* split binaural with CLDFB coded output */
    AUDIO_CONFIG_BINAURAL_SPLIT_PCM,   /* split binaural with PCM coded output   */
    AUDIO_CONFIG_BINAURAL_ROOM_IR,     /* binaural with BRIR                     */
    AUDIO_CONFIG_BINAURAL_ROOM_REVERB, /* binaural with HRIR + reverb            */
    AUDIO_CONFIG_ISM1,                 /* ISM1                                   */
    AUDIO_CONFIG_ISM2,                 /* ISM2                                   */
    AUDIO_CONFIG_ISM3,                 /* ISM3                                   */
    AUDIO_CONFIG_ISM4,                 /* ISM4                                   */
    AUDIO_CONFIG_MASA1,                /* MASA1                                  */
    AUDIO_CONFIG_MASA2,                /* MASA2                                  */
    AUDIO_CONFIG_EXTERNAL              /* external renderer                      */

} AUDIO_CONFIG;


/*----------------------------------------------------------------------------------*
 * Common API structures
 *----------------------------------------------------------------------------------*/
+10 −43
Original line number Diff line number Diff line
@@ -89,49 +89,6 @@ typedef enum
#endif


/*----------------------------------------------------------------------------------*
 * IVAS output audio configurations
 *----------------------------------------------------------------------------------*/

typedef enum 
{ 
    AUDIO_CONFIG_INVALID, 
    AUDIO_CONFIG_MONO,                          /* mono output                  */
    AUDIO_CONFIG_STEREO,                        /* stereo output                */
    AUDIO_CONFIG_5_1,                           /* 5.1 speakers layout CICP6    */
    AUDIO_CONFIG_7_1,                           /* 7.1 speakers layout CICP12   */
    AUDIO_CONFIG_5_1_2,                         /* 5.1+2 speakers layout CICP14 */
    AUDIO_CONFIG_5_1_4,                         /* 5.1+4 speakers layout CICP16 */
    AUDIO_CONFIG_7_1_4,                         /* 7.1+4 speakers layout CICP19 */
    AUDIO_CONFIG_LS_CUSTOM,                     /* custom loudspeaker layout    */
    AUDIO_CONFIG_FOA,                           /* ambisonics, order 1          */
    AUDIO_CONFIG_HOA2,                          /* ambisonics, order 2          */
    AUDIO_CONFIG_HOA3,                          /* ambisonics, order 3          */
    AUDIO_CONFIG_OBA,                           /* object based audio           */
    AUDIO_CONFIG_BINAURAL,                      /* binaural with HRIR           */
#ifdef SPLIT_REND_WITH_HEAD_ROT
    AUDIO_CONFIG_BINAURAL_SPLIT_CODED,          /* split binaural with CLDFB coded output */
	AUDIO_CONFIG_BINAURAL_SPLIT_PCM,            /* split binaural with PCM coded output   */
#endif
    AUDIO_CONFIG_BINAURAL_ROOM_IR,              /* binaural with BRIR           */
    AUDIO_CONFIG_BINAURAL_ROOM_REVERB,          /* binaural with HRIR + reverb  */
    AUDIO_CONFIG_ISM1,                          /* ISM1                         */
    AUDIO_CONFIG_ISM2,                          /* ISM2                         */
    AUDIO_CONFIG_ISM3,                          /* ISM3                         */
    AUDIO_CONFIG_ISM4,                          /* ISM4                         */
    AUDIO_CONFIG_MASA1,                         /* MASA1                        */ // TODO: seems not to be used
    AUDIO_CONFIG_MASA2,                         /* MASA2                        */ // TODO: seems not to be used
    AUDIO_CONFIG_EXTERNAL                       /* external renderer            */

} AUDIO_CONFIG;

typedef enum
{
    RENDER_TYPE_OVERRIDE_NONE,
    RENDER_TYPE_OVERRIDE_CREND,
    RENDER_TYPE_OVERRIDE_FASTCONV
} ivas_renderTypeOverride;

/*----------------------------------------------------------------------------------*
 * IVAS rendering configurations
 *----------------------------------------------------------------------------------*/
@@ -176,6 +133,16 @@ typedef enum
#endif
} RENDERER_TYPE;

#ifdef DEBUGGING
typedef enum
{
    RENDER_TYPE_OVERRIDE_NONE,
    RENDER_TYPE_OVERRIDE_CREND,
    RENDER_TYPE_OVERRIDE_FASTCONV

} ivas_renderTypeOverride;
#endif

/*----------------------------------------------------------------------------------*
 * IVAS general constants
 *----------------------------------------------------------------------------------*/
+5 −8
Original line number Diff line number Diff line
@@ -1040,15 +1040,14 @@ static void ivas_binaural_obtain_DMX(

ivas_error ivas_rend_openCldfbRend(
    CLDFB_REND_WRAPPER *pCldfbRend,
    const IVAS_REND_AudioConfig inConfig,
    const IVAS_REND_AudioConfig outConfig,
    const AUDIO_CONFIG inConfig,
    const AUDIO_CONFIG outConfig,
    const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    const int32_t output_Fs )
{
    BINAURAL_RENDERER_HANDLE hBinRenderer;
    int16_t convBand;
    ivas_error error;
    AUDIO_CONFIG in_config, out_config;

    error = IVAS_ERR_OK;

@@ -1073,8 +1072,6 @@ ivas_error ivas_rend_openCldfbRend(
    convBand = hBinRenderer->max_band;

    hBinRenderer->timeSlots = MAX_PARAM_SPATIAL_SUBFRAMES; /* Corresponds to 5 msec sound to motion latency */
    in_config = getIvasAudioConfigFromRendAudioConfig( inConfig );
    out_config = getIvasAudioConfigFromRendAudioConfig( outConfig );

    if ( convBand > BINAURAL_CONVBANDS )
    {
@@ -1085,10 +1082,10 @@ ivas_error ivas_rend_openCldfbRend(
        hBinRenderer->conv_band = convBand;
    }
    hBinRenderer->hInputSetup->is_loudspeaker_setup = 0;
    hBinRenderer->hInputSetup->output_config = in_config;
    hBinRenderer->hInputSetup->output_config = inConfig;
    getAudioConfigNumChannels( inConfig, &hBinRenderer->hInputSetup->nchan_out_woLFE );

    if ( ( out_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || ( out_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
    if ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
    {
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
        hBinRenderer->numPoses = pMultiBinPoseData->num_poses + 1;
@@ -1109,7 +1106,7 @@ ivas_error ivas_rend_openCldfbRend(


    /* Allocate memories and buffers needed for convolutional module */
    if ( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, RENDERER_BINAURAL_FASTCONV, hBinRenderer->hInputSetup->is_loudspeaker_setup, in_config,
    if ( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, RENDERER_BINAURAL_FASTCONV, hBinRenderer->hInputSetup->is_loudspeaker_setup, inConfig,
                                                    pCldfbRend->hHrtfFastConv, hBinRenderer->numPoses ) ) != IVAS_ERR_OK )
    {
        return error;
Loading