Commit 7cb13e43 authored by Marek Szczerba's avatar Marek Szczerba
Browse files

Porting floating-point MR 2298, prototype

parent 576c006b
Loading
Loading
Loading
Loading
Loading
+69 −1
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@
#ifdef IVAS_RTPDUMP
#include "ivas_rtp_file.h"
#endif
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
#include "ivas_cnst.h"
#endif

#ifdef FIXED_RTP_SEQUENCE_NUM
#define RANDOM_INITSEED_DEC ( 0xFEEDFADE )
@@ -208,7 +211,10 @@ int main(
    IVAS_RENDER_FRAMESIZE asked_frame_size;
    IVAS_DEC_HRTF_BINARY_WRAPPER hHrtfBinary;
    ObjectEditFileReader *objectEditFileReader = NULL;

#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    IVAS_ROOM_ACOUSTICS_CONFIG_DATA **pAE = NULL;
    uint32_t aeCount = 0;
#endif
#ifdef WMOPS
    reset_wmops();
    reset_mem( USE_BYTES );
@@ -419,7 +425,11 @@ int main(
     *------------------------------------------------------------------------------------------*/

    asked_frame_size = arg.renderFramesize;
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : IVAS_DEFAULT_AEID;
#else
    uint16_t aeID = arg.aeSequence.count > 0 ? arg.aeSequence.pID[0] : 65535;
#endif

#ifdef IVAS_RTPDUMP
    arg.enableHeadRotation = arg.enableHeadRotation || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM;
@@ -525,7 +535,47 @@ int main(
            fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename );
            goto cleanup;
        }
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
        aeCount = RenderConfigReader_getAcousticEnvironmentCount( renderConfigReader );
        if ( aeCount > 0 )
        {
            uint32_t n;

            pAE = malloc( aeCount * sizeof( IVAS_ROOM_ACOUSTICS_CONFIG_DATA * ) );

            if ( pAE == NULL )
            {
                fprintf( stderr, "\nError: cannot allocate memory for acoustic environment array\n\n" );
                goto cleanup;
            }

            for ( n = 0; n < aeCount; n++ )
            {
                pAE[n] = NULL;

                if ( NULL == ( pAE[n] = malloc( sizeof( IVAS_ROOM_ACOUSTICS_CONFIG_DATA ) ) ) )
                {
                    fprintf( stderr, "\nError: cannot allocate memory for acoustic environment\n\n" );
                    goto cleanup;
                }
            }

            if ( ( error = RenderConfigReader_getAcousticEnvironments( renderConfigReader, pAE ) ) != IVAS_ERR_OK )
            {
                fprintf( stderr, "Error while getting acoustic environments\n\n" );
                goto cleanup;
            }

            for ( n = 0; n < aeCount; n++ )
            {
                if ( ( error = IVAS_DEC_AddAcousticEnvironment( hIvasDec, *pAE[n] ) ) != IVAS_ERR_OK )
                {
                    fprintf( stderr, "Failed to add acoustic environments\n\n" );
                    goto cleanup;
                }
            }
        }
#endif
        if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity_fx ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "Failed to get directivity patterns for one or more of IDs: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] );
@@ -564,7 +614,11 @@ int main(

        if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB )
        {
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
            if ( ( error = IVAS_DEC_GetAcousticEnvironment( hIvasDec, aeID, &renderConfig.roomAcoustics ) ) == IVAS_ERR_OK )
#else
            if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, aeID, &renderConfig.roomAcoustics ) ) == IVAS_ERR_OK )
#endif
            {
                if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK )
                {
@@ -692,6 +746,20 @@ cleanup:

    free( pcmBuf );

#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    if ( pAE != NULL )
    {
        uint16_t n;

        for ( n = 0; n < aeCount; n++ )
        {
            free( pAE[n] );
        }

        free( pAE );
    }
#endif

    if ( arg.aeSequence.count > 0 )
    {
        free( arg.aeSequence.pID );
+3 −0
Original line number Diff line number Diff line
@@ -330,6 +330,9 @@ typedef enum

typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
{
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    Word16 aeID; /* Acoustic environment ID */
#endif
    Word16 nBands;                                                                                                                       /* Number of frequency bands for which reverb properties are provided, integer, range [2..256]        */
    Word32 pFc_input_fx[IVAS_CLDFB_NO_CHANNELS_MAX];                                                                                     /*Q16 Center frequencies for which following values are provided:                                         */
    Word32 pAcoustic_rt60_fx[IVAS_CLDFB_NO_CHANNELS_MAX];                                                                                /*Q26  - The room's T60 per center frequency                                                             */
+3 −0
Original line number Diff line number Diff line
@@ -1649,6 +1649,9 @@ typedef enum

#define RV_LENGTH_NR_FC_16KHZ                   ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1
#define IVAS_REVERB_DEFAULT_N_BANDS             31
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
#define IVAS_DEFAULT_AEID                       ( 65535 )
#endif

#define LR_IAC_LENGTH_NR_FC                     ( RV_LENGTH_NR_FC )
#define LR_IAC_LENGTH_NR_FC_16KHZ               ( RV_LENGTH_NR_FC_16KHZ )
+1 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@
#define RTP_S4_251135_CR26253_0016_REV1                /* RTP Pack/Unpack API corresponding to CR 26253 */
#define IVAS_RTPDUMP                                   /* RTPDUMP writing and reading for IVAS payloads */
#define FIXED_RTP_SEQUENCE_NUM                         /* Remove random sequence number initialization */
#define IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT              /* RTPDUMP acoustic environment */

/* #################### End BASOP porting switches ############################ */

+9 −0
Original line number Diff line number Diff line
@@ -3192,6 +3192,10 @@ void ivas_initialize_handles_dec(
    st_ivas->hRenderConfig = NULL;
    st_ivas->hExtOrientationData = NULL;
    st_ivas->hCombinedOrientationData = NULL;
#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    st_ivas->acousticEnvironmentsCount = 0;
    st_ivas->pAcousticEnvironments = NULL;
#endif

    st_ivas->hSplitBinRend = NULL;
    for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i )
@@ -3208,6 +3212,11 @@ void ivas_initialize_handles_dec(
        st_ivas->p_output_fx[i] = NULL;
    }

#ifdef IVAS_RTPDUMP_ACOUSTIC_ENVIRONMENT
    /* Acoustic environments */
    st_ivas->pAcousticEnvironments = NULL;
#endif

    return;
}

Loading