aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp
Commit message (Collapse)AuthorAgeFilesLines
* ALAudioSink: Utilize AL_SOFT_events if available, i.e. use callback for ↵Sven Gothel2023-07-091-42/+97
| | | | | | | 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.
* Add OpenAL extension AL_SOFT_events using userParam ALCcontext as key for ↵Sven Gothel2023-07-092-0/+91
| | | | | | GlueGen JavaCallback https://openal-soft.org/openal-extensions/SOFT_events.txt
* Sound3d.Context: destroy() shall only 'null' thread-local context if this is ↵Sven Gothel2023-07-091-4/+4
| | | | current; Expose hasALC_thread_local_context to avoid double checks
* Promote SimpleSineSynth to API (util) from Synth02AL, allowing user to have ↵Sven Gothel2023-05-231-0/+433
| | | | a simple sound source to test
* ALAudioSink: Use and expose Sound3D object, allow user app to deal w/ ↵Sven Gothel2023-05-231-453/+321
| | | | | | | | | | | 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
* Sound3D: Further OO wrapper to be used in ALAudioSink: Context locking, ↵Sven Gothel2023-05-236-91/+450
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* ALException: Suppress serial warningSven Gothel2023-05-231-0/+1
|
* ALAudioSink: Use float in seconds for duration (AudioFormat and ↵Sven Gothel2023-05-211-81/+101
| | | | 'avgFrameDuration') to avoid losing precision when dealing with stats, averages etc
* ALAudioSink: Enhance description re 'AudioFrame' and 'frameDuration'; Drop ↵Sven Gothel2023-05-211-5/+10
| | | | unused field 'avgFrameDuration'.
* Fix ALAudioSink.dequeueBuffer(): AL_BUFFERS_PROCESSED result is total not ↵Sven Gothel2023-05-201-5/+14
| | | | | | | | | | | | | | | | | | 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.
* ALHelpers.getALFormat(..): Drop alGetEnumValue("type") and use 'type' via ↵Sven Gothel2023-05-201-17/+18
| | | | | | | | | 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.
* ALAudioSink.toString(): Allow null==chosenFormat (pre init string ↵Sven Gothel2023-05-201-1/+1
| | | | representation)
* ALAudioSink: Add getSourceCount() and cleanup error handling and initImpl() ↵Sven Gothel2023-05-201-237/+248
| | | | | | locking and exit. initImpl() shall just return false, not throwing an exception.
* JoalVersion: Cleanup dead branchesSven Gothel2023-05-201-8/+5
|
* ALAudioSink: Query latency and re-create context @ init w/ latency ↵Sven Gothel2023-05-191-137/+245
| | | | (refresh-rate) if frameDuration < defaultLatency
* JoalVersion: List all devices, output devices w/ latency and source count ↵Sven Gothel2023-05-191-1/+113
| | | | (mono, stereo) using undocumented queries
* ALAudioSink.lockContext(): Only check error state if AL ↵Sven Gothel2023-05-181-14/+29
| | | | makeContextCurrent()/alcSetThreadContext() fails (returns false)
* Sound3D/Context: Use same base ctor to initialize ↵Sven Gothel2023-05-181-2/+1
| | | | `hasALC_thread_local_context`, benefitting from thread-local-context
* Sound3D: Make all OO wrapper fully transparent and stand-alone, allow ↵Sven Gothel2023-05-187-150/+319
| | | | | | | | | | | 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
* ALAudioSink: Don'e check errors before context; Track method of ↵Sven Gothel2023-05-181-4/+11
| | | | | | context-locking and release same way; Destroy shall also release context. Result is 'ALSOFT(WW)' free.
* ALAudioSink: Promote to public, be fully functional regarding AudioFormat ↵Sven Gothel2023-05-182-19/+1413
| | | | and OpenAL paremeter. Can be 'plugged' into existing OpenAL logic.
* ALAudioSink: Enhance using AL_EXT_MCFORMATS (max channels == 8), ↵Sven Gothel2023-05-171-6/+13
| | | | | | | | | | | 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.
* JoalVersion: Accept null ALC instanceSven Gothel2023-05-171-0/+4
|
* Add ALVersion, i.e. retrieve vendor, renderer, version and vendor-version. ↵Sven Gothel2023-05-042-11/+220
| | | | Test against OpenAL-Soft data >= 1.23.0
* Fix Bug 1280: WAVData.loadFromStream(..) *API Change*: Only take expected ↵Sven Gothel2023-05-042-11/+7
| | | | | | | | | | 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>
* Ensure that only the size of sample data chunk is loaded, rather than entire ↵Matthew Harris2016-01-062-5/+10
| | | | remaining buffer. Copes with WAV files that have metadata appended to the end after the data RIFF chunk.
* WAVLoader: Adopt to GlueGen's Bitstream commit ↵Sven Gothel2015-01-281-11/+11
| | | | 9e13e8c78ed69bb7afcd49abe8bf69340dc06223
* Code Clean-Up based on our Recommended Settings (jogamp-scripting ↵Sven Gothel2014-07-0318-322/+327
| | | | | | | | | | | | | c47bc86ae2ee268a1f38c5580d11f93d7f8d6e74) - Change non static accesses to static members using declaring type - Change indirect accesses to static members to direct accesses (accesses through subtypes) - Add final modifier to private fields - Add final modifier to method parameters - Add final modifier to local variables - Remove unnecessary casts - Remove unnecessary '$NON-NLS$' tags - Remove trailing white spaces on all lines
* ALFactory.PREFER_SYSTEM_OPENAL: Defaults to false for all platforms (i.e. ↵Sven Gothel2014-06-101-15/+15
| | | | Use openal-soft on OSX as well now)
* WAVLoader: Use Bitstream and support big-endian RIFX; Fix ALutWAVLoaderTestSven Gothel2014-02-212-92/+81
|
* ALHelpers: Shorten returned string representationsSven Gothel2013-08-261-12/+12
|
* Add util class ALHelpers - Ported to Java from OpenAL-Soft from (c) 2011 ↵Sven Gothel2013-08-261-0/+376
| | | | | | | Chris Robinson (BSD'ish) - Renamed type conversion methods - Added generic type -> AL types
* ALFactory: Remove unused importsSven Gothel2013-08-261-3/+0
|
* Merge remote-tracking branch 'gouessej/master'Xerxes Rånby2013-07-092-31/+94
|\
| * Removes all references to javax.sound.* in order to allow JOAL to work in ↵Julien Gouesse2013-03-272-31/+94
| | | | | | | | non-J2SE environments
* | Adapt to GlueGen commit 1a01dce6c42b398cdd68d405828774a3ab366456Sven Gothel2013-06-111-4/+1
|/
* Merge pull request #9 from magnen/masterSven Gothel2013-03-211-0/+11
|\ | | | | Adding method for retrieving the playing state of a Source.
| * Adding method for determining the playing state of an audio source.Magne Nordtveit2013-03-071-0/+11
| |
* | Catches ExceptionInInitializerError instances when initializing ALFactoryJulien Gouesse2013-03-181-0/+2
|/
* OpenAL Library Selection (Bug 662): Use String value of new property ↵Sven Gothel2013-02-011-8/+52
| | | | | | | | | | | | | | | | 'joal.openal.lib'. OSX: Prefer system OpenAL (nou OpenAL-Soft output device support) + * Select preferred OpenAL native library type via system properties, + * i.e. System-OpenAL or bundled Soft-OpenAL.<br/> + * If the preferred choice fails, implementation falls back to the other. + * <PRE> + -Djoal.openal.lib=auto Prefer System-OpenAL over bundled Soft-OpenAL for OSX. Prefer bundled Soft-OpenAL over System-OpenAL for all others. This is the default. + -Djoal.openal.lib=system Prefer System-OpenAL over bundled Soft-OpenAL for all. + -Djoal.openal.lib=soft Prefer bundled Soft-OpenAL over System-OpenAL for all. + </PRE> + * Note: You may use the 'jnlp.' prefix, allowing using above property names w/ Applets and WebStart, + * e.g. 'jnlp.joal.openal.lib=system'. + * </p>
* WavData.loadFromStream: Uses IOUtil.copyStream2ByteBuffer which fixes ↵Sven Gothel2013-02-012-15/+19
| | | | | | | loading on Android; Adding proper byteOrder swapping depending on input format. - Also added a few more test streams - Working Android test activity
* Android Build & Test ; WavLoader/Data javax.audio separation (part-1)Sven Gothel2013-01-315-65/+217
|
* Bug 567 (part 1): add support for openal extensionsMichael Zucchi2013-01-251-0/+16
| | | | | | | Imported JOAL specific parts from the patch made by Michael Zucchi. Author: Michael Zucchi <[email protected]> Signed-off-by: Xerxes Rånby <[email protected]>
* Fix bug 550, JOAL lacks Platform.initSingleton() call - Using TempJarCache ↵Sven Gothel2012-01-041-0/+2
| | | | reveals unresolved initialization dependency leading to NPE in NativeLibrary
* Move implementation private files from com.jogamp.<module>.impl. to ↵Sven Gothel2011-02-091-1/+1
| | | | | | | | | | | | jogamp.<module> (2/2) - edit files - jogamp.openal -> jogamp.openal This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
* Move implementation private files from com.jogamp.<module>.impl. to ↵Sven Gothel2011-02-093-333/+0
| | | | | | | | | | | | jogamp.<module> (1/2) - rename files - com.jogamp.openal.impl -> jogamp.openal This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
* Window Support added ; Win64 libs & license filesSven Gothel2010-12-133-8/+175
| | | | | | | | | | | | | | - plays on linux/window now - ant build files fixed -> Windows support - windows OpenAL 32/64 bit: see make/lib/FILES.txt make/lib/oalinst-license.txt) - linux libs: added .1 to suffix - added Debug impl - catch EAX init exception (ie unsatisfied link error) - EAX proper blocked init TODO: - check on osx - joal-demos
* Bring back JOAL (code fixes and project structure)Sven Gothel2010-12-135-294/+112
| | | | | | | | | | | | | | | - Use GlueGen DynamicLibraryBundle - Fix alGetString - Proper test/junit structure - NB project fix - add artifacts.properties and jar's manifest - proper ZIP file structure TODO: - check on windows and osx - actually hear a sound - add jnlp file template - joal-demos
* fixed alcGetString functionpointer mapping (gluegen does not handle method ↵Michael Bien2010-07-102-9/+99
| | | | | | renames correctly). ALCImpl is now ALCAbstractImpl. "Custom code" is now in ALCImpl which extends ALCAbstractImpl.
* EAXFactory initializes JOAL if nessesary.Michael Bien2010-07-102-103/+91
|