diff options
author | Germano <germano.costa@ig.com.br> | 2018-02-01 03:11:01 +0300 |
---|---|---|
committer | Germano <germano.costa@ig.com.br> | 2018-02-01 03:11:01 +0300 |
commit | ea31f0ac3b877eb0df4c47d0c908d11d1bff33e4 (patch) | |
tree | 56e88cf2b29c33be2855d02dba41c50bceb0e685 /extern/audaspace/bindings/C/AUD_Device.h | |
parent | 22faf66c8b7ebb79405b87a74edfdc78a7f26fb0 (diff) |
tmp
Diffstat (limited to 'extern/audaspace/bindings/C/AUD_Device.h')
-rw-r--r-- | extern/audaspace/bindings/C/AUD_Device.h | 258 |
1 files changed, 258 insertions, 0 deletions
diff --git a/extern/audaspace/bindings/C/AUD_Device.h b/extern/audaspace/bindings/C/AUD_Device.h new file mode 100644 index 00000000000..0dfa21f0660 --- /dev/null +++ b/extern/audaspace/bindings/C/AUD_Device.h @@ -0,0 +1,258 @@ +/******************************************************************************* + * Copyright 2009-2016 Jörg Müller + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +#pragma once + +#include "AUD_Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/// Possible distance models for the 3D device. +typedef enum +{ + AUD_DISTANCE_MODEL_INVALID = 0, + AUD_DISTANCE_MODEL_INVERSE, + AUD_DISTANCE_MODEL_INVERSE_CLAMPED, + AUD_DISTANCE_MODEL_LINEAR, + AUD_DISTANCE_MODEL_LINEAR_CLAMPED, + AUD_DISTANCE_MODEL_EXPONENT, + AUD_DISTANCE_MODEL_EXPONENT_CLAMPED +} AUD_DistanceModel; + +typedef void (*AUD_syncFunction)(void*, int, float); + +/** + * Opens a new sound device. + * \param type The name of the device. + * Can be NULL to open the default device with default settings or return the handle to the already opened one. + * Can be "" to open the a default factory device with given settings. + * Can be "read" to open a readable device. + * \param specs Specification of the device parameters. + * \param buffersize Size of the mixing buffer. + * \param name Custom name of the device. + * \return A handle to the opened device or NULL on failure. + */ +extern AUD_API AUD_Device* AUD_Device_open(const char* type, AUD_DeviceSpecs specs, int buffersize, const char* name); + +/** + * Locks the playback device. + */ +extern AUD_API void AUD_Device_lock(AUD_Device* device); + +/** + * Plays back a sound file. + * \param sound The handle of the sound file. + * \param keep When keep is true the sound source will not be deleted but set to + * paused when its end has been reached. + * \return A handle to the played back sound. + */ +extern AUD_API AUD_Handle* AUD_Device_play(AUD_Device* device, AUD_Sound* sound, int keep); + +/** + * Stops all sounds playing. + */ +extern AUD_API void AUD_Device_stopAll(AUD_Device* device); + +/** + * Unlocks the device. + */ +extern AUD_API void AUD_Device_unlock(AUD_Device* device); + +/** + * Retrieves the channels of a device. + * param device The device to get the channels from. + * return The channels of the device. + */ +extern AUD_API AUD_Channels AUD_Device_getChannels(AUD_Device* device); + +/** + * Retrieves the distance model of a device. + * param device The device to get the distance model from. + * return The distance model of the device. + */ +extern AUD_API AUD_DistanceModel AUD_Device_getDistanceModel(AUD_Device* device); + +/** + * Sets the distance model of a device. + * param device The device to set the distance model from. + * param value The new distance model to set. + */ +extern AUD_API void AUD_Device_setDistanceModel(AUD_Device* device, AUD_DistanceModel value); + +/** + * Retrieves the doppler factor of a device. + * param device The device to get the doppler factor from. + * return The doppler factor of the device. + */ +extern AUD_API float AUD_Device_getDopplerFactor(AUD_Device* device); + +/** + * Sets the doppler factor of a device. + * param device The device to set the doppler factor from. + * param value The new doppler factor to set. + */ +extern AUD_API void AUD_Device_setDopplerFactor(AUD_Device* device, float value); + +/** + * Retrieves the format of a device. + * param device The device to get the format from. + * return The format of the device. + */ +extern AUD_API AUD_SampleFormat AUD_Device_getFormat(AUD_Device* device); + +/** + * Retrieves the listener location of a device. + * param device The device to get the listener location from. + * return The listener location of the device. + */ +extern AUD_API void AUD_Device_getListenerLocation(AUD_Device* device, float value[3]); + +/** + * Sets the listener location of a device. + * param device The device to set the listener location from. + * param value The new listener location to set. + */ +extern AUD_API void AUD_Device_setListenerLocation(AUD_Device* device, const float value[3]); + +/** + * Retrieves the listener orientation of a device. + * param device The device to get the listener orientation from. + * return The listener orientation of the device. + */ +extern AUD_API void AUD_Device_getListenerOrientation(AUD_Device* device, float value[4]); + +/** + * Sets the listener orientation of a device. + * param device The device to set the listener orientation from. + * param value The new listener orientation to set. + */ +extern AUD_API void AUD_Device_setListenerOrientation(AUD_Device* device, const float value[4]); + +/** + * Retrieves the listener velocity of a device. + * param device The device to get the listener velocity from. + * return The listener velocity of the device. + */ +extern AUD_API void AUD_Device_getListenerVelocity(AUD_Device* device, float value[3]); + +/** + * Sets the listener velocity of a device. + * param device The device to set the listener velocity from. + * param value The new listener velocity to set. + */ +extern AUD_API void AUD_Device_setListenerVelocity(AUD_Device* device, const float value[3]); + +/** + * Retrieves the rate of a device. + * param device The device to get the rate from. + * return The rate of the device. + */ +extern AUD_API double AUD_Device_getRate(AUD_Device* device); + +/** + * Retrieves the speed of sound of a device. + * param device The device to get the speed of sound from. + * return The speed of sound of the device. + */ +extern AUD_API float AUD_Device_getSpeedOfSound(AUD_Device* device); + +/** + * Sets the speed of sound of a device. + * param device The device to set the speed of sound from. + * param value The new speed of sound to set. + */ +extern AUD_API void AUD_Device_setSpeedOfSound(AUD_Device* device, float value); + +/** + * Retrieves the volume of a device. + * param device The device to get the volume from. + * return The volume of the device. + */ +extern AUD_API float AUD_Device_getVolume(AUD_Device* device); + +/** + * Sets the volume of a device. + * param device The device to set the volume from. + * param value The new volume to set. + */ +extern AUD_API void AUD_Device_setVolume(AUD_Device* device, float value); + +/** + * Reads the next samples into the supplied buffer. + * \param device The readable device. + * \param buffer The target buffer. + * \param length The length in samples to be filled. + * \return True if the reading succeeded, false if there are no sounds + * played back currently, in that case the buffer is filled with + * silence. + */ +extern AUD_API int AUD_Device_read(AUD_Device* device, unsigned char* buffer, int length); + +/** + * Closes a device. Handle becomes invalid afterwards. + * \param device The device to close. + */ +extern AUD_API void AUD_Device_free(AUD_Device* device); + +/** + * Retrieves the current device of the DeviceManager. + * \return A pointer to the current device, which needs to be freed with + * AUD_Device_free. + */ +extern AUD_API AUD_Device* AUD_Device_getCurrent(); + +/** + * Seeks sequenced sound scene playback. + * \param handle Playback handle. + * \param time Time in seconds to seek to. + */ +extern AUD_API void AUD_seekSynchronizer(AUD_Handle* handle, float time); + +/** + * Returns the current sound scene playback time. + * \param handle Playback handle. + * \return The playback time in seconds. + */ +extern AUD_API float AUD_getSynchronizerPosition(AUD_Handle* handle); + +/** + * Starts the playback of jack transport if possible. + */ +extern AUD_API void AUD_playSynchronizer(); + +/** + * Stops the playback of jack transport if possible. + */ +extern AUD_API void AUD_stopSynchronizer(); + +/** + * Sets the sync callback for jack transport. + * \param function The callback function. + * \param data The data parameter for the callback. + */ +extern AUD_API void AUD_setSynchronizerCallback(AUD_syncFunction function, void* data); + +/** + * Returns whether jack transport is currently playing. + * \return Whether jack transport is currently playing. + */ +extern AUD_API int AUD_isSynchronizerPlaying(); + +#ifdef __cplusplus +} +#endif |