Changeset View
Changeset View
Standalone View
Standalone View
extern/audaspace/bindings/C/AUD_Device.h
- This file was added.
| /******************************************************************************* | |||||
| * 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 | |||||