Package com.jogamp.openal.util
Class ALAudioSink
- java.lang.Object
-
- com.jogamp.openal.util.ALAudioSink
-
- All Implemented Interfaces:
AudioSink
public class ALAudioSink extends Object implements AudioSink
OpenALAudioSink
implementation.Besides given
AudioSink
functionality, implementation is fully functional regardingAudioFormat
and all OpenAL parameter.
- All OpenAL parameter can be queried
- Instance can be constructed with an OpenAL device and context, see
#ALAudioSink(ALCdevice, ALCcontext)
- Initialization can be performed with OpenAL paramters, see
#init(int, int, int, int, int, float, int, int, int)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.jogamp.common.av.AudioSink
AudioSink.AudioDataFrame, AudioSink.AudioFrame
-
-
Field Summary
-
Fields inherited from interface com.jogamp.common.av.AudioSink
DEBUG, DefaultFormat, DefaultFrameDuration, DefaultInitialQueueSize, DefaultQueueGrowAmount, DefaultQueueLimitAudioOnly, DefaultQueueLimitWithVideo
-
-
Constructor Summary
Constructors Constructor Description ALAudioSink()
Create a new instance with a new defaultALCdevice
ALAudioSink(ALCdevice alDevice)
Create a new instance with an optional givenALCdevice
ALAudioSink(String deviceName)
Create a new instance with a new namedALCdevice
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
destroy()
AudioSink.AudioFrame
enqueueData(int pts, ByteBuffer bytes, int byteCount)
void
flush()
static AL
getAL()
Return OpenAL globalAL
.static ALC
getALC()
Return OpenAL globalALC
.int
getALChannelLayout()
Return this instance's OpenAL channel layout, set after#init(AudioFormat, float, int, int, int)
.ALCcontext
getALContext()
Return this instance's OpenALALCcontext
.static ALExt
getALExt()
Return OpenAL globalALExt
.int
getALFormat()
Return this instance's OpenAL format, set after#init(AudioFormat, float, int, int, int)
.int
getALSampleType()
Return this instance's OpenAL sample type, set after#init(AudioFormat, float, int, int, int)
.int
getALSource()
Return this instance's OpenAL source ID.AudioFormat
getChosenFormat()
float
getDefaultLatency()
ALCdevice
getDevice()
Return this instance's OpenALALCdevice
.String
getDeviceSpec()
Return this instance's OpenALALCdevice
specifier.int
getEnqueuedFrameCount()
int
getFrameCount()
int
getFreeFrameCount()
float
getLatency()
int
getMaxSupportedChannels()
String
getPerfString()
float
getPlaySpeed()
AudioFormat
getPreferredFormat()
int
getPreferredSampleRate()
int
getPTS()
int
getQueuedByteCount()
int
getQueuedFrameCount()
int
getQueuedTime()
int
getSourceCount()
float
getVolume()
boolean
hasALCThreadLocalContext()
Return whether OpenAL extensionALC_EXT_thread_local_context
is available.boolean
hasEXTDouble()
Return whether OpenAL extensionAL_EXT_DOUBLE
is available.boolean
hasEXTFloat32()
Return whether OpenAL extensionAL_EXT_FLOAT32
is available.boolean
hasEXTMcFormats()
Return whether OpenAL extensionAL_EXT_MCFORMATS
is available.boolean
hasSOFTBufferSamples()
Return whether OpenAL extensionAL_SOFT_buffer_samples
is available.boolean
init(int alChannelLayout, int alSampleType, int alFormat, int sampleRate, int sampleSize, int frameDuration, int initialQueueSize, int queueGrowAmount, int queueLimit)
Initializes the sink using the given OpenAL audio parameter and streaming details.boolean
init(AudioFormat requestedFormat, int frameDuration, int initialQueueSize, int queueGrowAmount, int queueLimit)
boolean
isAvailable()
static boolean
isInitialized()
boolean
isPlaying()
boolean
isSupported(AudioFormat format)
void
lockExclusive()
void
pause()
void
play()
boolean
setPlaySpeed(float rate)
boolean
setVolume(float v)
String
toString()
void
unlockExclusive()
-
-
-
Constructor Detail
-
ALAudioSink
public ALAudioSink() throws RuntimeException
Create a new instance with a new defaultALCdevice
- Throws:
RuntimeException
- if the defaultALCdevice
couldn't be fully created including its context.
-
ALAudioSink
public ALAudioSink(String deviceName) throws RuntimeException
Create a new instance with a new namedALCdevice
- Parameters:
deviceName
- name of- Throws:
RuntimeException
- if the defaultALCdevice
couldn't be fully created including its context.
-
ALAudioSink
public ALAudioSink(ALCdevice alDevice) throws RuntimeException
Create a new instance with an optional givenALCdevice
- Parameters:
alDevice
- optional OpenAL device, a default device is opened if null.- Throws:
RuntimeException
- if the defaultALCdevice
couldn't be fully created including its context.
-
-
Method Detail
-
isInitialized
public static boolean isInitialized()
-
getDeviceSpec
public final String getDeviceSpec()
Return this instance's OpenALALCdevice
specifier.
-
getALContext
public final ALCcontext getALContext()
Return this instance's OpenALALCcontext
.
-
getALSource
public final int getALSource()
Return this instance's OpenAL source ID.
-
hasSOFTBufferSamples
public final boolean hasSOFTBufferSamples()
Return whether OpenAL extensionAL_SOFT_buffer_samples
is available.
-
hasEXTMcFormats
public final boolean hasEXTMcFormats()
Return whether OpenAL extensionAL_EXT_MCFORMATS
is available.
-
hasEXTFloat32
public final boolean hasEXTFloat32()
Return whether OpenAL extensionAL_EXT_FLOAT32
is available.
-
hasEXTDouble
public final boolean hasEXTDouble()
Return whether OpenAL extensionAL_EXT_DOUBLE
is available.
-
hasALCThreadLocalContext
public final boolean hasALCThreadLocalContext()
Return whether OpenAL extensionALC_EXT_thread_local_context
is available.
-
getALChannelLayout
public final int getALChannelLayout()
Return this instance's OpenAL channel layout, set after#init(AudioFormat, float, int, int, int)
.
-
getALSampleType
public final int getALSampleType()
Return this instance's OpenAL sample type, set after#init(AudioFormat, float, int, int, int)
.
-
getALFormat
public final int getALFormat()
Return this instance's OpenAL format, set after#init(AudioFormat, float, int, int, int)
.
-
lockExclusive
public final void lockExclusive()
- Specified by:
lockExclusive
in interfaceAudioSink
-
unlockExclusive
public final void unlockExclusive()
- Specified by:
unlockExclusive
in interfaceAudioSink
-
getPerfString
public final String getPerfString()
-
getPreferredSampleRate
public int getPreferredSampleRate()
- Specified by:
getPreferredSampleRate
in interfaceAudioSink
-
getSourceCount
public int getSourceCount()
- Specified by:
getSourceCount
in interfaceAudioSink
-
getDefaultLatency
public float getDefaultLatency()
- Specified by:
getDefaultLatency
in interfaceAudioSink
-
getLatency
public float getLatency()
- Specified by:
getLatency
in interfaceAudioSink
-
getPreferredFormat
public final AudioFormat getPreferredFormat()
- Specified by:
getPreferredFormat
in interfaceAudioSink
-
getMaxSupportedChannels
public final int getMaxSupportedChannels()
- Specified by:
getMaxSupportedChannels
in interfaceAudioSink
-
isSupported
public final boolean isSupported(AudioFormat format)
- Specified by:
isSupported
in interfaceAudioSink
-
init
public final boolean init(AudioFormat requestedFormat, int frameDuration, int initialQueueSize, int queueGrowAmount, int queueLimit)
-
init
public final boolean init(int alChannelLayout, int alSampleType, int alFormat, int sampleRate, int sampleSize, int frameDuration, int initialQueueSize, int queueGrowAmount, int queueLimit)
Initializes the sink using the given OpenAL audio parameter and streaming details.- Parameters:
alChannelLayout
- OpenAL channel layoutalSampleType
- OpenAL sample typealFormat
- OpenAL formatsampleRate
- sample rate, e.g. 44100sampleSize
- sample size in bits, e.g. 16frameDuration
- average or fixed frame duration in milliseconds helping a cachingAudioSink.AudioFrame
based implementation to determine the frame count in the queue. SeeAudioSink.DefaultFrameDuration
.initialQueueSize
- initial time in milliseconds to queue in this sink, seeAudioSink.DefaultInitialQueueSize
.queueGrowAmount
- time in milliseconds to grow queue if full, seeAudioSink.DefaultQueueGrowAmount
.queueLimit
- maximum time in milliseconds the queue can hold (and grow), seeAudioSink.DefaultQueueLimitWithVideo
andAudioSink.DefaultQueueLimitAudioOnly
.- Returns:
- true if successful, otherwise false
- See Also:
ALHelpers.getAudioFormat(int, int, int, int, int)
,#init(AudioFormat, float, int, int, int)
-
getChosenFormat
public final AudioFormat getChosenFormat()
- Specified by:
getChosenFormat
in interfaceAudioSink
-
isAvailable
public final boolean isAvailable()
- Specified by:
isAvailable
in interfaceAudioSink
-
enqueueData
public final AudioSink.AudioFrame enqueueData(int pts, ByteBuffer bytes, int byteCount)
- Specified by:
enqueueData
in interfaceAudioSink
-
getPlaySpeed
public final float getPlaySpeed()
- Specified by:
getPlaySpeed
in interfaceAudioSink
-
setPlaySpeed
public final boolean setPlaySpeed(float rate)
- Specified by:
setPlaySpeed
in interfaceAudioSink
-
getEnqueuedFrameCount
public final int getEnqueuedFrameCount()
- Specified by:
getEnqueuedFrameCount
in interfaceAudioSink
-
getFrameCount
public final int getFrameCount()
- Specified by:
getFrameCount
in interfaceAudioSink
-
getQueuedFrameCount
public final int getQueuedFrameCount()
- Specified by:
getQueuedFrameCount
in interfaceAudioSink
-
getFreeFrameCount
public final int getFreeFrameCount()
- Specified by:
getFreeFrameCount
in interfaceAudioSink
-
getQueuedByteCount
public final int getQueuedByteCount()
- Specified by:
getQueuedByteCount
in interfaceAudioSink
-
getQueuedTime
public final int getQueuedTime()
- Specified by:
getQueuedTime
in interfaceAudioSink
-
-