Skip to content
The Jenkins Controller is preparing for shutdown. No new builds can be started.
Success

Changes

Summary

  1. ALHelpers.getALFormat(..): Drop alGetEnumValue("type") and use 'type' via ALExtConstants directly: Fixes failing al.alGetEnumValue("AL_FORMAT_STEREO_DOUBLE") (details)
  2. Fix ALAudioSink.dequeueBuffer(): AL_BUFFERS_PROCESSED result is total not accumulative while waiting (not yet dequeueing), ... (details)
Commit 772cde0c3cc97a0c2a932f9398539500363f60c0 by Sven Gothel
ALHelpers.getALFormat(..): Drop alGetEnumValue("type") and use 'type' via ALExtConstants directly: Fixes failing al.alGetEnumValue("AL_FORMAT_STEREO_DOUBLE")

al.alGetEnumValue("AL_FORMAT_STEREO_DOUBLE") failed w/ OpenAL-Soft,
despite having AL_EXT_MCFORMATS, AL_EXT_FLOAT32 and AL_EXT_DOUBLE supported.

Notable, al.alGetEnumValue("AL_FORMAT_MONO_FLOAT32") did work.
The file was modifiedsrc/java/com/jogamp/openal/util/ALHelpers.java (diff)
Commit 32563a63b9c10820ffd1509fa12268ba40430d00 by Sven Gothel
Fix ALAudioSink.dequeueBuffer(): AL_BUFFERS_PROCESSED result is total not accumulative while waiting (not yet dequeueing), ...

Further:
- brackets were missed in 'sleep =', i.e.
  'releaseBufferLimes-releasedBuffers * avgBufferDura' -> '(releaseBufferLimes-releasedBuffers) * avgBufferDura)'

- The minimum sleep of avgFrameDuration 'sleep = Math.max(avgFrameDuration, ..'
  lead to cut-off smaller sleep cycles and the else branch would only sleep for less (1ms) multiple times.
  Hence use the minimum of 2ms, where we subtract 1ms for busy polling.

  Notable, this is an extreme situation of small buffer sizes (duration),
  but may happen on like synthesizer applications (jsyn).

We actually could use latency (refresh cycle) as used in OpenAL-Soft,
but this is an undocumented feature .. sort of.
The file was modifiedsrc/java/com/jogamp/openal/util/ALAudioSink.java (diff)