Audaspace:
* Renamed AUD_Handle to AUD_Channel in the C-API to prevent errors with the C++ version of AUD_Handle. * Added Python API!!!
This commit is contained in:
@@ -60,6 +60,12 @@ IF(WITH_FFTW3)
|
|||||||
ADD_DEFINITIONS(-DWITH_FFTW3)
|
ADD_DEFINITIONS(-DWITH_FFTW3)
|
||||||
ENDIF(WITH_FFTW3)
|
ENDIF(WITH_FFTW3)
|
||||||
|
|
||||||
SET(SRC ${SRC} ${FFMPEGSRC} ${SNDFILESRC} ${FFTW3SRC} ${SDLSRC} ${OPENALSRC} ${JACKSRC})
|
IF(WITH_PYTHON)
|
||||||
|
SET(INC ${INC} Python ${PYTHON_INC})
|
||||||
|
FILE(GLOB PYTHONSRC Python/*.cpp)
|
||||||
|
ADD_DEFINITIONS(-DWITH_PYTHON)
|
||||||
|
ENDIF(WITH_PYTHON)
|
||||||
|
|
||||||
|
SET(SRC ${SRC} ${FFMPEGSRC} ${SNDFILESRC} ${FFTW3SRC} ${SDLSRC} ${OPENALSRC} ${JACKSRC} ${PYTHONSRC})
|
||||||
|
|
||||||
BLENDERLIB(bf_audaspace "${SRC}" "${INC}")
|
BLENDERLIB(bf_audaspace "${SRC}" "${INC}")
|
||||||
|
3149
intern/audaspace/Python/AUD_PyAPI.cpp
Normal file
3149
intern/audaspace/Python/AUD_PyAPI.cpp
Normal file
File diff suppressed because it is too large
Load Diff
67
intern/audaspace/Python/AUD_PyAPI.h
Normal file
67
intern/audaspace/Python/AUD_PyAPI.h
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* ***** BEGIN LGPL LICENSE BLOCK *****
|
||||||
|
*
|
||||||
|
* Copyright 2009 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 Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 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 Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* ***** END LGPL LICENSE BLOCK *****
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AUD_PYAPI
|
||||||
|
#define AUD_PYAPI
|
||||||
|
|
||||||
|
#include "Python.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#include "AUD_IDevice.h"
|
||||||
|
#else
|
||||||
|
typedef void AUD_IFactory;
|
||||||
|
typedef void AUD_IDevice;
|
||||||
|
typedef void AUD_Handle;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
PyObject_HEAD
|
||||||
|
PyObject* child_list;
|
||||||
|
AUD_IFactory* factory;
|
||||||
|
} Sound;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
PyObject_HEAD
|
||||||
|
AUD_Handle* handle;
|
||||||
|
PyObject* device;
|
||||||
|
} Handle;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
PyObject_HEAD
|
||||||
|
AUD_IDevice* device;
|
||||||
|
} Device;
|
||||||
|
|
||||||
|
PyMODINIT_FUNC
|
||||||
|
PyInit_aud(void);
|
||||||
|
|
||||||
|
extern PyObject *
|
||||||
|
Device_empty();
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif //AUD_PYAPI
|
@@ -36,6 +36,11 @@ if env['WITH_BF_FFTW3']:
|
|||||||
incs += ' fftw ' + env['BF_FFTW3_INC']
|
incs += ' fftw ' + env['BF_FFTW3_INC']
|
||||||
defs.append('WITH_FFTW3')
|
defs.append('WITH_FFTW3')
|
||||||
|
|
||||||
|
if env['WITH_BF_PYTHON']:
|
||||||
|
sources += env.Glob('Python/*.cpp')
|
||||||
|
incs += ' Python ' + env['BF_PYTHON_INC']
|
||||||
|
defs.append('WITH_PYTHON')
|
||||||
|
|
||||||
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
|
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
|
||||||
incs += ' ' + env['BF_PTHREADS_INC']
|
incs += ' ' + env['BF_PTHREADS_INC']
|
||||||
|
|
||||||
|
@@ -23,11 +23,18 @@
|
|||||||
* ***** END LGPL LICENSE BLOCK *****
|
* ***** END LGPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef WITH_PYTHON
|
||||||
|
#include "AUD_PyAPI.h"
|
||||||
|
|
||||||
|
Device* g_device;
|
||||||
|
bool g_pyinitialized = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#ifdef WITH_FFMPEG
|
#ifndef __STDC_CONSTANT_MACROS
|
||||||
// needed for INT64_C
|
// needed for INT64_C
|
||||||
#define __STDC_CONSTANT_MACROS
|
#define __STDC_CONSTANT_MACROS
|
||||||
#endif
|
#endif
|
||||||
@@ -78,6 +85,7 @@ extern "C" {
|
|||||||
|
|
||||||
typedef AUD_IFactory AUD_Sound;
|
typedef AUD_IFactory AUD_Sound;
|
||||||
typedef AUD_ReadDevice AUD_Device;
|
typedef AUD_ReadDevice AUD_Device;
|
||||||
|
typedef AUD_Handle AUD_Channel;
|
||||||
|
|
||||||
#define AUD_CAPI_IMPLEMENTATION
|
#define AUD_CAPI_IMPLEMENTATION
|
||||||
#include "AUD_C-API.h"
|
#include "AUD_C-API.h"
|
||||||
@@ -134,6 +142,17 @@ int AUD_init(AUD_DeviceType device, AUD_DeviceSpecs specs, int buffersize)
|
|||||||
if(AUD_device->checkCapability(AUD_CAPS_3D_DEVICE))
|
if(AUD_device->checkCapability(AUD_CAPS_3D_DEVICE))
|
||||||
AUD_3ddevice = dynamic_cast<AUD_I3DDevice*>(AUD_device);
|
AUD_3ddevice = dynamic_cast<AUD_I3DDevice*>(AUD_device);
|
||||||
|
|
||||||
|
#ifdef WITH_PYTHON
|
||||||
|
if(g_pyinitialized)
|
||||||
|
{
|
||||||
|
g_device = (Device*)Device_empty();
|
||||||
|
if(g_device != NULL)
|
||||||
|
{
|
||||||
|
g_device->device = dev;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch(AUD_Exception)
|
catch(AUD_Exception)
|
||||||
@@ -160,13 +179,51 @@ int* AUD_enumDevices()
|
|||||||
|
|
||||||
void AUD_exit()
|
void AUD_exit()
|
||||||
{
|
{
|
||||||
|
#ifdef WITH_PYTHON
|
||||||
|
if(g_device)
|
||||||
|
{
|
||||||
|
Py_XDECREF(g_device);
|
||||||
|
g_device = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
if(AUD_device)
|
||||||
|
delete AUD_device;
|
||||||
|
AUD_device = NULL;
|
||||||
|
AUD_3ddevice = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_PYTHON
|
||||||
|
static PyObject* AUD_getCDevice(PyObject* self)
|
||||||
|
{
|
||||||
|
if(g_device)
|
||||||
|
{
|
||||||
|
Py_INCREF(g_device);
|
||||||
|
return (PyObject*)g_device;
|
||||||
|
}
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyMethodDef meth_getcdevice[] = {{ "getCDevice", (PyCFunction)AUD_getCDevice, METH_NOARGS, "Returns the C API Device."}};
|
||||||
|
|
||||||
|
PyObject* AUD_initPython()
|
||||||
|
{
|
||||||
|
PyObject* module = PyInit_aud();
|
||||||
|
PyModule_AddObject(module, "getCDevice", (PyObject *)PyCFunction_New(meth_getcdevice, NULL));
|
||||||
|
PyDict_SetItemString(PySys_GetObject("modules"), "aud", module);
|
||||||
if(AUD_device)
|
if(AUD_device)
|
||||||
{
|
{
|
||||||
delete AUD_device;
|
g_device = (Device*)Device_empty();
|
||||||
AUD_device = NULL;
|
if(g_device != NULL)
|
||||||
AUD_3ddevice = NULL;
|
{
|
||||||
|
g_device->device = AUD_device;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
g_pyinitialized = true;
|
||||||
|
|
||||||
|
return module;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void AUD_lock()
|
void AUD_lock()
|
||||||
{
|
{
|
||||||
@@ -285,7 +342,7 @@ AUD_Sound* AUD_loopSound(AUD_Sound* sound)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_setLoop(AUD_Handle* handle, int loops, float time)
|
int AUD_setLoop(AUD_Channel* handle, int loops, float time)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
{
|
{
|
||||||
@@ -325,7 +382,7 @@ void AUD_unload(AUD_Sound* sound)
|
|||||||
delete sound;
|
delete sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
AUD_Handle* AUD_play(AUD_Sound* sound, int keep)
|
AUD_Channel* AUD_play(AUD_Sound* sound, int keep)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
assert(sound);
|
assert(sound);
|
||||||
@@ -339,50 +396,50 @@ AUD_Handle* AUD_play(AUD_Sound* sound, int keep)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_pause(AUD_Handle* handle)
|
int AUD_pause(AUD_Channel* handle)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
return AUD_device->pause(handle);
|
return AUD_device->pause(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_resume(AUD_Handle* handle)
|
int AUD_resume(AUD_Channel* handle)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
return AUD_device->resume(handle);
|
return AUD_device->resume(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_stop(AUD_Handle* handle)
|
int AUD_stop(AUD_Channel* handle)
|
||||||
{
|
{
|
||||||
if(AUD_device)
|
if(AUD_device)
|
||||||
return AUD_device->stop(handle);
|
return AUD_device->stop(handle);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_setKeep(AUD_Handle* handle, int keep)
|
int AUD_setKeep(AUD_Channel* handle, int keep)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
return AUD_device->setKeep(handle, keep);
|
return AUD_device->setKeep(handle, keep);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_seek(AUD_Handle* handle, float seekTo)
|
int AUD_seek(AUD_Channel* handle, float seekTo)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
return AUD_device->seek(handle, seekTo);
|
return AUD_device->seek(handle, seekTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
float AUD_getPosition(AUD_Handle* handle)
|
float AUD_getPosition(AUD_Channel* handle)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
return AUD_device->getPosition(handle);
|
return AUD_device->getPosition(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
AUD_Status AUD_getStatus(AUD_Handle* handle)
|
AUD_Status AUD_getStatus(AUD_Channel* handle)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
return AUD_device->getStatus(handle);
|
return AUD_device->getStatus(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
AUD_Handle* AUD_play3D(AUD_Sound* sound, int keep)
|
AUD_Channel* AUD_play3D(AUD_Sound* sound, int keep)
|
||||||
{
|
{
|
||||||
assert(AUD_device);
|
assert(AUD_device);
|
||||||
assert(sound);
|
assert(sound);
|
||||||
@@ -446,7 +503,7 @@ float AUD_get3DSetting(AUD_3DSetting setting)
|
|||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_update3DSource(AUD_Handle* handle, AUD_3DData* data)
|
int AUD_update3DSource(AUD_Channel* handle, AUD_3DData* data)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
{
|
{
|
||||||
@@ -465,7 +522,7 @@ int AUD_update3DSource(AUD_Handle* handle, AUD_3DData* data)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_set3DSourceSetting(AUD_Handle* handle,
|
int AUD_set3DSourceSetting(AUD_Channel* handle,
|
||||||
AUD_3DSourceSetting setting, float value)
|
AUD_3DSourceSetting setting, float value)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
@@ -484,7 +541,7 @@ int AUD_set3DSourceSetting(AUD_Handle* handle,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
float AUD_get3DSourceSetting(AUD_Handle* handle, AUD_3DSourceSetting setting)
|
float AUD_get3DSourceSetting(AUD_Channel* handle, AUD_3DSourceSetting setting)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
{
|
{
|
||||||
@@ -502,7 +559,7 @@ float AUD_get3DSourceSetting(AUD_Handle* handle, AUD_3DSourceSetting setting)
|
|||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_setSoundVolume(AUD_Handle* handle, float volume)
|
int AUD_setSoundVolume(AUD_Channel* handle, float volume)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
{
|
{
|
||||||
@@ -520,7 +577,7 @@ int AUD_setSoundVolume(AUD_Handle* handle, float volume)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_setSoundPitch(AUD_Handle* handle, float pitch)
|
int AUD_setSoundPitch(AUD_Channel* handle, float pitch)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
{
|
{
|
||||||
@@ -550,14 +607,14 @@ AUD_Device* AUD_openReadDevice(AUD_DeviceSpecs specs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AUD_Handle* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek)
|
AUD_Channel* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek)
|
||||||
{
|
{
|
||||||
assert(device);
|
assert(device);
|
||||||
assert(sound);
|
assert(sound);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AUD_Handle* handle = device->play(sound);
|
AUD_Channel* handle = device->play(sound);
|
||||||
device->seek(handle, seek);
|
device->seek(handle, seek);
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
@@ -580,7 +637,7 @@ int AUD_setDeviceVolume(AUD_Device* device, float volume)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AUD_setDeviceSoundVolume(AUD_Device* device, AUD_Handle* handle,
|
int AUD_setDeviceSoundVolume(AUD_Device* device, AUD_Channel* handle,
|
||||||
float volume)
|
float volume)
|
||||||
{
|
{
|
||||||
if(handle)
|
if(handle)
|
||||||
@@ -789,7 +846,7 @@ void AUD_stopPlayback()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void AUD_seekSequencer(AUD_Handle* handle, float time)
|
void AUD_seekSequencer(AUD_Channel* handle, float time)
|
||||||
{
|
{
|
||||||
#ifdef WITH_JACK
|
#ifdef WITH_JACK
|
||||||
AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
|
AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
|
||||||
@@ -802,7 +859,7 @@ void AUD_seekSequencer(AUD_Handle* handle, float time)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float AUD_getSequencerPosition(AUD_Handle* handle)
|
float AUD_getSequencerPosition(AUD_Channel* handle)
|
||||||
{
|
{
|
||||||
#ifdef WITH_JACK
|
#ifdef WITH_JACK
|
||||||
AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
|
AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
|
||||||
|
@@ -26,6 +26,10 @@
|
|||||||
#ifndef AUD_CAPI
|
#ifndef AUD_CAPI
|
||||||
#define AUD_CAPI
|
#define AUD_CAPI
|
||||||
|
|
||||||
|
#ifdef WITH_PYTHON
|
||||||
|
#include "Python.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@@ -48,7 +52,7 @@ typedef struct
|
|||||||
|
|
||||||
#ifndef AUD_CAPI_IMPLEMENTATION
|
#ifndef AUD_CAPI_IMPLEMENTATION
|
||||||
typedef void AUD_Sound;
|
typedef void AUD_Sound;
|
||||||
typedef void AUD_Handle;
|
typedef void AUD_Channel;
|
||||||
typedef void AUD_Device;
|
typedef void AUD_Device;
|
||||||
typedef void AUD_SequencerEntry;
|
typedef void AUD_SequencerEntry;
|
||||||
typedef float (*AUD_volumeFunction)(void*, void*, float);
|
typedef float (*AUD_volumeFunction)(void*, void*, float);
|
||||||
@@ -80,6 +84,13 @@ extern int* AUD_enumDevices();
|
|||||||
*/
|
*/
|
||||||
extern void AUD_exit();
|
extern void AUD_exit();
|
||||||
|
|
||||||
|
#ifdef WITH_PYTHON
|
||||||
|
/**
|
||||||
|
* Initalizes the Python module.
|
||||||
|
*/
|
||||||
|
extern PyObject* AUD_initPython();
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Locks the playback device.
|
* Locks the playback device.
|
||||||
*/
|
*/
|
||||||
@@ -157,7 +168,7 @@ extern AUD_Sound* AUD_loopSound(AUD_Sound* sound);
|
|||||||
* \param time The time after which playback should stop, -1 for infinity.
|
* \param time The time after which playback should stop, -1 for infinity.
|
||||||
* \return Whether the handle is valid.
|
* \return Whether the handle is valid.
|
||||||
*/
|
*/
|
||||||
extern int AUD_setLoop(AUD_Handle* handle, int loops, float time);
|
extern int AUD_setLoop(AUD_Channel* handle, int loops, float time);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rectifies a sound.
|
* Rectifies a sound.
|
||||||
@@ -179,28 +190,28 @@ extern void AUD_unload(AUD_Sound* sound);
|
|||||||
* paused when its end has been reached.
|
* paused when its end has been reached.
|
||||||
* \return A handle to the played back sound.
|
* \return A handle to the played back sound.
|
||||||
*/
|
*/
|
||||||
extern AUD_Handle* AUD_play(AUD_Sound* sound, int keep);
|
extern AUD_Channel* AUD_play(AUD_Sound* sound, int keep);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pauses a played back sound.
|
* Pauses a played back sound.
|
||||||
* \param handle The handle to the sound.
|
* \param handle The handle to the sound.
|
||||||
* \return Whether the handle has been playing or not.
|
* \return Whether the handle has been playing or not.
|
||||||
*/
|
*/
|
||||||
extern int AUD_pause(AUD_Handle* handle);
|
extern int AUD_pause(AUD_Channel* handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resumes a paused sound.
|
* Resumes a paused sound.
|
||||||
* \param handle The handle to the sound.
|
* \param handle The handle to the sound.
|
||||||
* \return Whether the handle has been paused or not.
|
* \return Whether the handle has been paused or not.
|
||||||
*/
|
*/
|
||||||
extern int AUD_resume(AUD_Handle* handle);
|
extern int AUD_resume(AUD_Channel* handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops a playing or paused sound.
|
* Stops a playing or paused sound.
|
||||||
* \param handle The handle to the sound.
|
* \param handle The handle to the sound.
|
||||||
* \return Whether the handle has been valid or not.
|
* \return Whether the handle has been valid or not.
|
||||||
*/
|
*/
|
||||||
extern int AUD_stop(AUD_Handle* handle);
|
extern int AUD_stop(AUD_Channel* handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the end behaviour of a playing or paused sound.
|
* Sets the end behaviour of a playing or paused sound.
|
||||||
@@ -209,7 +220,7 @@ extern int AUD_stop(AUD_Handle* handle);
|
|||||||
* paused when its end has been reached.
|
* paused when its end has been reached.
|
||||||
* \return Whether the handle has been valid or not.
|
* \return Whether the handle has been valid or not.
|
||||||
*/
|
*/
|
||||||
extern int AUD_setKeep(AUD_Handle* handle, int keep);
|
extern int AUD_setKeep(AUD_Channel* handle, int keep);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Seeks a playing or paused sound.
|
* Seeks a playing or paused sound.
|
||||||
@@ -217,7 +228,7 @@ extern int AUD_setKeep(AUD_Handle* handle, int keep);
|
|||||||
* \param seekTo From where the sound file should be played back in seconds.
|
* \param seekTo From where the sound file should be played back in seconds.
|
||||||
* \return Whether the handle has been valid or not.
|
* \return Whether the handle has been valid or not.
|
||||||
*/
|
*/
|
||||||
extern int AUD_seek(AUD_Handle* handle, float seekTo);
|
extern int AUD_seek(AUD_Channel* handle, float seekTo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the playback position of a handle.
|
* Retrieves the playback position of a handle.
|
||||||
@@ -225,14 +236,14 @@ extern int AUD_seek(AUD_Handle* handle, float seekTo);
|
|||||||
* \return The current playback position in seconds or 0.0 if the handle is
|
* \return The current playback position in seconds or 0.0 if the handle is
|
||||||
* invalid.
|
* invalid.
|
||||||
*/
|
*/
|
||||||
extern float AUD_getPosition(AUD_Handle* handle);
|
extern float AUD_getPosition(AUD_Channel* handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status of a playing, paused or stopped sound.
|
* Returns the status of a playing, paused or stopped sound.
|
||||||
* \param handle The handle to the sound.
|
* \param handle The handle to the sound.
|
||||||
* \return The status of the sound behind the handle.
|
* \return The status of the sound behind the handle.
|
||||||
*/
|
*/
|
||||||
extern AUD_Status AUD_getStatus(AUD_Handle* handle);
|
extern AUD_Status AUD_getStatus(AUD_Channel* handle);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plays a 3D sound.
|
* Plays a 3D sound.
|
||||||
@@ -243,7 +254,7 @@ extern AUD_Status AUD_getStatus(AUD_Handle* handle);
|
|||||||
* \note The factory must provide a mono (single channel) source and the device
|
* \note The factory must provide a mono (single channel) source and the device
|
||||||
* must support 3D audio, otherwise the sound is played back normally.
|
* must support 3D audio, otherwise the sound is played back normally.
|
||||||
*/
|
*/
|
||||||
extern AUD_Handle* AUD_play3D(AUD_Sound* sound, int keep);
|
extern AUD_Channel* AUD_play3D(AUD_Sound* sound, int keep);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the listener 3D data.
|
* Updates the listener 3D data.
|
||||||
@@ -273,7 +284,7 @@ extern float AUD_get3DSetting(AUD_3DSetting setting);
|
|||||||
* \param data The 3D data.
|
* \param data The 3D data.
|
||||||
* \return Whether the action succeeded.
|
* \return Whether the action succeeded.
|
||||||
*/
|
*/
|
||||||
extern int AUD_update3DSource(AUD_Handle* handle, AUD_3DData* data);
|
extern int AUD_update3DSource(AUD_Channel* handle, AUD_3DData* data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets a 3D source setting.
|
* Sets a 3D source setting.
|
||||||
@@ -282,7 +293,7 @@ extern int AUD_update3DSource(AUD_Handle* handle, AUD_3DData* data);
|
|||||||
* \param value The new setting value.
|
* \param value The new setting value.
|
||||||
* \return Whether the action succeeded.
|
* \return Whether the action succeeded.
|
||||||
*/
|
*/
|
||||||
extern int AUD_set3DSourceSetting(AUD_Handle* handle,
|
extern int AUD_set3DSourceSetting(AUD_Channel* handle,
|
||||||
AUD_3DSourceSetting setting, float value);
|
AUD_3DSourceSetting setting, float value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -291,7 +302,7 @@ extern int AUD_set3DSourceSetting(AUD_Handle* handle,
|
|||||||
* \param setting The setting type.
|
* \param setting The setting type.
|
||||||
* \return The setting value.
|
* \return The setting value.
|
||||||
*/
|
*/
|
||||||
extern float AUD_get3DSourceSetting(AUD_Handle* handle,
|
extern float AUD_get3DSourceSetting(AUD_Channel* handle,
|
||||||
AUD_3DSourceSetting setting);
|
AUD_3DSourceSetting setting);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -300,7 +311,7 @@ extern float AUD_get3DSourceSetting(AUD_Handle* handle,
|
|||||||
* \param volume The new volume, must be between 0.0 and 1.0.
|
* \param volume The new volume, must be between 0.0 and 1.0.
|
||||||
* \return Whether the action succeeded.
|
* \return Whether the action succeeded.
|
||||||
*/
|
*/
|
||||||
extern int AUD_setSoundVolume(AUD_Handle* handle, float volume);
|
extern int AUD_setSoundVolume(AUD_Channel* handle, float volume);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the pitch of a played back sound.
|
* Sets the pitch of a played back sound.
|
||||||
@@ -308,7 +319,7 @@ extern int AUD_setSoundVolume(AUD_Handle* handle, float volume);
|
|||||||
* \param pitch The new pitch.
|
* \param pitch The new pitch.
|
||||||
* \return Whether the action succeeded.
|
* \return Whether the action succeeded.
|
||||||
*/
|
*/
|
||||||
extern int AUD_setSoundPitch(AUD_Handle* handle, float pitch);
|
extern int AUD_setSoundPitch(AUD_Channel* handle, float pitch);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens a read device, with which audio data can be read.
|
* Opens a read device, with which audio data can be read.
|
||||||
@@ -332,7 +343,7 @@ extern int AUD_setDeviceVolume(AUD_Device* device, float volume);
|
|||||||
* \param seek The position where the sound should be seeked to.
|
* \param seek The position where the sound should be seeked to.
|
||||||
* \return A handle to the played back sound.
|
* \return A handle to the played back sound.
|
||||||
*/
|
*/
|
||||||
extern AUD_Handle* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek);
|
extern AUD_Channel* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the volume of a played back sound of a read device.
|
* Sets the volume of a played back sound of a read device.
|
||||||
@@ -342,7 +353,7 @@ extern AUD_Handle* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float se
|
|||||||
* \return Whether the action succeeded.
|
* \return Whether the action succeeded.
|
||||||
*/
|
*/
|
||||||
extern int AUD_setDeviceSoundVolume(AUD_Device* device,
|
extern int AUD_setDeviceSoundVolume(AUD_Device* device,
|
||||||
AUD_Handle* handle,
|
AUD_Channel* handle,
|
||||||
float volume);
|
float volume);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -393,9 +404,9 @@ extern void AUD_startPlayback();
|
|||||||
|
|
||||||
extern void AUD_stopPlayback();
|
extern void AUD_stopPlayback();
|
||||||
|
|
||||||
extern void AUD_seekSequencer(AUD_Handle* handle, float time);
|
extern void AUD_seekSequencer(AUD_Channel* handle, float time);
|
||||||
|
|
||||||
extern float AUD_getSequencerPosition(AUD_Handle* handle);
|
extern float AUD_getSequencerPosition(AUD_Channel* handle);
|
||||||
|
|
||||||
#ifdef WITH_JACK
|
#ifdef WITH_JACK
|
||||||
extern void AUD_setSyncCallback(AUD_syncFunction function, void* data);
|
extern void AUD_setSyncCallback(AUD_syncFunction function, void* data);
|
||||||
|
@@ -36,6 +36,7 @@ SET(INC
|
|||||||
../windowmanager
|
../windowmanager
|
||||||
../editors/include
|
../editors/include
|
||||||
../../../intern/guardedalloc
|
../../../intern/guardedalloc
|
||||||
|
../../../intern/audaspace/intern
|
||||||
${PYTHON_INC}
|
${PYTHON_INC}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ sources = env.Glob('intern/*.c')
|
|||||||
incs = '. ../editors/include ../makesdna ../makesrna ../blenlib ../blenkernel ../nodes'
|
incs = '. ../editors/include ../makesdna ../makesrna ../blenlib ../blenkernel ../nodes'
|
||||||
incs += ' ../imbuf ../blenloader ../render/extern/include ../windowmanager'
|
incs += ' ../imbuf ../blenloader ../render/extern/include ../windowmanager'
|
||||||
incs += ' #intern/guardedalloc #intern/memutil #extern/glew/include'
|
incs += ' #intern/guardedalloc #intern/memutil #extern/glew/include'
|
||||||
incs += ' ' + env['BF_PYTHON_INC']
|
incs += ' #intern/audaspace/intern ' + env['BF_PYTHON_INC']
|
||||||
|
|
||||||
defs = []
|
defs = []
|
||||||
|
|
||||||
|
@@ -41,6 +41,11 @@
|
|||||||
#include "../generic/blf_api.h"
|
#include "../generic/blf_api.h"
|
||||||
#include "../generic/IDProp.h"
|
#include "../generic/IDProp.h"
|
||||||
|
|
||||||
|
#ifndef DISABLE_PYTHON
|
||||||
|
#define WITH_PYTHON
|
||||||
|
#endif
|
||||||
|
#include "AUD_C-API.h"
|
||||||
|
|
||||||
static char bpy_home_paths_doc[] =
|
static char bpy_home_paths_doc[] =
|
||||||
".. function:: home_paths(subfolder)\n"
|
".. function:: home_paths(subfolder)\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -162,7 +167,7 @@ void BPy_init_modules( void )
|
|||||||
BGL_Init();
|
BGL_Init();
|
||||||
BLF_Init();
|
BLF_Init();
|
||||||
IDProp_Init_Types();
|
IDProp_Init_Types();
|
||||||
|
AUD_initPython();
|
||||||
|
|
||||||
mod = PyModule_New("_bpy");
|
mod = PyModule_New("_bpy");
|
||||||
|
|
||||||
|
@@ -45,6 +45,10 @@ extern "C" {
|
|||||||
|
|
||||||
#include "marshal.h" /* python header for loading/saving dicts */
|
#include "marshal.h" /* python header for loading/saving dicts */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define WITH_PYTHON
|
||||||
|
#include "AUD_C-API.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "KX_PythonInit.h"
|
#include "KX_PythonInit.h"
|
||||||
@@ -1989,6 +1993,7 @@ void setupGamePython(KX_KetsjiEngine* ketsjiengine, KX_Scene* startscene, Main *
|
|||||||
initGeometry();
|
initGeometry();
|
||||||
initBGL();
|
initBGL();
|
||||||
initBLF();
|
initBLF();
|
||||||
|
AUD_initPython();
|
||||||
|
|
||||||
#ifdef WITH_FFMPEG
|
#ifdef WITH_FFMPEG
|
||||||
initVideoTexture();
|
initVideoTexture();
|
||||||
|
@@ -58,7 +58,7 @@ class KX_SoundActuator : public SCA_IActuator
|
|||||||
float m_pitch;
|
float m_pitch;
|
||||||
bool m_is3d;
|
bool m_is3d;
|
||||||
KX_3DSoundSettings m_3d;
|
KX_3DSoundSettings m_3d;
|
||||||
AUD_Handle* m_handle;
|
AUD_Channel* m_handle;
|
||||||
|
|
||||||
void play();
|
void play();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user