123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
- index dcaa92a..76fd021 100644
- --- a/src/CMakeLists.txt
- +++ b/src/CMakeLists.txt
- @@ -10,38 +10,39 @@ endmacro(use_c99)
-
- use_c99()
-
- +find_package(ZLIB REQUIRED)
- configure_file(config.h.in config.h)
- -include_directories(${CMAKE_CURRENT_BINARY_DIR})
- +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${ZLIB_INCLUDE_DIRS})
-
- if(NOT MSVC)
- - if(NOT WIN32)
- + if(NOT WIN32 AND NOT EMSCRIPTEN)
- find_library(MATH m)
- else()
- set(MATH "")
- endif()
- - include(FindZLIB)
- else()
- set(MATH "")
- + if(0)
- find_program(NUGET nuget)
- if(NUGET)
- execute_process(COMMAND ${NUGET} install zlib)
- endif()
- include_directories(
- ${PROJECT_SOURCE_DIR}/windows/third-party/zlib-1.2.11/include/)
- + endif()
- endif()
-
- if(NOT MSVC)
- - if(NOT WIN32)
- + if(NOT WIN32 AND NOT EMSCRIPTEN)
- find_library(MATH m)
- else()
- set(MATH "")
- endif()
- - include(FindZLIB)
- - include_directories(${ZLIB_INCLUDE_DIRS})
- set(PKG_CONFIG_PRIVATELIBS "-lm ${PKG_CONFIG_PRIVATELIBS}")
- set(PKG_CONFIG_PRIVATELIBS "-lz ${PKG_CONFIG_PRIVATELIBS}")
- else()
- set(MATH "")
- + if(0)
- find_program(NUGET nuget)
- if(NOT NUGET)
- message(
- @@ -53,6 +54,7 @@ else()
- endif()
- include_directories(
- ${PROJECT_SOURCE_DIR}/windows/third-party/zlib-1.2.11/include/)
- + endif()
- endif()
-
- set(libsrc
- @@ -80,6 +82,7 @@ set(libsrc
- set(public-headers
- hrtf/mysofa.h
- )
- +install(FILES "${public-headers}" DESTINATION include)
-
- if(BUILD_STATIC_LIBS)
- add_library(mysofa-static STATIC ${libsrc})
- @@ -88,7 +91,7 @@ target_include_directories(mysofa-static
- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/hrtf>"
- $<INSTALL_INTERFACE:include/>
- )
- -target_link_libraries(mysofa-static LINK_PRIVATE ${MATH} ${ZLIB_LIBRARIES})
- +target_link_libraries(mysofa-static LINK_PRIVATE ${MATH} ZLIB::ZLIB)
- set_target_properties(
- mysofa-static
- PROPERTIES OUTPUT_NAME mysofa CLEAN_DIRECT_OUTPUT 1 POSITION_INDEPENDENT_CODE
- @@ -169,6 +172,11 @@ else()
- mysofa_export.h)
- endif()
-
- +install(
- + FILES ${PROJECT_BINARY_DIR}/src/mysofa_export.h
- + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- +)
- +
- if(BUILD_TESTS)
- add_executable(mysofa2json tests/sofa2json.c tests/json.c)
- if(BUILD_STATIC_LIBS)
- diff --git a/src/hrtf/mysofa.h b/src/hrtf/mysofa.h
- index 206e77b..82bc9d9 100644
- --- a/src/hrtf/mysofa.h
- +++ b/src/hrtf/mysofa.h
- @@ -14,6 +14,7 @@ extern "C" {
- #include <stdint.h>
- #include <stddef.h>
-
- +#include "mysofa_export.h"
- #define MYSOFA_DEFAULT_NEIGH_STEP_ANGLE 0.5f
- #define MYSOFA_DEFAULT_NEIGH_STEP_RADIUS 0.01f
-
- @@ -127,44 +128,44 @@ enum {
- MYSOFA_ONLY_SOURCES_WITH_MC_SUPPORTED
- };
-
- -struct MYSOFA_HRTF *mysofa_load(const char *filename, int *err);
- -struct MYSOFA_HRTF *mysofa_load_data(const char *data, size_t size, int *err);
- +MYSOFA_EXPORT struct MYSOFA_HRTF *mysofa_load(const char *filename, int *err);
- +MYSOFA_EXPORT struct MYSOFA_HRTF *mysofa_load_data(const char *data, size_t size, int *err);
-
- -int mysofa_check(struct MYSOFA_HRTF *hrtf);
- -char *mysofa_getAttribute(struct MYSOFA_ATTRIBUTE *attr, char *name);
- -void mysofa_tospherical(struct MYSOFA_HRTF *hrtf);
- -void mysofa_tocartesian(struct MYSOFA_HRTF *hrtf);
- -void mysofa_free(struct MYSOFA_HRTF *hrtf);
- +MYSOFA_EXPORT int mysofa_check(struct MYSOFA_HRTF *hrtf);
- +MYSOFA_EXPORT char *mysofa_getAttribute(struct MYSOFA_ATTRIBUTE *attr, char *name);
- +MYSOFA_EXPORT void mysofa_tospherical(struct MYSOFA_HRTF *hrtf);
- +MYSOFA_EXPORT void mysofa_tocartesian(struct MYSOFA_HRTF *hrtf);
- +MYSOFA_EXPORT void mysofa_free(struct MYSOFA_HRTF *hrtf);
-
- -struct MYSOFA_LOOKUP *mysofa_lookup_init(struct MYSOFA_HRTF *hrtf);
- -int mysofa_lookup(struct MYSOFA_LOOKUP *lookup, float *coordinate);
- -void mysofa_lookup_free(struct MYSOFA_LOOKUP *lookup);
- +MYSOFA_EXPORT struct MYSOFA_LOOKUP *mysofa_lookup_init(struct MYSOFA_HRTF *hrtf);
- +MYSOFA_EXPORT int mysofa_lookup(struct MYSOFA_LOOKUP *lookup, float *coordinate);
- +MYSOFA_EXPORT void mysofa_lookup_free(struct MYSOFA_LOOKUP *lookup);
-
- -struct MYSOFA_NEIGHBORHOOD *
- +MYSOFA_EXPORT struct MYSOFA_NEIGHBORHOOD *
- mysofa_neighborhood_init(struct MYSOFA_HRTF *hrtf,
- struct MYSOFA_LOOKUP *lookup);
- -struct MYSOFA_NEIGHBORHOOD *mysofa_neighborhood_init_withstepdefine(
- +MYSOFA_EXPORT struct MYSOFA_NEIGHBORHOOD *mysofa_neighborhood_init_withstepdefine(
- struct MYSOFA_HRTF *hrtf, struct MYSOFA_LOOKUP *lookup,
- float neighbor_angle_step, float neighbor_radius_step);
- -int *mysofa_neighborhood(struct MYSOFA_NEIGHBORHOOD *neighborhood, int pos);
- -void mysofa_neighborhood_free(struct MYSOFA_NEIGHBORHOOD *neighborhood);
- +MYSOFA_EXPORT int *mysofa_neighborhood(struct MYSOFA_NEIGHBORHOOD *neighborhood, int pos);
- +MYSOFA_EXPORT void mysofa_neighborhood_free(struct MYSOFA_NEIGHBORHOOD *neighborhood);
-
- -float *mysofa_interpolate(struct MYSOFA_HRTF *hrtf, float *cordinate,
- +MYSOFA_EXPORT float *mysofa_interpolate(struct MYSOFA_HRTF *hrtf, float *cordinate,
- int nearest, int *neighborhood, float *fir,
- float *delays);
-
- -int mysofa_resample(struct MYSOFA_HRTF *hrtf, float samplerate);
- -float mysofa_loudness(struct MYSOFA_HRTF *hrtf);
- -int mysofa_minphase(struct MYSOFA_HRTF *hrtf, float threshold);
- +MYSOFA_EXPORT int mysofa_resample(struct MYSOFA_HRTF *hrtf, float samplerate);
- +MYSOFA_EXPORT float mysofa_loudness(struct MYSOFA_HRTF *hrtf);
- +MYSOFA_EXPORT int mysofa_minphase(struct MYSOFA_HRTF *hrtf, float threshold);
-
- -struct MYSOFA_EASY *mysofa_cache_lookup(const char *filename, float samplerate);
- -struct MYSOFA_EASY *mysofa_cache_store(struct MYSOFA_EASY *,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_cache_lookup(const char *filename, float samplerate);
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_cache_store(struct MYSOFA_EASY *,
- const char *filename, float samplerate);
- -void mysofa_cache_release(struct MYSOFA_EASY *);
- -void mysofa_cache_release_all(void);
- +MYSOFA_EXPORT void mysofa_cache_release(struct MYSOFA_EASY *);
- +MYSOFA_EXPORT void mysofa_cache_release_all(void);
-
- -void mysofa_c2s(float values[3]);
- -void mysofa_s2c(float values[3]);
- +MYSOFA_EXPORT void mysofa_c2s(float values[3]);
- +MYSOFA_EXPORT void mysofa_s2c(float values[3]);
-
- struct MYSOFA_EASY {
- struct MYSOFA_HRTF *hrtf;
- @@ -173,38 +174,38 @@ struct MYSOFA_EASY {
- float *fir;
- };
-
- -struct MYSOFA_EASY *mysofa_open(const char *filename, float samplerate,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open(const char *filename, float samplerate,
- int *filterlength, int *err);
- -struct MYSOFA_EASY *mysofa_open_no_norm(const char *filename, float samplerate,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open_no_norm(const char *filename, float samplerate,
- int *filterlength, int *err);
- -struct MYSOFA_EASY *mysofa_open_advanced(const char *filename, float samplerate,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open_advanced(const char *filename, float samplerate,
- int *filterlength, int *err, bool norm,
- float neighbor_angle_step,
- float neighbor_radius_step);
- -struct MYSOFA_EASY *mysofa_open_data(const char *data, long size,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open_data(const char *data, long size,
- float samplerate, int *filterlength,
- int *err);
- -struct MYSOFA_EASY *mysofa_open_data_no_norm(const char *data, long size,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open_data_no_norm(const char *data, long size,
- float samplerate,
- int *filterlength, int *err);
- -struct MYSOFA_EASY *mysofa_open_data_advanced(
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open_data_advanced(
- const char *data, long size, float samplerate, int *filterlength, int *err,
- bool norm, float neighbor_angle_step, float neighbor_radius_step);
- -struct MYSOFA_EASY *mysofa_open_cached(const char *filename, float samplerate,
- +MYSOFA_EXPORT struct MYSOFA_EASY *mysofa_open_cached(const char *filename, float samplerate,
- int *filterlength, int *err);
- -void mysofa_getfilter_short(struct MYSOFA_EASY *easy, float x, float y, float z,
- +MYSOFA_EXPORT void mysofa_getfilter_short(struct MYSOFA_EASY *easy, float x, float y, float z,
- short *IRleft, short *IRright, int *delayLeft,
- int *delayRight);
- -void mysofa_getfilter_float(struct MYSOFA_EASY *easy, float x, float y, float z,
- +MYSOFA_EXPORT void mysofa_getfilter_float(struct MYSOFA_EASY *easy, float x, float y, float z,
- float *IRleft, float *IRright, float *delayLeft,
- float *delayRight);
- -void mysofa_getfilter_float_nointerp(struct MYSOFA_EASY *easy, float x, float y,
- +MYSOFA_EXPORT void mysofa_getfilter_float_nointerp(struct MYSOFA_EASY *easy, float x, float y,
- float z, float *IRleft, float *IRright,
- float *delayLeft, float *delayRight);
- -void mysofa_close(struct MYSOFA_EASY *easy);
- -void mysofa_close_cached(struct MYSOFA_EASY *easy);
- +MYSOFA_EXPORT void mysofa_close(struct MYSOFA_EASY *easy);
- +MYSOFA_EXPORT void mysofa_close_cached(struct MYSOFA_EASY *easy);
-
- -void mysofa_getversion(int *major, int *minor, int *patch);
- +MYSOFA_EXPORT void mysofa_getversion(int *major, int *minor, int *patch);
-
- #ifdef __cplusplus
- }
- diff --git a/src/hrtf/portable_endian.h b/src/hrtf/portable_endian.h
- index d1e76f5..5fb4b55 100644
- --- a/src/hrtf/portable_endian.h
- +++ b/src/hrtf/portable_endian.h
- @@ -13,7 +13,7 @@
-
- #endif
-
- -#if defined(__linux__) || defined(__CYGWIN__)
- +#if defined(__linux__) || defined(__CYGWIN__) || defined(__illumos__) || defined(__GNU__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
-
- # include <endian.h>
-
- @@ -41,23 +41,10 @@
- # define __LITTLE_ENDIAN LITTLE_ENDIAN
- # define __PDP_ENDIAN PDP_ENDIAN
-
- -#elif defined(__OpenBSD__)
- +#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
-
- # include <sys/endian.h>
-
- -#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
- -
- -# include <sys/endian.h>
- -
- -# define be16toh(x) betoh16(x)
- -# define le16toh(x) letoh16(x)
- -
- -# define be32toh(x) betoh32(x)
- -# define le32toh(x) letoh32(x)
- -
- -# define be64toh(x) betoh64(x)
- -# define le64toh(x) letoh64(x)
- -
- #elif defined(__WINDOWS__)
-
- # include <windows.h>
|