void AUD_stopPlayback() { #ifdef WITH_JACK AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device.get()); if(device) device->stopPlayback(); #endif }
int AUD_doesPlayback() { #ifdef WITH_JACK AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device.get()); if(device) return device->doesPlayback(); #endif return -1; }
int AUD_init(AUD_DeviceType device, AUD_DeviceSpecs specs, int buffersize) { AUD_Reference<AUD_IDevice> dev; if(!AUD_device.isNull()) AUD_exit(); try { switch(device) { case AUD_NULL_DEVICE: dev = new AUD_NULLDevice(); break; #ifdef WITH_SDL case AUD_SDL_DEVICE: dev = new AUD_SDLDevice(specs, buffersize); break; #endif #ifdef WITH_OPENAL case AUD_OPENAL_DEVICE: dev = new AUD_OpenALDevice(specs, buffersize); break; #endif #ifdef WITH_JACK case AUD_JACK_DEVICE: #ifdef __APPLE__ struct stat st; if(stat("/Library/Frameworks/Jackmp.framework", &st) != 0) { printf("Warning: Jack Framework not installed\n"); // No break, fall through to default, to return false } else { #endif dev = new AUD_JackDevice("Blender", specs, buffersize); break; #ifdef __APPLE__ } #endif #endif default: return false; } AUD_device = dev; AUD_3ddevice = dynamic_cast<AUD_I3DDevice*>(AUD_device.get()); return true; } catch(AUD_Exception&) { return false; } }
float AUD_getSequencerPosition(AUD_Handle* handle) { #ifdef WITH_JACK AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device.get()); if(device) return device->getPlaybackPosition(); else #endif { assert(handle); return (*handle)->getPosition(); } }
void AUD_seekSequencer(AUD_Handle* handle, float time) { #ifdef WITH_JACK AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device.get()); if(device) device->seekPlayback(time); else #endif { assert(handle); (*handle)->seek(time); } }
int AUD_init(AUD_DeviceType device, AUD_DeviceSpecs specs, int buffersize) { AUD_Reference<AUD_IDevice> dev; if(!AUD_device.isNull()) AUD_exit(); try { switch(device) { case AUD_NULL_DEVICE: dev = new AUD_NULLDevice(); break; #ifdef WITH_SDL case AUD_SDL_DEVICE: dev = new AUD_SDLDevice(specs, buffersize); break; #endif #ifdef WITH_OPENAL case AUD_OPENAL_DEVICE: dev = new AUD_OpenALDevice(specs, buffersize); break; #endif #ifdef WITH_JACK case AUD_JACK_DEVICE: dev = new AUD_JackDevice("Blender", specs, buffersize); break; #endif default: return false; } AUD_device = dev; AUD_3ddevice = dynamic_cast<AUD_I3DDevice*>(AUD_device.get()); return true; } catch(AUD_Exception&) { return false; } }
void AUD_setSyncCallback(AUD_syncFunction function, void* data) { AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device.get()); if(device) device->setSyncCallback(function, data); }