From 733073550f61cf4fbbe21aab33e9271915325109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20M=C3=BCller?= Date: Tue, 4 Mar 2014 13:44:15 +0100 Subject: Audaspace: use standalone library. - Added the cmake configuration option WITH_EXTERNAL_AUDASPACE. - Fixes to build without standalone library as well. --- CMakeLists.txt | 8 +++ build_files/cmake/Modules/FindAudaspace.cmake | 76 +++++++++++++++++++++ build_files/cmake/macros.cmake | 3 + intern/audaspace/CMakeLists.txt | 30 +++++++++ intern/audaspace/intern/AUD_PyInit.cpp | 78 ++++++++++++++++++++++ intern/audaspace/intern/AUD_Set.cpp | 69 +++++++++++++++++++ intern/audaspace/intern/AUD_Set.h | 74 ++++++++++++++++++++ source/blender/blenkernel/BKE_sound.h | 8 ++- source/blender/blenkernel/CMakeLists.txt | 7 ++ source/blender/blenkernel/intern/blender.c | 2 - source/blender/blenkernel/intern/nla.c | 6 +- source/blender/blenkernel/intern/sequencer.c | 6 +- source/blender/blenkernel/intern/sound.c | 30 ++++++--- source/blender/blenkernel/intern/writeffmpeg.c | 7 +- source/blender/editors/sound/CMakeLists.txt | 10 ++- source/blender/editors/sound/sound_ops.c | 6 +- source/blender/editors/space_graph/CMakeLists.txt | 10 ++- source/blender/editors/space_graph/graph_edit.c | 6 +- .../blender/editors/space_sequencer/CMakeLists.txt | 10 ++- .../editors/space_sequencer/sequencer_add.c | 6 +- source/blender/makesrna/intern/CMakeLists.txt | 7 ++ source/blender/makesrna/intern/rna_scene.c | 6 +- .../BlenderRoutines/BL_KetsjiEmbedStart.cpp | 6 +- source/gameengine/BlenderRoutines/CMakeLists.txt | 10 ++- source/gameengine/Converter/CMakeLists.txt | 10 ++- .../gameengine/Converter/KX_ConvertActuators.cpp | 6 +- source/gameengine/GamePlayer/ghost/CMakeLists.txt | 10 ++- .../GamePlayer/ghost/GPG_Application.cpp | 6 +- source/gameengine/Ketsji/CMakeLists.txt | 14 ++-- source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 4 -- source/gameengine/Ketsji/KX_SoundActuator.cpp | 11 ++- source/gameengine/Ketsji/KX_SoundActuator.h | 7 +- 32 files changed, 498 insertions(+), 51 deletions(-) create mode 100644 build_files/cmake/Modules/FindAudaspace.cmake create mode 100644 intern/audaspace/intern/AUD_PyInit.cpp create mode 100644 intern/audaspace/intern/AUD_Set.cpp create mode 100644 intern/audaspace/intern/AUD_Set.h diff --git a/CMakeLists.txt b/CMakeLists.txt index dd19d801a0a..cac75d339b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -247,6 +247,7 @@ option(WITH_HEADLESS "Build without graphical support (renderfarm, server m mark_as_advanced(WITH_HEADLESS) option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON) +option(WITH_EXTERNAL_AUDASPACE "Build with external audaspace library installed on the system (only enable if you know what you're doing!)" OFF) mark_as_advanced(WITH_AUDASPACE) option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON) @@ -883,6 +884,13 @@ if(UNIX AND NOT APPLE) endif() # Audio IO + if(WITH_EXTERNAL_AUDASPACE) + find_package_wrapper(Audaspace) + if(NOT AUDASPACE_FOUND OR NOT CAUDASPACE_FOUND) + message(FATAL_ERROR "Audaspace external library not found!") + endif() + endif() + if(WITH_OPENAL) find_package_wrapper(OpenAL) if(NOT OPENAL_FOUND) diff --git a/build_files/cmake/Modules/FindAudaspace.cmake b/build_files/cmake/Modules/FindAudaspace.cmake new file mode 100644 index 00000000000..361c1bf3ba4 --- /dev/null +++ b/build_files/cmake/Modules/FindAudaspace.cmake @@ -0,0 +1,76 @@ +# - Try to find audaspace +# Once done, this will define +# +# AUDASPACE_FOUND - system has audaspace +# AUDASPACE_INCLUDE_DIRS - the audaspace include directories +# AUDASPACE_LIBRARIES - link these to use audaspace +# CAUDASPACE_FOUND - system has audaspace's C binding +# CAUDASPACE_INCLUDE_DIRS - the audaspace's C binding include directories +# CAUDASPACE_LIBRARIES - link these to use audaspace's C binding +# PYAUDASPACE_FOUND - system has audaspace's python binding +# PYAUDASPACE_INCLUDE_DIRS - the audaspace's python binding include directories +# PYAUDASPACE_LIBRARIES - link these to use audaspace's python binding + +# Use pkg-config to get hints about paths +find_package(PkgConfig) +if(PKG_CONFIG_FOUND) + pkg_check_modules(AUDASPACE_PKGCONF audaspace) +endif(PKG_CONFIG_FOUND) + +# Include dir +find_path(AUDASPACE_INCLUDE_DIR + NAMES audaspace/ISound.h + PATHS ${AUDASPACE_PKGCONF_INCLUDE_DIRS} +) + +# Library +find_library(AUDASPACE_LIBRARY + NAMES audaspace + PATHS ${AUDASPACE_PKGCONF_LIBRARY_DIRS} +) + +# Include dir +find_path(CAUDASPACE_INCLUDE_DIR + NAMES audaspace/AUD_Sound.h + PATHS ${AUDASPACE_PKGCONF_INCLUDE_DIRS} +) + +# Library +find_library(CAUDASPACE_LIBRARY + NAMES caudaspace + PATHS ${AUDASPACE_PKGCONF_LIBRARY_DIRS} +) + +# Include dir +find_path(PYAUDASPACE_INCLUDE_DIR + NAMES audaspace/python/PyAPI.h + PATHS ${AUDASPACE_PKGCONF_INCLUDE_DIRS} +) + +# Library +find_library(PYAUDASPACE_LIBRARY + NAMES pyaudaspace + PATHS ${AUDASPACE_PKGCONF_LIBRARY_DIRS} +) + +find_package(PackageHandleStandardArgs) +find_package_handle_standard_args(Audaspace DEFAULT_MSG AUDASPACE_LIBRARY AUDASPACE_INCLUDE_DIR) +find_package_handle_standard_args(CAudaspace DEFAULT_MSG CAUDASPACE_LIBRARY CAUDASPACE_INCLUDE_DIR) +find_package_handle_standard_args(PyAudaspace DEFAULT_MSG PYAUDASPACE_LIBRARY PYAUDASPACE_INCLUDE_DIR) + +if(AUDASPACE_FOUND) + set(AUDASPACE_LIBRARIES ${AUDASPACE_LIBRARY}) + set(AUDASPACE_INCLUDE_DIRS ${AUDASPACE_INCLUDE_DIR}) +endif(AUDASPACE_FOUND) + +if(CAUDASPACE_FOUND) + set(CAUDASPACE_LIBRARIES ${CAUDASPACE_LIBRARY}) + set(CAUDASPACE_INCLUDE_DIRS ${CAUDASPACE_INCLUDE_DIR}) +endif(CAUDASPACE_FOUND) + +if(PYAUDASPACE_FOUND) + set(PYAUDASPACE_LIBRARIES ${PYAUDASPACE_LIBRARY}) + set(PYAUDASPACE_INCLUDE_DIRS ${PYAUDASPACE_INCLUDE_DIR}) +endif(PYAUDASPACE_FOUND) + +mark_as_advanced(AUDASPACE_LIBRARY AUDASPACE_LIBRARIES AUDASPACE_INCLUDE_DIR AUDASPACE_INCLUDE_DIRS CAUDASPACE_LIBRARY CAUDASPACE_LIBRARIES CAUDASPACE_INCLUDE_DIR CAUDASPACE_INCLUDE_DIRS PYAUDASPACE_LIBRARY PYAUDASPACE_LIBRARIES PYAUDASPACE_INCLUDE_DIR PYAUDASPACE_INCLUDE_DIRS) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 34f6a360db6..de2109b5a6e 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -343,6 +343,9 @@ function(setup_liblinks if(WITH_BULLET AND WITH_SYSTEM_BULLET) target_link_libraries(${target} ${BULLET_LIBRARIES}) endif() + if(WITH_EXTERNAL_AUDASPACE) + target_link_libraries(${target} ${CAUDASPACE_LIBRARIES} ${PYAUDASPACE_LIBRARIES}) + endif() if(WITH_OPENAL) target_link_libraries(${target} ${OPENAL_LIBRARY}) endif() diff --git a/intern/audaspace/CMakeLists.txt b/intern/audaspace/CMakeLists.txt index 5b810493663..7c6335166ec 100644 --- a/intern/audaspace/CMakeLists.txt +++ b/intern/audaspace/CMakeLists.txt @@ -21,6 +21,35 @@ remove_extra_strict_flags() +if(WITH_EXTERNAL_AUDASPACE) + + set(INC + . + ) + + set(INC_SYS + ${CAUDASPACE_INCLUDE_DIRS} + ${PYAUDASPACE_INCLUDE_DIRS} + ) + + set(SRC + intern/AUD_Set.cpp + intern/AUD_Set.h + ) + +if(WITH_PYTHON) + list(APPEND INC_SYS + ${PYTHON_INCLUDE_DIRS} + ) + list(APPEND SRC + intern/AUD_PyInit.cpp + intern/AUD_PyInit.h + ) + add_definitions(-DWITH_PYTHON) +endif() + +else() + set(INC . FX @@ -316,5 +345,6 @@ if(WITH_PYTHON) ) add_definitions(-DWITH_PYTHON) endif() +endif() blender_add_lib(bf_intern_audaspace "${SRC}" "${INC}" "${INC_SYS}") diff --git a/intern/audaspace/intern/AUD_PyInit.cpp b/intern/audaspace/intern/AUD_PyInit.cpp new file mode 100644 index 00000000000..8802f39929c --- /dev/null +++ b/intern/audaspace/intern/AUD_PyInit.cpp @@ -0,0 +1,78 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * Copyright 2009-2011 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * Audaspace is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * AudaSpace is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Audaspace; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file audaspace/intern/AUD_PyInit.cpp + * \ingroup audaspaceintern + */ + +#include "AUD_PyInit.h" + +#include +#include +#include + +extern "C" { +extern void *sound_get_factory(void *sound); +} + +static PyObject *AUD_getSoundFromPointer(PyObject *self, PyObject *args) +{ + long int lptr; + + if (PyArg_Parse(args, "l:_sound_from_pointer", &lptr)) { + if (lptr) { + AUD_Sound* sound = sound_get_factory((void *) lptr); + + if (sound) { + Sound *obj = (Sound *)Sound_empty(); + if (obj) { + obj->sound = AUD_copy(sound); + return (PyObject *) obj; + } + } + } + } + + Py_RETURN_NONE; +} + +static PyMethodDef meth_sound_from_pointer[] = { + {"_sound_from_pointer", (PyCFunction)AUD_getSoundFromPointer, METH_O, + "_sound_from_pointer(pointer)\n\n" + "Returns the corresponding :class:`Factory` object.\n\n" + ":arg pointer: The pointer to the bSound object as long.\n" + ":type pointer: long\n" + ":return: The corresponding :class:`Factory` object.\n" + ":rtype: :class:`Factory`"} +}; + +PyObject *AUD_initPython(void) +{ + PyObject *module = PyInit_aud(); + PyModule_AddObject(module, "_sound_from_pointer", (PyObject *)PyCFunction_New(meth_sound_from_pointer, NULL)); + PyDict_SetItemString(PyImport_GetModuleDict(), "aud", module); + + return module; +} + diff --git a/intern/audaspace/intern/AUD_Set.cpp b/intern/audaspace/intern/AUD_Set.cpp new file mode 100644 index 00000000000..eb04e37f666 --- /dev/null +++ b/intern/audaspace/intern/AUD_Set.cpp @@ -0,0 +1,69 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * Copyright 2009-2011 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * Audaspace is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * AudaSpace is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Audaspace; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file audaspace/intern/AUD_Set.cpp + * \ingroup audaspaceintern + */ + +#include + +#include "AUD_Set.h" + +void *AUD_createSet() +{ + return new std::set(); +} + +void AUD_destroySet(void *set) +{ + delete reinterpret_cast*>(set); +} + +char AUD_removeSet(void *set, void *entry) +{ + if (set) + return reinterpret_cast*>(set)->erase(entry); + return 0; +} + +void AUD_addSet(void *set, void *entry) +{ + if (entry) + reinterpret_cast*>(set)->insert(entry); +} + +void *AUD_getSet(void *set) +{ + if (set) { + std::set* rset = reinterpret_cast*>(set); + if (!rset->empty()) { + std::set::iterator it = rset->begin(); + void *result = *it; + rset->erase(it); + return result; + } + } + + return (void*) 0; +} diff --git a/intern/audaspace/intern/AUD_Set.h b/intern/audaspace/intern/AUD_Set.h new file mode 100644 index 00000000000..ca1419293b0 --- /dev/null +++ b/intern/audaspace/intern/AUD_Set.h @@ -0,0 +1,74 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * Copyright 2009-2011 Jörg Hermann Müller + * + * This file is part of AudaSpace. + * + * Audaspace is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * AudaSpace is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Audaspace; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file AUD_Set.h + * \ingroup audaspace + */ + +#ifndef __AUD_SET_H__ +#define __AUD_SET_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Creates a new set. + * \return The new set. + */ +extern void *AUD_createSet(void); + +/** + * Deletes a set. + * \param set The set to delete. + */ +extern void AUD_destroySet(void *set); + +/** + * Removes an entry from a set. + * \param set The set work on. + * \param entry The entry to remove. + * \return Whether the entry was in the set or not. + */ +extern char AUD_removeSet(void *set, void *entry); + +/** + * Adds a new entry to a set. + * \param set The set work on. + * \param entry The entry to add. + */ +extern void AUD_addSet(void *set, void *entry); + +/** + * Removes one entry from a set and returns it. + * \param set The set work on. + * \return The entry or NULL if the set is empty. + */ +extern void *AUD_getSet(void *set); + +#ifdef __cplusplus +} +#endif + +#endif //__AUD_SET_H__ diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h index 819b49da8e9..7d2d23e1d39 100644 --- a/source/blender/blenkernel/BKE_sound.h +++ b/source/blender/blenkernel/BKE_sound.h @@ -35,6 +35,12 @@ #define SOUND_WAVE_SAMPLES_PER_SECOND 250 +#ifdef WITH_AUDASPACE +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# endif +#endif + struct bSound; struct Main; struct Sequence; @@ -75,7 +81,7 @@ void BKE_sound_load(struct Main *main, struct bSound *sound); void BKE_sound_free(struct bSound *sound); -#ifdef __AUD_C_API_H__ +#if defined(__AUD_C_API_H__) || defined(WITH_EXTERNAL_AUDASPACE) AUD_Device *BKE_sound_mixdown(struct Scene *scene, AUD_DeviceSpecs specs, int start, float volume); #endif diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index 349d1303da3..dd5fcafd964 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -315,6 +315,13 @@ if(WITH_AUDASPACE) ../../../intern/audaspace/intern ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS + ${CAUDASPACE_INCLUDE_DIRS} + ) + endif() endif() if(WITH_BULLET) diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 37bd9c5db5c..0923ac7e743 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -309,8 +309,6 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath CTX_data_main_set(C, G.main); - BKE_sound_init_main(G.main); - if (bfd->user) { /* only here free userdef themes... */ diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c index 1ad6446eb05..25629e7db94 100644 --- a/source/blender/blenkernel/intern/nla.c +++ b/source/blender/blenkernel/intern/nla.c @@ -59,7 +59,11 @@ #include "BKE_library.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif #include "RNA_access.h" diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index db07344ee93..b087d809e82 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -88,7 +88,11 @@ #include "BKE_sound.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif static ImBuf *seq_render_strip_stack(const SeqRenderData *context, ListBase *seqbasep, float cfra, int chanshown); diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 3accf2119a4..0eaae45c008 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -48,7 +48,15 @@ #include "DNA_speaker_types.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# include +# include +# include +# include "AUD_Set.h" +# else +# include "AUD_C-API.h" +# endif #endif #include "BKE_global.h" @@ -150,13 +158,13 @@ static void sound_sync_callback(void *data, int mode, float time) int BKE_sound_define_from_str(const char *str) { if (BLI_strcaseeq(str, "NULL")) - return AUD_NULL_DEVICE; + return 0; if (BLI_strcaseeq(str, "SDL")) - return AUD_SDL_DEVICE; + return 1; if (BLI_strcaseeq(str, "OPENAL")) - return AUD_OPENAL_DEVICE; + return 2; if (BLI_strcaseeq(str, "JACK")) - return AUD_JACK_DEVICE; + return 3; return -1; } @@ -189,13 +197,13 @@ void BKE_sound_init(struct Main *bmain) switch(device) { - case AUD_SDL_DEVICE: + case 1: device_name = "SDL"; break; - case AUD_OPENAL_DEVICE: + case 2: device_name = "OpenAL"; break; - case AUD_JACK_DEVICE: + case 3: device_name = "Jack"; break; default: @@ -204,7 +212,7 @@ void BKE_sound_init(struct Main *bmain) } if (buffersize < 128) - buffersize = AUD_DEFAULT_BUFFER_SIZE; + buffersize = 1024; if (specs.rate < AUD_RATE_8000) specs.rate = AUD_RATE_44100; @@ -821,7 +829,11 @@ float BKE_sound_get_length(bSound *sound) bool BKE_sound_is_jack_supported(void) { +#ifdef WITH_EXTERNAL_AUDASPACE + return 1; +#else return (bool)AUD_isJackSupported(); +#endif } #else /* WITH_AUDASPACE */ diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index af71f19c226..af33e688dc4 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -45,7 +45,12 @@ #include "BLI_blenlib.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# include +# else +# include "AUD_C-API.h" +# endif #endif #include "BLI_utildefines.h" diff --git a/source/blender/editors/sound/CMakeLists.txt b/source/blender/editors/sound/CMakeLists.txt index 245ee657bc3..c3ef0f8851f 100644 --- a/source/blender/editors/sound/CMakeLists.txt +++ b/source/blender/editors/sound/CMakeLists.txt @@ -39,10 +39,14 @@ set(SRC ) if(WITH_AUDASPACE) - list(APPEND INC - ../../../../intern/audaspace/intern - ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../../intern/audaspace/intern) + endif() endif() if(WITH_CODEC_FFMPEG) diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 8a3b48125d0..1fd48dd7e00 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -67,7 +67,11 @@ #include "WM_types.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif #include "ED_sound.h" diff --git a/source/blender/editors/space_graph/CMakeLists.txt b/source/blender/editors/space_graph/CMakeLists.txt index 0a29810ff3d..b911f9effbe 100644 --- a/source/blender/editors/space_graph/CMakeLists.txt +++ b/source/blender/editors/space_graph/CMakeLists.txt @@ -48,10 +48,14 @@ set(SRC ) if(WITH_AUDASPACE) - list(APPEND INC - ../../../../intern/audaspace/intern - ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../../intern/audaspace/intern) + endif() endif() if(WITH_INTERNATIONAL) diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 3de3ecebc44..1f2b02dcf31 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -36,7 +36,11 @@ #include #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif #include "MEM_guardedalloc.h" diff --git a/source/blender/editors/space_sequencer/CMakeLists.txt b/source/blender/editors/space_sequencer/CMakeLists.txt index d9aff2781f0..ea12ee3b751 100644 --- a/source/blender/editors/space_sequencer/CMakeLists.txt +++ b/source/blender/editors/space_sequencer/CMakeLists.txt @@ -53,10 +53,14 @@ set(SRC ) if(WITH_AUDASPACE) - list(APPEND INC - ../../../../intern/audaspace/intern - ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../../intern/audaspace/intern) + endif() endif() if(WITH_INTERNATIONAL) diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index edf8a41b5a8..7ffed70d7b8 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -66,7 +66,11 @@ #include "BKE_sound.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif /* own include */ diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index bef2fa3084e..967ec3aeaf8 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -225,6 +225,13 @@ endif() if(WITH_AUDASPACE) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../intern/audaspace/intern) + endif() endif() if(WITH_CODEC_QUICKTIME) diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index e990ff1ec29..9c4fcd927c8 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -59,7 +59,11 @@ #ifdef WITH_QUICKTIME # include "quicktime_export.h" # ifdef WITH_AUDASPACE -# include "AUD_Space.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_Space.h" +# endif # endif #endif diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp index f275d0a0f0c..4d30bc51280 100644 --- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp +++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp @@ -101,7 +101,11 @@ typedef void * wmUIHandlerRemoveFunc; } #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif static BlendFileData *load_game_data(char *filename) diff --git a/source/gameengine/BlenderRoutines/CMakeLists.txt b/source/gameengine/BlenderRoutines/CMakeLists.txt index 1a2809cc8ab..324babf9fa9 100644 --- a/source/gameengine/BlenderRoutines/CMakeLists.txt +++ b/source/gameengine/BlenderRoutines/CMakeLists.txt @@ -56,10 +56,14 @@ set(SRC add_definitions(${GL_DEFINITIONS}) if(WITH_AUDASPACE) - list(APPEND INC - ../../../intern/audaspace/intern - ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../intern/audaspace/intern) + endif() endif() if(WITH_CODEC_FFMPEG) diff --git a/source/gameengine/Converter/CMakeLists.txt b/source/gameengine/Converter/CMakeLists.txt index 6d681dd166e..dba3f4da050 100644 --- a/source/gameengine/Converter/CMakeLists.txt +++ b/source/gameengine/Converter/CMakeLists.txt @@ -113,10 +113,14 @@ if(WITH_BULLET) endif() if(WITH_AUDASPACE) - list(APPEND INC - ../../../intern/audaspace/intern - ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../intern/audaspace/intern) + endif() endif() blender_add_lib(ge_converter "${SRC}" "${INC}" "${INC_SYS}") diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp index 1acbd0b1608..e5e86cd4ee6 100644 --- a/source/gameengine/Converter/KX_ConvertActuators.cpp +++ b/source/gameengine/Converter/KX_ConvertActuators.cpp @@ -42,7 +42,11 @@ #include "KX_ConvertActuators.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif // Actuators diff --git a/source/gameengine/GamePlayer/ghost/CMakeLists.txt b/source/gameengine/GamePlayer/ghost/CMakeLists.txt index a1bc7e88840..58e47bc4440 100644 --- a/source/gameengine/GamePlayer/ghost/CMakeLists.txt +++ b/source/gameengine/GamePlayer/ghost/CMakeLists.txt @@ -85,10 +85,14 @@ if(WITH_INTERNATIONAL) endif() if(WITH_AUDASPACE) - list(APPEND INC - ../../../../intern/audaspace/intern - ) add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS ${CAUDASPACE_INCLUDE_DIRS}) + else() + list(APPEND INC ../../../../intern/audaspace/intern) + endif() endif() if(WITH_SDL AND WITH_SDL_DYNLOAD) diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp index f06a153431e..75a301211a2 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp @@ -100,7 +100,11 @@ extern "C" #include "GHOST_Rect.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# else +# include "AUD_C-API.h" +# endif #endif static void frameTimerProc(GHOST_ITimerTask* task, GHOST_TUns64 time); diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt index 44532e5d737..f938994f86a 100644 --- a/source/gameengine/Ketsji/CMakeLists.txt +++ b/source/gameengine/Ketsji/CMakeLists.txt @@ -248,11 +248,17 @@ if(WITH_CODEC_FFMPEG) endif() if(WITH_AUDASPACE) - list(APPEND INC - ../../../intern/audaspace/intern - ../../../intern/audaspace/FX - ) + list(APPEND INC ../../../intern/audaspace/intern) + add_definitions(-DWITH_AUDASPACE) + + if(WITH_EXTERNAL_AUDASPACE) + add_definitions(-DWITH_EXTERNAL_AUDASPACE) + list(APPEND INC_SYS + ${CAUDASPACE_INCLUDE_DIRS} + ${PYAUDASPACE_INCLUDE_DIRS} + ) + endif() endif() if(WITH_BULLET) diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index acf65817c49..c7cf556a2d3 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -62,10 +62,6 @@ #include "KX_PyConstraintBinding.h" #include "PHY_IPhysicsEnvironment.h" -#ifdef WITH_AUDASPACE -# include "AUD_C-API.h" -#endif - #include "NG_NetworkScene.h" #include "NG_NetworkDeviceInterface.h" diff --git a/source/gameengine/Ketsji/KX_SoundActuator.cpp b/source/gameengine/Ketsji/KX_SoundActuator.cpp index 611467d7167..a14cb9a2897 100644 --- a/source/gameengine/Ketsji/KX_SoundActuator.cpp +++ b/source/gameengine/Ketsji/KX_SoundActuator.cpp @@ -37,7 +37,14 @@ #include "KX_SoundActuator.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +typedef float sample_t; +# include +# include +# include +# include +# include +# endif #endif #include "KX_GameObject.h" @@ -554,7 +561,7 @@ int KX_SoundActuator::pyattr_set_sound(void *self, const struct KX_PYATTRIBUTE_D if (!PyArg_Parse(value, "O", &sound)) return PY_SET_ATTR_FAIL; - AUD_Sound *snd = AUD_getSoundFromPython((void *)sound); + AUD_Sound *snd = AUD_getSoundFromPython(sound); if (snd) { diff --git a/source/gameengine/Ketsji/KX_SoundActuator.h b/source/gameengine/Ketsji/KX_SoundActuator.h index bd7b28680f6..83d22142bda 100644 --- a/source/gameengine/Ketsji/KX_SoundActuator.h +++ b/source/gameengine/Ketsji/KX_SoundActuator.h @@ -35,7 +35,12 @@ #include "SCA_IActuator.h" #ifdef WITH_AUDASPACE -# include "AUD_C-API.h" +# ifdef WITH_EXTERNAL_AUDASPACE +# include +# include +# else +# include "AUD_C-API.h" +# endif #endif #include "BKE_sound.h" -- cgit v1.2.3