Skip to content

Commit

Permalink
Merge pull request #57 from MarcoBin/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
leomccormack authored Nov 21, 2023
2 parents 82e3b75 + 28b7158 commit d25dd3d
Show file tree
Hide file tree
Showing 26 changed files with 1,759 additions and 3,139 deletions.
22 changes: 22 additions & 0 deletions examples/include/tvconv.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,25 @@
extern "C" {
#endif /* __cplusplus */

/** SOFA loader error codes */
typedef enum {
/** Not initialized */
SAF_TVCONV_NOT_INIT,
/** Loading file */
SAF_TVCONV_SOFA_LOADING,
/** None of the error checks failed */
SAF_TVCONV_SOFA_OK,
/** Not a SOFA file, or no such file was found in the specified location */
SAF_TVCONV_SOFA_ERROR_INVALID_FILE_OR_FILE_PATH,
/** Dimensions of the SOFA data were not as expected */
SAF_TVCONV_SOFA_ERROR_DIMENSIONS_UNEXPECTED,
/** The data-type of the SOFA data was not as expected */
SAF_TVCONV_SOFA_ERROR_FORMAT_UNEXPECTED,
/** NetCDF is not thread safe! */
SAF_TVCONV_SOFA_ERROR_NETCDF_IN_USE

} SAF_TVCONV_ERROR_CODES;

/* ========================================================================== */
/* Main Functions */
/* ========================================================================== */
Expand Down Expand Up @@ -173,6 +192,9 @@ int tvconv_getProcessingDelay(void* const hTVCnv);
/** Returns the current Sofa file path */
char* tvconv_getSofaFilePath(void* const hTVCnv);

/** Returns the current Sofa file error state */
SAF_TVCONV_ERROR_CODES tvconv_getSofaErrorState(void* const hTVCnv);

/** Returns current codec status (see #CODEC_STATUS enum) */
CODEC_STATUS tvconv_getCodecStatus(void* const hTVCnv);

Expand Down
37 changes: 32 additions & 5 deletions examples/src/tvconv/tvconv.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ void tvconv_create
pData->ir_fs = 0;
pData->nOutputChannels = 0;
pData->sofa_filepath = NULL;
pData->sofa_file_error = SAF_TVCONV_NOT_INIT;

/* set FIFO buffers */
pData->FIFO_idx = 0;
Expand Down Expand Up @@ -234,10 +235,7 @@ void tvconv_checkReInit(void* const hTVCnv)
}
}

void tvconv_setFiltersAndPositions
(
void* const hTVCnv
)
void tvconv_setFiltersAndPositions( void* const hTVCnv )
{
tvconv_data* pData = (tvconv_data*) hTVCnv;
#ifdef SAF_ENABLE_SOFA_READER_MODULE
Expand All @@ -264,7 +262,9 @@ void tvconv_setFiltersAndPositions
if(pData->sofa_filepath!=NULL){
strcpy(pData->progressBarText,"Opening SOFA file");
pData->progressBar0_1 = 0.2f;
// MB hack
error = saf_sofa_open(&sofa, pData->sofa_filepath, SAF_SOFA_READER_OPTION_NETCDF);
//error = saf_sofa_open(&sofa, pData->sofa_filepath, SAF_SOFA_READER_OPTION_LIBMYSOFA);

if(error==SAF_SOFA_OK){
strcpy(pData->progressBarText,"Loading IRs");
Expand Down Expand Up @@ -312,16 +312,37 @@ void tvconv_setFiltersAndPositions
/* done! */
strcpy(pData->progressBarText,"Done!");
pData->progressBar0_1 = 1.0f;

switch(error)
{
case SAF_SOFA_OK: /** None of the error checks failed */
pData->sofa_file_error = SAF_TVCONV_SOFA_OK;
break;
case SAF_SOFA_ERROR_INVALID_FILE_OR_FILE_PATH: /** Not a SOFA file, or no such file was found in the specified location */
pData->sofa_file_error = SAF_TVCONV_SOFA_ERROR_INVALID_FILE_OR_FILE_PATH;
break;
case SAF_SOFA_ERROR_DIMENSIONS_UNEXPECTED: /** Dimensions of the SOFA data were not as expected */
pData->sofa_file_error = SAF_TVCONV_SOFA_ERROR_DIMENSIONS_UNEXPECTED;
break;
case SAF_SOFA_ERROR_FORMAT_UNEXPECTED: /** The data-type of the SOFA data was not as expected */
pData->sofa_file_error = SAF_TVCONV_SOFA_ERROR_FORMAT_UNEXPECTED;
break;
case SAF_SOFA_ERROR_NETCDF_IN_USE: /** NetCDF is not thread safe! */
pData->sofa_file_error = SAF_TVCONV_SOFA_ERROR_NETCDF_IN_USE;
break;
}

}

void tvconv_setSofaFilePath(void* const hTVCnv, const char* path)
{
tvconv_data *pData = (tvconv_data*)(hTVCnv);

pData->sofa_file_error = SAF_TVCONV_SOFA_LOADING;
pData->sofa_filepath = malloc1d(strlen(path) + 1);
strcpy(pData->sofa_filepath, path);
pData->codecStatus = CODEC_STATUS_NOT_INITIALISED;
tvconv_setFiltersAndPositions(hTVCnv);

}

void tvconv_setTargetPosition(void* const hTVCnv, float position, int dim){
Expand Down Expand Up @@ -438,6 +459,12 @@ char* tvconv_getSofaFilePath(void* const hTVCnv)
return "no_file";
}

SAF_TVCONV_ERROR_CODES tvconv_getSofaErrorState(void* const hTVCnv)
{
tvconv_data* pData = (tvconv_data*)(hTVCnv);
return pData->sofa_file_error;
}

CODEC_STATUS tvconv_getCodecStatus(void* const hTVCnv)
{
tvconv_data *pData = (tvconv_data*)(hTVCnv);
Expand Down
1 change: 1 addition & 0 deletions examples/src/tvconv/tvconv_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ typedef struct _tvconv
int nInputChannels; /**< number of input channels */
vectorND targetPosition;
char* sofa_filepath;
SAF_TVCONV_ERROR_CODES sofa_file_error;

} tvconv_data;

Expand Down
21 changes: 15 additions & 6 deletions framework/modules/saf_sofa_reader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,19 @@
target_sources(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/saf_sofa_reader.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/mysofa.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/internal/hdf_dataobject.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/internal/hdf_fractalhead.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/internal/hdf_reader.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/internal/kdtree.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/internal/mysofa_internal.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/config.h
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/btree.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/dataobject.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/fractalhead.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/gcol.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/gunzip.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/reader.h
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hdf/superblock.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/kdtree.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/kdtree.h
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/mysofa.h
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/mysofa_export.h
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/reader.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/tools.c
${CMAKE_CURRENT_SOURCE_DIR}/libmysofa/hrtf/tools.h
)
10 changes: 10 additions & 0 deletions framework/modules/saf_sofa_reader/libmysofa/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

#if !defined _CONFIG_H
#define _CONFIG_H

#define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}"
#define CPACK_PACKAGE_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
#define CPACK_PACKAGE_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR}
#define CPACK_PACKAGE_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH}

#endif
Loading

0 comments on commit d25dd3d

Please sign in to comment.