Commit eeb83cc5 authored by multrus's avatar multrus
Browse files

merge from main

parents 3e1d4a77 2fb83978
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -132,7 +132,6 @@
    <ClCompile Include="..\lib_com\basop_util.c" />
    <ClCompile Include="..\lib_com\basop_util.c" />
    <ClCompile Include="..\lib_com\bitallocsum_fx.c" />
    <ClCompile Include="..\lib_com\bitallocsum_fx.c" />
    <ClCompile Include="..\lib_com\bitalloc_fx.c" />
    <ClCompile Include="..\lib_com\bitalloc_fx.c" />
    <ClCompile Include="..\lib_com\bitstream.c" />
    <ClCompile Include="..\lib_com\bitstream_fx.c" />
    <ClCompile Include="..\lib_com\bitstream_fx.c" />
    <ClCompile Include="..\lib_com\bits_alloc_fx.c" />
    <ClCompile Include="..\lib_com\bits_alloc_fx.c" />
    <ClCompile Include="..\lib_com\cb_shape_fx.c" />
    <ClCompile Include="..\lib_com\cb_shape_fx.c" />
+209 −638

File changed.

Preview size limit exceeded, changes collapsed.

+43 −45
Original line number Original line Diff line number Diff line
@@ -431,7 +431,7 @@ int main(
    {
    {
        if ( ( error = IVAS_DEC_EnableSplitRendering( hIvasDec ) ) != IVAS_ERR_OK )
        if ( ( error = IVAS_DEC_EnableSplitRendering( hIvasDec ) ) != IVAS_ERR_OK )
        {
        {
            fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            fprintf( stderr, "\nSplit rendering configure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
            goto cleanup;
        }
        }


@@ -512,8 +512,7 @@ int main(
            goto cleanup;
            goto cleanup;
        }
        }
#endif
#endif
        if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ||
        if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
               arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
        {
        {
            if ( asked_frame_size != IVAS_RENDER_FRAMESIZE_20MS &&
            if ( asked_frame_size != IVAS_RENDER_FRAMESIZE_20MS &&
                 ( renderConfig.split_rend_config.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ||
                 ( renderConfig.split_rend_config.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ||
@@ -563,6 +562,7 @@ int main(
            }
            }
            renderConfig.roomAcoustics.override = true;
            renderConfig.roomAcoustics.override = true;
        }
        }

        /* ISAR frame size is set from command line, not renderer config file.
        /* ISAR frame size is set from command line, not renderer config file.
         * This will be ignored if output format is not split rendering. */
         * This will be ignored if output format is not split rendering. */
        renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) arg.renderFramesize /* given in number of 5ms subframes */ * 5;
        renderConfig.split_rend_config.isar_frame_size_ms = (int16_t) arg.renderFramesize /* given in number of 5ms subframes */ * 5;
@@ -1207,7 +1207,7 @@ static bool parseCmdlIVAS_dec(
            arg->outputMdFilename = argv[i + 1];
            arg->outputMdFilename = argv[i + 1];
            if ( arg->outputMdFilename[0] == '\0' )
            if ( arg->outputMdFilename[0] == '\0' )
            {
            {
                fprintf( stderr, "Error: output metadata file path not specified\n\n" );
                fprintf( stderr, "Error: Split rendering output metadata file path not specified\n\n" );
                usage_dec();
                usage_dec();
                return false;
                return false;
            }
            }
@@ -1632,6 +1632,7 @@ static ivas_error initOnFirstGoodFrame(
    uint16_t *pNumObj,                               /* o  : */
    uint16_t *pNumObj,                               /* o  : */
    SplitFileReadWrite **splitRendWriter )
    SplitFileReadWrite **splitRendWriter )
{
{
    int16_t isSplitRend, isSplitCoded;
    ivas_error error = IVAS_ERR_UNKNOWN;
    ivas_error error = IVAS_ERR_UNKNOWN;


    /* Now delay, number of output channels and frame size are known */
    /* Now delay, number of output channels and frame size are known */
@@ -1641,7 +1642,19 @@ static ivas_error initOnFirstGoodFrame(
        return error;
        return error;
    }
    }


    if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
    if ( ( error = IVAS_DEC_is_split_rendering_enabled( hIvasDec, &isSplitRend ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_enabled, code: %d\n", error );
        return error;
    }

    if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error );
        return error;
    }

    if ( isSplitRend )
    {
    {
        pFullDelayNumSamples[0] = 0;
        pFullDelayNumSamples[0] = 0;
    }
    }
@@ -1666,7 +1679,7 @@ static ivas_error initOnFirstGoodFrame(
        return error;
        return error;
    }
    }


    if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
    if ( isSplitRend )
    {
    {
        /* Open split rendering metadata writer */
        /* Open split rendering metadata writer */
        int16_t delayNumSamples_temp[3];
        int16_t delayNumSamples_temp[3];
@@ -1683,29 +1696,15 @@ static ivas_error initOnFirstGoodFrame(
            return error;
            return error;
        }
        }


        if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec,
        if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, &splitRendCodec, &poseCorrection, &splitRendIsarFrameSizeMs, &splitRendCodecFrameSizeMs, &lc3plusHighRes ) ) != IVAS_ERR_OK )
                                                             &splitRendCodec,
                                                             &poseCorrection,
                                                             &splitRendIsarFrameSizeMs,
                                                             &splitRendCodecFrameSizeMs,
                                                             &lc3plusHighRes ) ) != IVAS_ERR_OK )
        {
        {
            fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) );
            fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) );
            return error;
            return error;
        }
        }


        if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) )
        if ( isSplitCoded )
        {
        {
            if ( ( error = split_rend_writer_open( splitRendWriter,
            if ( ( error = split_rend_writer_open( splitRendWriter, arg.outputWavFilename, delayNumSamples_temp[0], delayTimeScale_temp, splitRendCodec, poseCorrection, splitRendCodecFrameSizeMs, splitRendIsarFrameSizeMs, arg.output_Fs, lc3plusHighRes ) ) != IVAS_ERR_OK )
                                                   arg.outputWavFilename,
                                                   delayNumSamples_temp[0],
                                                   delayTimeScale_temp,
                                                   splitRendCodec,
                                                   poseCorrection,
                                                   splitRendCodecFrameSizeMs,
                                                   splitRendIsarFrameSizeMs,
                                                   arg.output_Fs,
                                                   lc3plusHighRes ) ) != IVAS_ERR_OK )
            {
            {
                fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename );
                fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename );
                return error;
                return error;
@@ -1719,16 +1718,7 @@ static ivas_error initOnFirstGoodFrame(
                return IVAS_ERR_INVALID_SPLIT_REND_CONFIG;
                return IVAS_ERR_INVALID_SPLIT_REND_CONFIG;
            }
            }


            if ( ( error = split_rend_writer_open( splitRendWriter,
            if ( ( error = split_rend_writer_open( splitRendWriter, arg.outputMdFilename, delayNumSamples_temp[0], delayTimeScale_temp, splitRendCodec, poseCorrection, splitRendCodecFrameSizeMs, splitRendIsarFrameSizeMs, arg.output_Fs, lc3plusHighRes ) ) != IVAS_ERR_OK )
                                                   arg.outputMdFilename,
                                                   delayNumSamples_temp[0],
                                                   delayTimeScale_temp,
                                                   splitRendCodec,
                                                   poseCorrection,
                                                   splitRendCodecFrameSizeMs,
                                                   splitRendIsarFrameSizeMs,
                                                   arg.output_Fs,
                                                   lc3plusHighRes ) ) != IVAS_ERR_OK )
            {
            {
                fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename );
                fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename );
                return error;
                return error;
@@ -1736,7 +1726,7 @@ static ivas_error initOnFirstGoodFrame(
        }
        }
    }
    }


    if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 )
    if ( !isSplitCoded )
    {
    {
        /* Open audio writer and write all previously skipped bad frames now that frame size is known */
        /* Open audio writer and write all previously skipped bad frames now that frame size is known */
        if ( ( error = AudioFileWriter_open( ppAfWriter, arg.outputWavFilename, arg.output_Fs, *pNumOutChannels ) ) != IVAS_ERR_OK )
        if ( ( error = AudioFileWriter_open( ppAfWriter, arg.outputWavFilename, arg.output_Fs, *pNumOutChannels ) ) != IVAS_ERR_OK )
@@ -1771,7 +1761,6 @@ static ivas_error initOnFirstGoodFrame(
        }
        }
        else
        else
        {
        {

            if ( *pRemainingDelayNumSamples < *numOutSamples )
            if ( *pRemainingDelayNumSamples < *numOutSamples )
            {
            {
                if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, *numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK )
                if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, *numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK )
@@ -1941,11 +1930,23 @@ static ivas_error decodeG192(
    IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES] = { { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 } };
    IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES] = { { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 } };
    int16_t vec_pos_update, vec_pos_len;
    int16_t vec_pos_update, vec_pos_len;
    SplitFileReadWrite *splitRendWriter = NULL;
    SplitFileReadWrite *splitRendWriter = NULL;

    int16_t isSplitRend, isSplitCoded;
#ifdef FIX_1053_REVERB_RECONFIGURATION
#ifdef FIX_1053_REVERB_RECONFIGURATION
    IVAS_RENDER_CONFIG_DATA renderConfig;
    IVAS_RENDER_CONFIG_DATA renderConfig;
    RenderConfigReader *renderConfigReader = NULL;
    RenderConfigReader *renderConfigReader = NULL;


    if ( ( error = IVAS_DEC_is_split_rendering_enabled( hIvasDec, &isSplitRend ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_enabled, code: %d\n", error );
        return error;
    }

    if ( ( error = IVAS_DEC_is_split_rendering_coded_out( hIvasDec, &isSplitCoded ) ) != IVAS_ERR_OK )
    {
        fprintf( stderr, "\nError in IVAS_DEC_is_split_rendering_coded_out, code: %d\n", error );
        return error;
    }

    if ( arg.renderConfigEnabled )
    if ( arg.renderConfigEnabled )
    {
    {
        if ( ( error = RenderConfigReader_open( arg.renderConfigFilename, &renderConfigReader ) ) != IVAS_ERR_OK )
        if ( ( error = RenderConfigReader_open( arg.renderConfigFilename, &renderConfigReader ) ) != IVAS_ERR_OK )
@@ -1976,7 +1977,6 @@ static ivas_error decodeG192(
    /* we always start with needing a new frame */
    /* we always start with needing a new frame */
    needNewFrame = true;
    needNewFrame = true;



    if ( !arg.quietModeEnabled )
    if ( !arg.quietModeEnabled )
    {
    {
        fprintf( stdout, "\n------ Running the decoder ------\n\n" );
        fprintf( stdout, "\n------ Running the decoder ------\n\n" );
@@ -2008,13 +2008,13 @@ static ivas_error decodeG192(
        return error;
        return error;
    }
    }



    /*------------------------------------------------------------------------------------------*
    /*------------------------------------------------------------------------------------------*
     * Loop for every packet (frame) of bitstream data
     * Loop for every packet (frame) of bitstream data
     * - Read the bitstream packet
     * - Read the bitstream packet
     * - Run the decoder
     * - Run the decoder
     * - Write the synthesized signal into output file
     * - Write the synthesized signal into output file
     *------------------------------------------------------------------------------------------*/
     *------------------------------------------------------------------------------------------*/

    while ( 1 )
    while ( 1 )
    {
    {
        /* Read next frame if not enough samples availble */
        /* Read next frame if not enough samples availble */
@@ -2184,7 +2184,7 @@ static ivas_error decodeG192(
                }
                }
            }
            }


            if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
            if ( isSplitRend )
            {
            {
                if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (Word16 *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK )
                if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (Word16 *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK )
                {
                {
@@ -2249,7 +2249,7 @@ static ivas_error decodeG192(
        /* Write current frame */
        /* Write current frame */
        if ( decodedGoodFrame )
        if ( decodedGoodFrame )
        {
        {
            if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) )
            if ( isSplitRend )
            {
            {
                if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK )
                if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK )
                {
                {
@@ -2258,7 +2258,7 @@ static ivas_error decodeG192(
                }
                }
            }
            }


            if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 )
            if ( !isSplitCoded )
            {
            {
                if ( delayNumSamples < nOutSamples )
                if ( delayNumSamples < nOutSamples )
                {
                {
@@ -2825,8 +2825,7 @@ static ivas_error decodeVoIP(
                {
                {
                    if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK )
                    if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK )
                    {
                    {
                        fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ),
                        fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) );
                                 RotationFileReader_getFilePath( headRotReader ) );
                        goto cleanup;
                        goto cleanup;
                    }
                    }
                }
                }
@@ -2834,8 +2833,7 @@ static ivas_error decodeVoIP(


            for ( i = 0; i < num_subframes; i++ )
            for ( i = 0; i < num_subframes; i++ )
            {
            {
                if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i,
                if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i, DEFAULT_AXIS ) ) != IVAS_ERR_OK )
                                                           DEFAULT_AXIS ) ) != IVAS_ERR_OK )
                {
                {
                    fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                    fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) );
                    goto cleanup;
                    goto cleanup;
+36 −7
Original line number Original line Diff line number Diff line
@@ -31,9 +31,6 @@
*******************************************************************************************************/
*******************************************************************************************************/


#include "lib_isar_post_rend.h"
#include "lib_isar_post_rend.h"
//#undef IVAS_FLOAT_FIXED


#include <assert.h>
#include <assert.h>
#include <math.h>
#include <math.h>
#include <string.h>
#include <string.h>
@@ -268,9 +265,6 @@ static int16_t getTotalNumInChannels(
    return totalNumInChannels;
    return totalNumInChannels;
}
}


/*------------------------------------------------------------------------------------------*
 * Local functions
 *------------------------------------------------------------------------------------------*/


static const CmdLnParser_Option *findOptionById(
static const CmdLnParser_Option *findOptionById(
    const int32_t id )
    const int32_t id )
@@ -433,6 +427,7 @@ static bool checkRequiredArgs(
    return !missingRequiredArg;
    return !missingRequiredArg;
}
}



static CmdlnArgs defaultArgs(
static CmdlnArgs defaultArgs(
    const char *executableName )
    const char *executableName )
{
{
@@ -463,6 +458,7 @@ static CmdlnArgs defaultArgs(
    return args;
    return args;
}
}



static void parseOption(
static void parseOption(
    const int32_t optionId,
    const int32_t optionId,
    char **optionValues,
    char **optionValues,
@@ -555,6 +551,7 @@ static void parseOption(
    return;
    return;
}
}



static CmdlnArgs parseCmdlnArgs(
static CmdlnArgs parseCmdlnArgs(
    const int argc,
    const int argc,
    char **argv )
    char **argv )
@@ -631,6 +628,7 @@ static void convertInputBuffer(
    return;
    return;
}
}



/*--------------------------------------------------------------------------*
/*--------------------------------------------------------------------------*
 * convertOutputBuffer()
 * convertOutputBuffer()
 *
 *
@@ -672,6 +670,7 @@ static void convertOutputBuffer(
    return;
    return;
}
}



/*------------------------------------------------------------------------------------------*
/*------------------------------------------------------------------------------------------*
 * main()
 * main()
 *
 *
@@ -731,12 +730,20 @@ int main(
    bitsBuffer.config.isar_frame_size_ms = 20;
    bitsBuffer.config.isar_frame_size_ms = 20;
    bitsBuffer.config.lc3plusHighRes = 0;
    bitsBuffer.config.lc3plusHighRes = 0;


    /*------------------------------------------------------------------------------------------*
     * Parse command-line arguments
     *------------------------------------------------------------------------------------------*/

    CmdlnArgs args = parseCmdlnArgs( argc, argv );
    CmdlnArgs args = parseCmdlnArgs( argc, argv );


    convert_backslash( args.inputFilePath );
    convert_backslash( args.inputFilePath );
    convert_backslash( args.outputFilePath );
    convert_backslash( args.outputFilePath );
    convert_backslash( args.headRotationFilePath );
    convert_backslash( args.headRotationFilePath );


    /*------------------------------------------------------------------------------------------*
     * Open head-rotation file
     *------------------------------------------------------------------------------------------*/

    if ( !isEmptyString( args.headRotationFilePath ) )
    if ( !isEmptyString( args.headRotationFilePath ) )
    {
    {
        if ( RotationFileReader_open( args.headRotationFilePath, &headRotReader ) != IVAS_ERR_OK )
        if ( RotationFileReader_open( args.headRotationFilePath, &headRotReader ) != IVAS_ERR_OK )
@@ -746,6 +753,10 @@ int main(
        }
        }
    }
    }


    /*------------------------------------------------------------------------------------------*
     * Open BFI file
     *------------------------------------------------------------------------------------------*/

    if ( !isEmptyString( args.splitRendBFIFilePath ) )
    if ( !isEmptyString( args.splitRendBFIFilePath ) )
    {
    {
        convert_backslash( args.splitRendBFIFilePath );
        convert_backslash( args.splitRendBFIFilePath );
@@ -844,6 +855,10 @@ int main(
        }
        }
    }
    }


    /*------------------------------------------------------------------------------------------*
     * Open ISAR handle
     *------------------------------------------------------------------------------------------*/

    const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) );
    const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) );
    args.outConfig.audioConfig = IVAS_AUDIO_CONFIG_BINAURAL;
    args.outConfig.audioConfig = IVAS_AUDIO_CONFIG_BINAURAL;
    if ( ( error = ISAR_POST_REND_open( &hIsarPostRend, args.sampleRate, args.outConfig.audioConfig, true, 0, 0, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK )
    if ( ( error = ISAR_POST_REND_open( &hIsarPostRend, args.sampleRate, args.outConfig.audioConfig, true, 0, 0, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK )
@@ -852,7 +867,10 @@ int main(
        goto cleanup;
        goto cleanup;
    }
    }


    /* === Configure === */
    /*------------------------------------------------------------------------------------------*
     * Configuration
     *------------------------------------------------------------------------------------------*/

    if ( ( error = ISAR_POST_REND_InitConfig( hIsarPostRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK )
    if ( ( error = ISAR_POST_REND_InitConfig( hIsarPostRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK )
    {
    {
        fprintf( stderr, "\nError in Renderer Config Init: %s\n", ivas_error_to_string( error ) );
        fprintf( stderr, "\nError in Renderer Config Init: %s\n", ivas_error_to_string( error ) );
@@ -906,6 +924,10 @@ int main(
        goto cleanup;
        goto cleanup;
    }
    }


    /*------------------------------------------------------------------------------------------*
     * Allocate processing buffers
     *------------------------------------------------------------------------------------------*/

    inBufferSize = frameSize_smpls * totalNumInChannels;
    inBufferSize = frameSize_smpls * totalNumInChannels;
    outBufferSize = frameSize_smpls * numOutChannels;
    outBufferSize = frameSize_smpls * numOutChannels;
    inpInt16Buffer = malloc( inBufferSize * sizeof( int16_t ) );
    inpInt16Buffer = malloc( inBufferSize * sizeof( int16_t ) );
@@ -961,6 +983,13 @@ int main(
        fprintf( stdout, "\n\n-- Start the ISAR post renderer (quiet mode) --\n\n" );
        fprintf( stdout, "\n\n-- Start the ISAR post renderer (quiet mode) --\n\n" );
    }
    }


    /*------------------------------------------------------------------------------------------*
     * Loop for every frame of data
     * - Read the input data
     * - Run the post-rendering
     * - Write the data into output file
     *------------------------------------------------------------------------------------------*/

    while ( 1 )
    while ( 1 )
    {
    {
        int16_t num_in_channels;
        int16_t num_in_channels;
+19 −32
Original line number Original line Diff line number Diff line
@@ -715,6 +715,7 @@ static int16_t get_cldfb_in_flag(
    return cldfb_in_flag;
    return cldfb_in_flag;
}
}



static int16_t is_split_pre_rend_mode(
static int16_t is_split_pre_rend_mode(
    CmdlnArgs *args )
    CmdlnArgs *args )
{
{
@@ -1471,12 +1472,11 @@ int main(


    if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED )
    if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED )
    {
    {

        if ( ( error = IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms, &bitsBuffer.config.isar_frame_size_ms ) ) != IVAS_ERR_OK )
        IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend,
        {
                                               &bitsBuffer.config.codec,
            fprintf( stderr, "\nError in IVAS_REND_GetSplitRendBitstreamHeader(): %s!\n", ivas_error_to_string( error ) );
                                               &bitsBuffer.config.poseCorrection,
            goto cleanup;
                                               &bitsBuffer.config.codec_frame_size_ms,
        }
                                               &bitsBuffer.config.isar_frame_size_ms );


        if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK )
        if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK )
        {
        {
@@ -1484,16 +1484,7 @@ int main(
            goto cleanup;
            goto cleanup;
        }
        }


        if ( ( error = split_rend_writer_open( &hSplitRendFileReadWrite,
        if ( ( error = split_rend_writer_open( &hSplitRendFileReadWrite, args.outputFilePath, delayNumSamples_temp, delayTimeScale_temp, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms, bitsBuffer.config.isar_frame_size_ms, args.sampleRate, bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK )
                                               args.outputFilePath,
                                               delayNumSamples_temp,
                                               delayTimeScale_temp,
                                               bitsBuffer.config.codec,
                                               bitsBuffer.config.poseCorrection,
                                               bitsBuffer.config.codec_frame_size_ms,
                                               bitsBuffer.config.isar_frame_size_ms,
                                               args.sampleRate,
                                               bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK )
        {
        {
            fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.outputFilePath );
            fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.outputFilePath );
            goto cleanup;
            goto cleanup;
@@ -1504,12 +1495,11 @@ int main(
    {
    {
        if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
        if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
        {
        {

            if ( ( error = IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms, &bitsBuffer.config.isar_frame_size_ms ) ) != IVAS_ERR_OK )
            IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend,
            {
                                                   &bitsBuffer.config.codec,
                fprintf( stderr, "\nError in IVAS_REND_GetSplitRendBitstreamHeader(): %s!\n", ivas_error_to_string( error ) );
                                                   &bitsBuffer.config.poseCorrection,
                goto cleanup;
                                                   &bitsBuffer.config.codec_frame_size_ms,
            }
                                                   &bitsBuffer.config.isar_frame_size_ms );


            if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK )
            if ( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ) != IVAS_ERR_OK )
            {
            {
@@ -1517,16 +1507,7 @@ int main(
                goto cleanup;
                goto cleanup;
            }
            }


            if ( ( error = split_rend_writer_open( &hSplitRendFileReadWrite,
            if ( ( error = split_rend_writer_open( &hSplitRendFileReadWrite, args.outMetadataFilePath, delayNumSamples_temp, delayTimeScale_temp, bitsBuffer.config.codec, bitsBuffer.config.poseCorrection, bitsBuffer.config.codec_frame_size_ms, bitsBuffer.config.isar_frame_size_ms, args.sampleRate, bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK )
                                                   args.outMetadataFilePath,
                                                   delayNumSamples_temp,
                                                   delayTimeScale_temp,
                                                   bitsBuffer.config.codec,
                                                   bitsBuffer.config.poseCorrection,
                                                   bitsBuffer.config.codec_frame_size_ms,
                                                   bitsBuffer.config.isar_frame_size_ms,
                                                   args.sampleRate,
                                                   bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK )
            {
            {
                fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.outMetadataFilePath );
                fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.outMetadataFilePath );
                goto cleanup;
                goto cleanup;
@@ -3698,14 +3679,20 @@ static void parseCombinedFormatInput(
        inConfig->numAmbisonicsBuses = 1;
        inConfig->numAmbisonicsBuses = 1;
        inConfig->ambisonicsBuses[0].audioConfig = audioConfig;
        inConfig->ambisonicsBuses[0].audioConfig = audioConfig;
        inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects;
        inConfig->ambisonicsBuses[0].inputChannelIndex = inConfig->numAudioObjects;
#ifdef NONBE_1352_HARMONIZE_OSBA_LOUDNESS
        inConfig->ambisonicsBuses[0].gain_dB = 0.f;
#else
        inConfig->ambisonicsBuses[0].gain_dB = -6.f;
        inConfig->ambisonicsBuses[0].gain_dB = -6.f;
#endif
        *configString += 4;
        *configString += 4;


        /* Modify input gain for objects too */
        /* Modify input gain for objects too */
#ifndef NONBE_1352_HARMONIZE_OSBA_LOUDNESS
        for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i )
        for ( int16_t i = 0; i < inConfig->numAudioObjects; ++i )
        {
        {
            inConfig->audioObjects[i].gain_dB = -6.f;
            inConfig->audioObjects[i].gain_dB = -6.f;
        }
        }
#endif
    }
    }
    else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 )
    else if ( audioConfig == IVAS_AUDIO_CONFIG_MASA1 || audioConfig == IVAS_AUDIO_CONFIG_MASA2 )
    {
    {
Loading