Commit 3f77a00d authored by emerit's avatar emerit
Browse files

fix incomplete binary file for fastconv and param

parent c54a1e58
Loading
Loading
Loading
Loading
+34 −12
Original line number Diff line number Diff line
@@ -766,7 +766,8 @@ int main(
            }
            else
            {
                dealloc_HRTF_binary( hHrtfTD );
                free( *hHrtfTD );
                *hHrtfTD = NULL;
            }
        }
#else
@@ -816,47 +817,72 @@ int main(
#endif
        }

#ifdef FIX_BINARY_BINAURAL_READING
        IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL;
#else
        IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL;
#endif
        if ( ( error = IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_DEC_GetHrtfFastConvHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
        }

        if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK )
        {
#ifdef FIX_BINARY_BINAURAL_READING
        if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, 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
            {
                free( *hHrtfFastConv );
                *hHrtfFastConv = NULL;
            }
        }
#else
        if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK )
        {

            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
#endif
        }
#endif

#ifdef FIX_BINARY_BINAURAL_READING
        IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL;
#else
        IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL;
#endif
        if ( ( error = IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nIVAS_DEC_GetHrtfParamBinHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) );
            goto cleanup;
        }

        if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK )
        {
#ifdef FIX_BINARY_BINAURAL_READING
        if ( ( error = load_parambin_HRTF_from_binary( *hHrtfParambin, 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
            {
                free( *hHrtfParambin );
                *hHrtfParambin = NULL;
            }
        }
#else
        if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName );
            goto cleanup;
#endif
        }
#endif
    }


@@ -925,11 +951,7 @@ cleanup:
        IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
#endif
        IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD );
#ifdef FIX_BINARY_BINAURAL_READING
        dealloc_HRTF_binary( hHrtfTD );
#else
        dealloc_HRTF_binary( hHrtfTD );
#endif
        dealloc_HRTF_binary( *hHrtfTD );
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
        IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF );
        destroy_SetOfHRTF( hSetOfHRTF );
+18 −2
Original line number Diff line number Diff line
@@ -1810,7 +1810,11 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle(

ivas_error IVAS_DEC_GetHrtfFastConvHandle(
    IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle    */
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o  : FASTCONV HRTF handle   */
#else
    IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o  : FASTCONV HRTF handle   */
#endif
)
{
    if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfFastConv == NULL )
@@ -1818,7 +1822,11 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle(
        return IVAS_ERR_WRONG_PARAMS;
    }

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

    return IVAS_ERR_OK;
}
@@ -1832,7 +1840,11 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle(

ivas_error IVAS_DEC_GetHrtfParamBinHandle(
    IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle                 */
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o  : Parametric binauralizer HRTF handle */
#else
    IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o  : Parametric binauralizer HRTF handle */
#endif
)
{
    if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfParambin == NULL )
@@ -1840,7 +1852,11 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle(
        return IVAS_ERR_WRONG_PARAMS;
    }

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

    return IVAS_ERR_OK;
}
+8 −0
Original line number Diff line number Diff line
@@ -390,12 +390,20 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle(

ivas_error IVAS_DEC_GetHrtfFastConvHandle(
    IVAS_DEC_HANDLE hIvasDec,                    /* i/o: IVAS decoder handle                                                    */
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o  : FASTCONV HRTF handle                                                   */
#else
    IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o  : FASTCONV HRTF handle                                                   */
#endif
);

ivas_error IVAS_DEC_GetHrtfParamBinHandle(
    IVAS_DEC_HANDLE hIvasDec,                    /* i/o: IVAS decoder handle                                                    */
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o  : Parametric binauralizer HRTF handle                                    */
#else
    IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o  : Parametric binauralizer HRTF handle                                    */
#endif
);


+29 −17
Original line number Diff line number Diff line
@@ -742,31 +742,18 @@ static void HRTF_energy_sections_precalc(
 *---------------------------------------------------------------------*/

ivas_error dealloc_HRTF_binary(
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_HANDLE *phHrtf /* i/o: HRTF handle                         */
#else
    IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle                         */
#endif
)
{
    int16_t i;
    ivas_error error;
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_HANDLE hHrtf;
#endif
    error = IVAS_ERR_OK;

#ifdef FIX_BINARY_BINAURAL_READING
    if ( phHrtf == NULL || *phHrtf == NULL )
#else
    if ( hHrtf == NULL )
#endif
    {
        return error;
    }
#ifdef FIX_BINARY_BINAURAL_READING
    hHrtf = *phHrtf;
#endif

    if ( !hHrtf->ModelParams.modelROM )
    {
        if ( hHrtf->ModelParams.UseItdModel )
@@ -813,9 +800,6 @@ ivas_error dealloc_HRTF_binary(
            free( hHrtf->lr_energy_and_iac_dyn[i] );
        }
    }
#ifdef FIX_BINARY_BINAURAL_READING
    *phHrtf = NULL;
#endif
    return error;
}

@@ -1393,6 +1377,10 @@ ivas_error load_fastconv_HRTF_from_binary(
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
#ifdef FIX_BINARY_BINAURAL_READING
    int16_t asFastconv = 0;
#endif


    f_hrtf = hrtfReader->file;

@@ -1438,6 +1426,9 @@ ivas_error load_fastconv_HRTF_from_binary(
                free( hrtf_data );
                return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" );
            }
#ifdef FIX_BINARY_BINAURAL_READING
            asFastconv = 1;
#endif
        }
        else
        {
@@ -1446,7 +1437,15 @@ ivas_error load_fastconv_HRTF_from_binary(
    }
    free( hrtf_data );


#ifdef FIX_BINARY_BINAURAL_READING
    if ( asFastconv )
        return IVAS_ERR_OK;
    else
        return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA;
#else
    return IVAS_ERR_OK;
#endif
}


@@ -1538,6 +1537,9 @@ ivas_error load_parambin_HRTF_from_binary(
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
#ifdef FIX_BINARY_BINAURAL_READING
    int16_t asParam = 0;
#endif

    f_hrtf = hrtfReader->file;

@@ -1586,6 +1588,9 @@ ivas_error load_parambin_HRTF_from_binary(
                free( hrtf_data );
                return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" );
            }
#ifdef FIX_BINARY_BINAURAL_READING
            asParam = 1;
#endif
        }
        else
        {
@@ -1594,7 +1599,14 @@ ivas_error load_parambin_HRTF_from_binary(
    }
    free( hrtf_data );

#ifdef FIX_BINARY_BINAURAL_READING
    if ( asParam )
        return IVAS_ERR_OK;
    else
        return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA;
#else
    return IVAS_ERR_OK;
#endif
}


+0 −4
Original line number Diff line number Diff line
@@ -146,11 +146,7 @@ ivas_error load_parambin_HRTF_from_binary(
 *---------------------------------------------------------------------*/

ivas_error dealloc_HRTF_binary(
#ifdef FIX_BINARY_BINAURAL_READING
    IVAS_DEC_HRTF_HANDLE *phHrtf /* i/o: HRTF handle                         */
#else
    IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle                         */
#endif
);

#endif /* IVAS_HRTF_FILE_READER_H */