Commit f3df128f authored by emerit's avatar emerit
Browse files

FIX partial binaural binary file reading for TD and crend renderer, to be...

FIX partial binaural binary file reading for TD and crend renderer, to be tested with parametric and fastconv
parent 969f73f7
Loading
Loading
Loading
Loading
+57 −6
Original line number Diff line number Diff line
@@ -738,7 +738,11 @@ int main(

    if ( arg.hrtfReaderEnabled )
    {
#ifdef FIX_BINARY_BINAURAL_READING
        IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL;
#else
        IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
#endif

        if ( ( error = IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ) ) != IVAS_ERR_OK )
        {
@@ -746,18 +750,41 @@ int main(
            goto cleanup;
        }

#ifdef FIX_BINARY_BINAURAL_READING
        if ( ( error = load_HRTF_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        {
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
            {
                fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
                goto cleanup;
            }
            else
            {
                ivas_HRTF_binary_close( hHrtfTD );
            }
        }
#else
        if ( ( error = load_HRTF_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
        }
#endif

#ifdef FIX_638_ENERGIE_IAC_ROM_TABLES
        if ( ( error = load_reverb_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        if ( ( *hHrtfTD != NULL ) && ( error = load_reverb_binary( *hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK )
        {
#ifdef FIX_BINARY_BINAURAL_READING
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
            {
                fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
                goto cleanup;
            }
#else
            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
#endif
        }
#endif
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
        if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ) ) != IVAS_ERR_OK )
@@ -768,9 +795,17 @@ int main(

        if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName );
#ifdef FIX_BINARY_BINAURAL_READING
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
            {
                fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
                goto cleanup;
            }
#else
            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
#endif
        }

        IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL;
        if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK )
@@ -781,8 +816,16 @@ int main(

        if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName );
#ifdef FIX_BINARY_BINAURAL_READING
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
            {
                fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
                goto cleanup;
            }
#else
            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
#endif
        }

        IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL;
@@ -794,8 +837,16 @@ int main(

        if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName );
#ifdef FIX_BINARY_BINAURAL_READING
            if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA )
            {
                fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
                goto cleanup;
            }
#else
            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
#endif
        }
    }

@@ -859,9 +910,9 @@ cleanup:

    if ( arg.hrtfReaderEnabled )
    {
        IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
        IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL;
        IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD );
        dealloc_HRTF_binary( hHrtfTD );
        dealloc_HRTF_binary( *hHrtfTD );
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
        IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF );
        destroy_SetOfHRTF( hSetOfHRTF );
+3 −0
Original line number Diff line number Diff line
@@ -80,6 +80,9 @@ typedef enum
    IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED,
#endif
    IVAS_ERR_INVALID_HRTF,
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA,
#endif
    IVAS_ERR_INVALID_INPUT_FORMAT,
    IVAS_ERR_INVALID_INDEX, /* ToDo: should be merged with IVAS_ERR_INDEX_OUT_OF_BOUNDS */
    IVAS_ERR_NOT_SUPPORTED_OPTION,
+3 −0
Original line number Diff line number Diff line
@@ -166,6 +166,9 @@

#define FIX_INV_DIFFUSE_WEIGHT                          /* Orange : Fix error in energy compensation in late binaural reverb*/
#define FIX_638_ENERGIE_IAC_ROM_TABLES                  /* Missing left/right and coherence late reverb tables in binary format*/
#define FIX_BINARY_BINAURAL_READING                     /* Add support reading binaural binary file */
#define FIX_CRASH_LONG_BRIR                             /* Fix crash when long BRIR is set */


#define FIX_632_USAN_ERROR_NULL_POINTER                /* FhG: issue 632 USAN offset to null pointer proto_diffuse_buffer_f in dirac rendering*/
/* #################### End BE switches ################################## */
+9 −1
Original line number Diff line number Diff line
@@ -1751,7 +1751,11 @@ ivas_error IVAS_DEC_FeedCustomLsData(

ivas_error IVAS_DEC_GetHrtfHandle(
    IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle      */
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o  : HRTF handle              */
#else
    IVAS_DEC_HRTF_HANDLE *hHrtfTD /* o  : HRTF handle              */
#endif
)
{
    if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfTD == NULL )
@@ -1759,7 +1763,11 @@ ivas_error IVAS_DEC_GetHrtfHandle(
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

#ifdef FIX_BINARY_BINAURAL_READING
    *hHrtfTD = &hIvasDec->st_ivas->hHrtfTD;
#else
    *hHrtfTD = hIvasDec->st_ivas->hHrtfTD;
#endif

    return IVAS_ERR_OK;
}
+4 −0
Original line number Diff line number Diff line
@@ -372,7 +372,11 @@ ivas_error IVAS_DEC_FeedCustomLsData(
/*! r: error code */
ivas_error IVAS_DEC_GetHrtfHandle( 
    IVAS_DEC_HANDLE hIvasDec,                   /* i/o: IVAS decoder handle                                                     */
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_HANDLE **hHrtfTD              /* o  : HRTF handle              */
#else
    IVAS_DEC_HRTF_HANDLE *hHrtfTD               /* o  : HRTF handle                                                             */
#endif
);

/*! r: error code */
Loading