| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
not running
|
|
|
|
| |
'sometimes wrong'. Workaround: Query released buffers after receiving event and use minimum.
|
| |
|
| |
|
|
|
|
| |
hasAL_SOFT_events, 1st disable all events); growBuffers(): No pre-condition exception for hasAL_SOFT_events
|
| |
|
|
|
|
|
|
|
| |
released buffer count instead of polling
With wait == true, we simply wait until enough buffers have arrived,
otherwise take what we got - both w/o polling and querying the alSource.
|
|
|
|
|
|
| |
GlueGen JavaCallback
https://openal-soft.org/openal-extensions/SOFT_events.txt
|
|
|
|
| |
current; Expose hasALC_thread_local_context to avoid double checks
|
| |
|
|
|
|
| |
a simple sound source to test
|
|
|
|
|
|
|
|
|
|
|
| |
JOAL/OpenAL easier and reuse Context context locking
Context locking logic has been fixed and moved to Sound3D Context class (beside many other transparency changes),
see commit afb386e13fd00fde1401d4551ee4790b1f6d5e09.
This also aligns w/ AudioSink API change of Gluegen commits
- c04726720a57f8db42f2621ad58ff3bd42006c63
- 6a74d16a805a4204093972bb91361b2aa633065c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ALCcontext recreation, ..
Context
- Recursive context locking (only 1st shall do native makeCurrent, only last shall do native release)
- Access to the current Context instance (thread local storage)
- Obey "One context can only be current on one thread,
and one thread can only have one context current!"
- ALCcontext recreation within lock, allowing to change native OpenAL specifics via attr list
- ALCcontext creation (initial) w/ attr list
Device
- Retrieve name if default name null has been given
- Expose device name
- Allow to open() again
Source
- Allow lazy creation w/ invalid ID
- Allow create() post instantiation (for a single source)
- Throw ALException in all queued buffer methods as they are crucial
in multithreading streaming.
- Add queue buffer with OpenAL buffer-id int[] arrays variant
to be used w/o Buffer
Listener
- Fix (get|set)Orientation() API doc: It's 'at' vector, then 'up' vector.
General:
- Have toString()
- Added versatile AudioSystem3D.check*Error(..)
Earlier Sound3D changes
- 7f73d50c90d05cf7388f23977ca956a4933019ad
- 64b40bd4359cad46ebf62751ea342d80205bd98b
|
| |
|
|
|
|
| |
'avgFrameDuration') to avoid losing precision when dealing with stats, averages etc
|
|
|
|
| |
unused field 'avgFrameDuration'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
using actual OpenAL frame processing refresh value
Also pre-allocate sampleBuffer to 30ms actual format, using AudioFormat.getDurationsByteSize(..)
|
|
|
|
| |
representation)
|
| |
|
|
|
|
|
|
| |
locking and exit.
initImpl() shall just return false, not throwing an exception.
|
| |
|
| |
|
|
|
|
| |
(refresh-rate) if frameDuration < defaultLatency
|
|
|
|
| |
(mono, stereo) using undocumented queries
|
|
|
|
| |
makeContextCurrent()/alcSetThreadContext() fails (returns false)
|
|
|
|
| |
`hasALC_thread_local_context`, benefitting from thread-local-context
|
|
|
|
|
|
|
|
|
|
|
| |
mix-and-match; Align Context makeCurrent/release w/ ALAudioSink ...
Align Context makeCurrent/release w/ ALAudioSink
- use ALC_EXT_thread_local_context if available
- use a recursive lock
- same release method as makeCurrent
- ALC_EXT_thread_local_context or traditional
- destroy also releases the context and fully unwinds lock
|
|
|
|
|
|
| |
context-locking and release same way; Destroy shall also release context.
Result is 'ALSOFT(WW)' free.
|
|
|
|
| |
and OpenAL paremeter. Can be 'plugged' into existing OpenAL logic.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
AL_EXT_FLOAT32, AL_EXT_DOUBLE
Note: AL_SOFT_buffer_samples is n/a since openal-soft 1.18.0
ALHelpers.getALFormat(..) uses cached booleans for optionally used available extensions.
Add DEBUG output for ALAudioSink.init() and ALAudioSink.isSupported(),
allowing to track supported and used formats.
|
| |
|
|
|
|
|
|
|
| |
if slept long enough but giving better threading perf for openal-soft
This with exclusive context gives us no distortion at 3x 12ms frames,
reduced from 3x 16ms. See Synth02AL.
|
| |
|
|
|
|
| |
enhanced to a general synth solution
|
| |
|
| |
|
|
|
|
| |
see gluegen commit 270172bcbd91f96d4a38a3d73e23d744f57a25b8)
|
|
|
|
| |
Test against OpenAL-Soft data >= 1.23.0
|
|
|
|
| |
Note: This requires mingw-w64 w/ posix-threads to allow using C++ std::mutex etc.
|
|
|
|
|
|
|
|
|
|
| |
byteCount (2nd arg) using IOUtil.copyStreamChunk2ByteBuffer(..)
This fix is inspired by Bug 1280, <https://github.com/sgothel/joal/pull/16>,
'copy only needed bytes' for JOAL's com.jogamp.openal.util.WAVData.loadFromStream(..).
This GlueGen IOUtil.copyStreamChunk2ByteBuffer() method is a revised version of the proposed IOHelpers.copyFromStream2ByteBuffer(..),
see <https://github.com/OndrejSpanel/joal/commit/1616659e98904270af4faca25b770d0983609735>
|
| |
|
| |
|
|
|
|
| |
remaining buffer. Copes with WAV files that have metadata appended to the end after the data RIFF chunk.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
library over system (default)
Default is to utilize provided openal-soft library if possible
and if not overridden by property 'joal.openal.lib'.
Hence returning ALFactory.PREFER_SYSTEM_OPENAL (default: false)
in ALDynamicLibraryBundleInfo.searchToolLibSystemPathFirst().
+++
This also resolves issues w/ OSX El Capitan 10.11,
which provides OpenAL via 'openal' library name (same as openal-soft)
and causes stuttering w/ GLMediaPlayer's ALAudioSink!
+++
|
|
|
|
| |
d78bb1be0a6290cb94918b21865a023c01825048
|
|
|
|
| |
9e13e8c78ed69bb7afcd49abe8bf69340dc06223
|