Commit 7d03437d authored by vaclav's avatar vaclav
Browse files

Merge remote-tracking branch 'remotes/origin/main' into...

Merge remote-tracking branch 'remotes/origin/main' into 731-etx-output-for-omasa-and-osba-api_5ms-wrong-implementation-in-decodeg192
parents c97c1d2c ad4aa694
Loading
Loading
Loading
Loading
Loading
+64 −53
Original line number Diff line number Diff line
@@ -5684,14 +5684,19 @@ void ivas_osba_enc(
#endif
);

#ifdef FIX_782_OSBA_FUNCTION_NAMES
ivas_error ivas_osba_data_open(
#else
ivas_error ivas_masa_ism_data_open(
#endif
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder handle                     */
);

#ifndef FIX_782_OSBA_FUNCTION_NAMES
ivas_error ivas_sba_ism_separate_object_renderer_open(
    Decoder_Struct *st_ivas /* i/o: IVAS decoder structure      */
);

#endif
ivas_error ivas_osba_dirac_td_binaural(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    float *output[],                                            /* o  : output synthesis signal                 */
@@ -5711,9 +5716,15 @@ ivas_error ivas_osba_render(
    const int16_t output_frame                                  /* i  : output frame length per channel             */
);

#ifdef FIX_782_OSBA_FUNCTION_NAMES
void ivas_osba_data_close(
    SBA_ISM_DATA_HANDLE *hSbaIsmData                           /* i/o: OSBA rendering handle                    */
);
#else
void ivas_masa_ism_data_close(
    MASA_ISM_DATA_HANDLE *hMasaIsmData /* i/o: MASA_ISM rendering handle    */
);
#endif


/*----------------------------------------------------------------------------------*
+1 −0
Original line number Diff line number Diff line
@@ -173,6 +173,7 @@
#define FIX_764_HARM_CODE                               /* VA: issue 764: introduce new function for the same code block at four different places */
#define FIX_747_ISM_TODOS                               /* VA: issue 747 - address ISM ToDos */
#define FIX_ISMRENDERER_HANDLE_DEALLOC                  /* VA: issue 781: harmonize Deallocation of handle 'hIsmRendererData' */
#define FIX_782_OSBA_FUNCTION_NAMES                     /* VA: fix 782: correct OSBA function names */


/* #################### End BE switches ################################## */
+5 −1
Original line number Diff line number Diff line
@@ -749,7 +749,11 @@ ivas_error ivas_dec(
            {
                for ( n = 0; n < nchan_ism; n++ )
                {
                    delay_signal( p_output[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
#ifdef FIX_782_OSBA_FUNCTION_NAMES
                    delay_signal( p_output[n], output_frame, st_ivas->hSbaIsmData->delayBuffer[n], st_ivas->hSbaIsmData->delayBuffer_size );
#else
                    delay_signal( output[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
#endif
                }
            }

+18 −6
Original line number Diff line number Diff line
@@ -1569,13 +1569,16 @@ ivas_error ivas_init_decoder(
                return error;
            }

#ifdef FIX_782_OSBA_FUNCTION_NAMES
            if ( ( error = ivas_osba_data_open( st_ivas ) ) != IVAS_ERR_OK )
#else
            if ( ( error = ivas_masa_ism_data_open( st_ivas ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }
        }


        /* set CNA/CNG flags */
        ivas_sba_set_cna_cng_flag( st_ivas );
    }
@@ -1681,7 +1684,7 @@ ivas_error ivas_init_decoder(

            st_ivas->nchan_transport = ivas_mc_ls_setup_get_num_channels( ivas_mc_map_output_config_to_mc_ls_setup( st_ivas->transport_config ) );
            st_ivas->nSCE = 0;
            st_ivas->nCPE = st_ivas->nchan_transport / 2;
            st_ivas->nCPE = st_ivas->nchan_transport / CPE_CHANNELS;

            st_ivas->element_mode_init = IVAS_CPE_MDCT;

@@ -1715,7 +1718,7 @@ ivas_error ivas_init_decoder(
            }

            st_ivas->nSCE = 0;
            st_ivas->nCPE = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS / 2;
            st_ivas->nCPE = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS / CPE_CHANNELS;
            st_ivas->nchan_transport = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS;

            if ( ( error = ivas_mc_paramupmix_dec_open( st_ivas ) ) != IVAS_ERR_OK )
@@ -2080,7 +2083,7 @@ ivas_error ivas_init_decoder(
                return error;
            }
        }

#ifndef FIX_782_OSBA_FUNCTION_NAMES
        if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC )
        {
            /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */
@@ -2089,6 +2092,7 @@ ivas_error ivas_init_decoder(
                return error;
            }
        }
#endif
    }

    /*-----------------------------------------------------------------*
@@ -2455,6 +2459,9 @@ void ivas_initialize_handles_dec(
    st_ivas->hHrtfParambin = NULL;
    st_ivas->hoa_dec_mtx = NULL;
    st_ivas->hMasaIsmData = NULL;
#ifdef FIX_782_OSBA_FUNCTION_NAMES
    st_ivas->hSbaIsmData = NULL;
#endif

    st_ivas->hHeadTrackData = NULL;
    st_ivas->hHrtfTD = NULL;
@@ -2668,8 +2675,13 @@ void ivas_destroy_dec(
        st_ivas->hMonoDmxRenderer = NULL;
    }

#ifdef FIX_782_OSBA_FUNCTION_NAMES
    /* OSBA structure */
    ivas_osba_data_close( &st_ivas->hSbaIsmData );
#else
    /* MASA ISM structure */
    ivas_masa_ism_data_close( &st_ivas->hMasaIsmData );
#endif

    /* OMASA structure */
    ivas_omasa_data_close( &st_ivas->hMasaIsmData );
+91 −2
Original line number Diff line number Diff line
@@ -43,6 +43,81 @@
#include "wmc_auto.h"


#ifdef FIX_782_OSBA_FUNCTION_NAMES
/*-------------------------------------------------------------------*
 * ivas_osba_data_open()
 *
 * Allocate and initialize SBA_ISM rendering handle
 *-------------------------------------------------------------------*/

ivas_error ivas_osba_data_open(
    Decoder_Struct *st_ivas /* i/o: IVAS decoder handle  */
)
{
    SBA_ISM_DATA_HANDLE hSbaIsmData;
    int16_t i;

    if ( ( hSbaIsmData = (SBA_ISM_DATA_HANDLE) malloc( sizeof( SBA_ISM_DATA ) ) ) == NULL )
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OSBA data\n" ) );
    }

    hSbaIsmData->delayBuffer_nchan = st_ivas->nchan_ism;
    hSbaIsmData->delayBuffer_size = (int16_t) ( ( st_ivas->hDecoderConfig->output_Fs / 50 ) / MAX_PARAM_SPATIAL_SUBFRAMES );

    if ( ( hSbaIsmData->delayBuffer = (float **) malloc( hSbaIsmData->delayBuffer_nchan * sizeof( float * ) ) ) == NULL )
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for OSBA delay buffer \n" ) );
    }

    for ( i = 0; i < hSbaIsmData->delayBuffer_nchan; i++ )
    {
        if ( ( hSbaIsmData->delayBuffer[i] = (float *) malloc( hSbaIsmData->delayBuffer_size * sizeof( float ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for OSBA delay buffer \n" ) );
        }
        set_zero( hSbaIsmData->delayBuffer[i], hSbaIsmData->delayBuffer_size );
    }

    st_ivas->hSbaIsmData = hSbaIsmData;

    return IVAS_ERR_OK;
}


/*-------------------------------------------------------------------*
 * ivas_osba_data_close()
 *
 * Deallocate SBA_ISM rendering handle
 *-------------------------------------------------------------------*/

void ivas_osba_data_close(
    SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle    */
)
{
    int16_t i;

    if ( hSbaIsmData == NULL || *hSbaIsmData == NULL )
    {
        return;
    }

    if ( ( *hSbaIsmData )->delayBuffer != NULL )
    {
        for ( i = 0; i < ( *hSbaIsmData )->delayBuffer_nchan; i++ )
        {
            free( ( *hSbaIsmData )->delayBuffer[i] );
        }
        free( ( *hSbaIsmData )->delayBuffer );
        ( *hSbaIsmData )->delayBuffer = NULL;
    }

    free( *hSbaIsmData );
    *hSbaIsmData = NULL;

    return;
}
#else
/*-------------------------------------------------------------------*
 * ivas_masa_ism_data_open()
 *
@@ -131,12 +206,13 @@ ivas_error ivas_sba_ism_separate_object_renderer_open(

    return IVAS_ERR_OK;
}
#endif


/*--------------------------------------------------------------------------*
 * ivas_osba_dirac_td_binaural()
 *
 * Binaural rendering in OMASA format
 * Binaural rendering in OSBA format
 *--------------------------------------------------------------------------*/

ivas_error ivas_osba_dirac_td_binaural(
@@ -147,7 +223,6 @@ ivas_error ivas_osba_dirac_td_binaural(
{
    int16_t n;
    float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k];

    ivas_error error;
    float *p_sepobj[MAX_NUM_OBJECTS];
    int16_t channel_offset;
@@ -170,7 +245,11 @@ ivas_error ivas_osba_dirac_td_binaural(
    {
        for ( n = 0; n < st_ivas->nchan_ism; n++ )
        {
#ifdef FIX_782_OSBA_FUNCTION_NAMES
            delay_signal( data_separated_objects[n], output_frame, st_ivas->hSbaIsmData->delayBuffer[n], st_ivas->hSbaIsmData->delayBuffer_size );
#else
            delay_signal( data_separated_objects[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
#endif
        }
    }

@@ -264,6 +343,12 @@ ivas_error ivas_osba_dirac_td_binaural(
}


/*-------------------------------------------------------------------------*
 * ivas_osba_ism_metadata_dec()
 *
 * ISM metadata decoding in OSBA format.
 *-------------------------------------------------------------------------*/

ivas_error ivas_osba_ism_metadata_dec(
    Decoder_Struct *st_ivas,       /* i/o: IVAS decoder structure            */
    const int32_t ism_total_brate, /* i  : ISM total bitrate                 */
@@ -327,7 +412,11 @@ ivas_error ivas_osba_render(
        for ( n = 0; n < nchan_ism; n++ )
        {
            mvr2r( output_f[n], tmp_ism_out[n], output_frame );
#ifdef FIX_782_OSBA_FUNCTION_NAMES
            delay_signal( tmp_ism_out[n], output_frame, st_ivas->hSbaIsmData->delayBuffer[n], st_ivas->hSbaIsmData->delayBuffer_size );
#else
            delay_signal( tmp_ism_out[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
#endif
        }

        if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI )
Loading