Class SOFTSourceLatency
This extension provides a method for applications to more accurately measure the playback latency of sources. Unextended OpenAL allows apps to retrieve a source's playback offset in bytes, samples, or seconds, but this is (typically) where the AL is processing the audio data.
Often, more processing is done outside of the AL. Audio servers are common and they can introduce a bit of latency, increasing the time between when the AL is done with a piece of audio data until it gets heard by the user. If the OpenAL implementation uses its own mixer, that can also add to the latency. This can ultimately cause a not-insignificant delay between where the AL is processing and what is actually being heard.
Although this delay may not be very noticeable for general gaming, if the app is trying to keep a video or animation syncronized with the playback of an OpenAL source this extra delay can cause the audio and video to appear of out sync.
Luckily, most audio systems have a way of measuring the latency it takes for sound to actually get to the physical output device (the DAC or speakers). By providing this information through the AL, an application can more accurately tell what a user is hearing and thus synchronize better with the audio output.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
The playback position, expressed in fixed-point samples, along with the playback latency, expressed in nanoseconds (1/1000000000ths of a second).static final int
The playback position, along with the playback latency, both expressed in seconds. -
Method Summary
Modifier and TypeMethodDescriptionstatic void
alGetSource3dSOFT
(int source, int param, double[] value1, double[] value2, double[] value3) Array version of:GetSource3dSOFT
static void
alGetSource3dSOFT
(int source, int param, DoubleBuffer value1, DoubleBuffer value2, DoubleBuffer value3) Gets the 3 dimensional double values of a source parameter.static void
alGetSource3i64SOFT
(int source, int param, long[] value1, long[] value2, long[] value3) Array version of:GetSource3i64SOFT
static void
alGetSource3i64SOFT
(int source, int param, LongBuffer value1, LongBuffer value2, LongBuffer value3) Gets the 3 dimensional 64 bit integer values of a source parameter.static double
alGetSourcedSOFT
(int source, int param) Gets the double value of a source parameter.static void
alGetSourcedSOFT
(int source, int param, double[] value) Array version of:GetSourcedSOFT
static void
alGetSourcedSOFT
(int source, int param, DoubleBuffer value) Gets the double value of a source parameter.static void
alGetSourcedvSOFT
(int source, int param, double[] values) Array version of:GetSourcedvSOFT
static void
alGetSourcedvSOFT
(int source, int param, DoubleBuffer values) Array version ofGetSourcedSOFT
static long
alGetSourcei64SOFT
(int source, int param) Gets the 64 bit integer value of a source parameter.static void
alGetSourcei64SOFT
(int source, int param, long[] value) Array version of:GetSourcei64SOFT
static void
alGetSourcei64SOFT
(int source, int param, LongBuffer value) Gets the 64 bit integer value of a source parameter.static void
alGetSourcei64vSOFT
(int source, int param, long[] values) Array version of:GetSourcei64vSOFT
static void
alGetSourcei64vSOFT
(int source, int param, LongBuffer values) Array version ofGetSourcei64SOFT
static void
alSource3dSOFT
(int source, int param, double value1, double value2, double value3) Sets the 3 dimensional double values of a source parameter.static void
alSource3i64SOFT
(int source, int param, long value1, long value2, long value3) Sets the 3 dimensional 64 bit integer values of a source parameter.static void
alSourcedSOFT
(int source, int param, double value) Sets the double value of a source parameter.static void
alSourcedvSOFT
(int source, int param, double[] value) Array version of:SourcedvSOFT
static void
alSourcedvSOFT
(int source, int param, DoubleBuffer value) pointer version ofSourcedSOFT
static void
alSourcei64SOFT
(int source, int param, long value) Sets the 64 bit integer value of a source parameter.static void
alSourcei64vSOFT
(int source, int param, long[] values) Array version of:Sourcei64vSOFT
static void
alSourcei64vSOFT
(int source, int param, LongBuffer values) Array version ofSourcei64SOFT
static void
nalGetSource3dSOFT
(int source, int param, long value1, long value2, long value3) Unsafe version of:GetSource3dSOFT
static void
nalGetSource3i64SOFT
(int source, int param, long value1, long value2, long value3) Unsafe version of:GetSource3i64SOFT
static void
nalGetSourcedSOFT
(int source, int param, long value) Unsafe version of:GetSourcedSOFT
static void
nalGetSourcedvSOFT
(int source, int param, long values) Unsafe version of:GetSourcedvSOFT
static void
nalGetSourcei64SOFT
(int source, int param, long value) Unsafe version of:GetSourcei64SOFT
static void
nalGetSourcei64vSOFT
(int source, int param, long values) Unsafe version of:GetSourcei64vSOFT
static void
nalSourcedvSOFT
(int source, int param, long value) Unsafe version of:SourcedvSOFT
static void
nalSourcei64vSOFT
(int source, int param, long values) Unsafe version of:Sourcei64vSOFT
-
Field Details
-
AL_SAMPLE_OFFSET_LATENCY_SOFT
public static final int AL_SAMPLE_OFFSET_LATENCY_SOFTThe playback position, expressed in fixed-point samples, along with the playback latency, expressed in nanoseconds (1/1000000000ths of a second). This attribute is read-only.The first value in the returned vector is the sample offset, which is a 32.32 fixed-point value. The whole number is stored in the upper 32 bits and the fractional component is in the lower 32 bits. The value is similar to that returned by
SAMPLE_OFFSET
, just with more precision.The second value is the latency, in nanoseconds. It represents the length of time it will take for the audio at the current offset to actually reach the speakers or DAC. This value should be considered volatile, as it may change very often during playback (it can depend on a number of factors, including how full the mixing buffer OpenAL may be using is timer jitter, or other changes deeper in the audio pipeline).
The retrieved offset and latency should be considered atomic, with respect to one another. This means the returned latency was measured exactly when the source was at the returned offset.
- See Also:
-
AL_SEC_OFFSET_LATENCY_SOFT
public static final int AL_SEC_OFFSET_LATENCY_SOFTThe playback position, along with the playback latency, both expressed in seconds. This attribute is read-only.The first value in the returned vector is the offset in seconds. The value is similar to that returned by
SEC_OFFSET
, just with more precision.The second value is the latency, in seconds. It represents the length of time it will take for the audio at the current offset to actually reach the speakers or DAC. This value should be considered volatile, as it may change very often during playback (it can depend on a number of factors, including how full the mixing buffer OpenAL may be using is, timer jitter, or other changes deeper in the audio pipeline).
The retrieved offset and latency should be considered atomic with respect to one another. This means the returned latency was measured exactly when the source was at the returned offset.
- See Also:
-
-
Method Details
-
alSourcedSOFT
public static void alSourcedSOFT(int source, int param, double value) Sets the double value of a source parameter.- Parameters:
source
- the source to modifyparam
- the parameter to modifyvalue
- the parameter value
-
alSource3dSOFT
public static void alSource3dSOFT(int source, int param, double value1, double value2, double value3) Sets the 3 dimensional double values of a source parameter.- Parameters:
source
- the source to modifyparam
- the parameter to modifyvalue1
- the first valuevalue2
- the second valuevalue3
- the third value
-
nalSourcedvSOFT
public static void nalSourcedvSOFT(int source, int param, long value) Unsafe version of:SourcedvSOFT
-
alSourcedvSOFT
pointer version ofSourcedSOFT
- Parameters:
source
- the source to modifyparam
- the parameter to modifyvalue
- the parameter values
-
nalGetSourcedSOFT
public static void nalGetSourcedSOFT(int source, int param, long value) Unsafe version of:GetSourcedSOFT
-
alGetSourcedSOFT
Gets the double value of a source parameter.- Parameters:
source
- the source to queryparam
- the parameter to queryvalue
- the parameter values
-
alGetSourcedSOFT
public static double alGetSourcedSOFT(int source, int param) Gets the double value of a source parameter.- Parameters:
source
- the source to queryparam
- the parameter to query
-
nalGetSource3dSOFT
public static void nalGetSource3dSOFT(int source, int param, long value1, long value2, long value3) Unsafe version of:GetSource3dSOFT
-
alGetSource3dSOFT
public static void alGetSource3dSOFT(int source, int param, DoubleBuffer value1, DoubleBuffer value2, DoubleBuffer value3) Gets the 3 dimensional double values of a source parameter.- Parameters:
source
- the source to queryparam
- the parameter to queryvalue1
- the first valuevalue2
- the second valuevalue3
- the third value
-
nalGetSourcedvSOFT
public static void nalGetSourcedvSOFT(int source, int param, long values) Unsafe version of:GetSourcedvSOFT
-
alGetSourcedvSOFT
Array version ofGetSourcedSOFT
- Parameters:
source
- the source to queryparam
- the parameter to queryvalues
- the parameter values
-
alSourcei64SOFT
public static void alSourcei64SOFT(int source, int param, long value) Sets the 64 bit integer value of a source parameter.- Parameters:
source
- the source to modifyparam
- the parameter to modifyvalue
- the parameter values
-
alSource3i64SOFT
public static void alSource3i64SOFT(int source, int param, long value1, long value2, long value3) Sets the 3 dimensional 64 bit integer values of a source parameter.- Parameters:
source
- the source to modifyparam
- the parameter to modifyvalue1
- the first valuevalue2
- the second valuevalue3
- the third value
-
nalSourcei64vSOFT
public static void nalSourcei64vSOFT(int source, int param, long values) Unsafe version of:Sourcei64vSOFT
-
alSourcei64vSOFT
Array version ofSourcei64SOFT
- Parameters:
source
- the source to modifyparam
- the parameter to modifyvalues
- the parameter values
-
nalGetSourcei64SOFT
public static void nalGetSourcei64SOFT(int source, int param, long value) Unsafe version of:GetSourcei64SOFT
-
alGetSourcei64SOFT
Gets the 64 bit integer value of a source parameter.- Parameters:
source
- the source to queryparam
- the parameter to queryvalue
- the parameter values
-
alGetSourcei64SOFT
public static long alGetSourcei64SOFT(int source, int param) Gets the 64 bit integer value of a source parameter.- Parameters:
source
- the source to queryparam
- the parameter to query
-
nalGetSource3i64SOFT
public static void nalGetSource3i64SOFT(int source, int param, long value1, long value2, long value3) Unsafe version of:GetSource3i64SOFT
-
alGetSource3i64SOFT
public static void alGetSource3i64SOFT(int source, int param, LongBuffer value1, LongBuffer value2, LongBuffer value3) Gets the 3 dimensional 64 bit integer values of a source parameter.- Parameters:
source
- the source to queryparam
- the parameter to queryvalue1
- the first valuevalue2
- the second valuevalue3
- the third value
-
nalGetSourcei64vSOFT
public static void nalGetSourcei64vSOFT(int source, int param, long values) Unsafe version of:GetSourcei64vSOFT
-
alGetSourcei64vSOFT
Array version ofGetSourcei64SOFT
- Parameters:
source
- the source to queryparam
- the parameter to queryvalues
- the parameter values
-
alSourcedvSOFT
public static void alSourcedvSOFT(int source, int param, double[] value) Array version of:SourcedvSOFT
-
alGetSourcedSOFT
public static void alGetSourcedSOFT(int source, int param, double[] value) Array version of:GetSourcedSOFT
-
alGetSource3dSOFT
public static void alGetSource3dSOFT(int source, int param, double[] value1, double[] value2, double[] value3) Array version of:GetSource3dSOFT
-
alGetSourcedvSOFT
public static void alGetSourcedvSOFT(int source, int param, double[] values) Array version of:GetSourcedvSOFT
-
alSourcei64vSOFT
public static void alSourcei64vSOFT(int source, int param, long[] values) Array version of:Sourcei64vSOFT
-
alGetSourcei64SOFT
public static void alGetSourcei64SOFT(int source, int param, long[] value) Array version of:GetSourcei64SOFT
-
alGetSource3i64SOFT
public static void alGetSource3i64SOFT(int source, int param, long[] value1, long[] value2, long[] value3) Array version of:GetSource3i64SOFT
-
alGetSourcei64vSOFT
public static void alGetSourcei64vSOFT(int source, int param, long[] values) Array version of:GetSourcei64vSOFT
-