Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | ALAudioSink: Use float in seconds for duration (AudioFormat and ↵ | Sven Gothel | 2023-05-21 | 2 | -82/+102 |
| | | | | 'avgFrameDuration') to avoid losing precision when dealing with stats, averages etc | ||||
* | ALAudioSink: Enhance description re 'AudioFrame' and 'frameDuration'; Drop ↵ | Sven Gothel | 2023-05-21 | 1 | -5/+10 |
| | | | | unused field 'avgFrameDuration'. | ||||
* | Fix ALAudioSink.dequeueBuffer(): AL_BUFFERS_PROCESSED result is total not ↵ | Sven Gothel | 2023-05-20 | 1 | -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 Gothel | 2023-05-20 | 1 | -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. | ||||
* | build.xml: Fix 7z archive: README.{txt -> md} | Sven Gothel | 2023-05-20 | 1 | -1/+1 |
| | |||||
* | Synth02AL: Use ALAudioSink's default latency instead of fixed frameDuration, ↵ | Sven Gothel | 2023-05-20 | 1 | -9/+16 |
| | | | | | | using actual OpenAL frame processing refresh value Also pre-allocate sampleBuffer to 30ms actual format, using AudioFormat.getDurationsByteSize(..) | ||||
* | ALAudioSink.toString(): Allow null==chosenFormat (pre init string ↵ | Sven Gothel | 2023-05-20 | 1 | -1/+1 |
| | | | | representation) | ||||
* | README.{txt -> md) and update text incl. license | Sven Gothel | 2023-05-20 | 3 | -132/+187 |
| | |||||
* | Synth02ALL Use float32 (native openal-soft format) if available | Sven Gothel | 2023-05-20 | 1 | -13/+40 |
| | |||||
* | ALAudioSink: Add getSourceCount() and cleanup error handling and initImpl() ↵ | Sven Gothel | 2023-05-20 | 1 | -237/+248 |
| | | | | | | locking and exit. initImpl() shall just return false, not throwing an exception. | ||||
* | JoalVersion: Cleanup dead branches | Sven Gothel | 2023-05-20 | 2 | -14/+14 |
| | |||||
* | Demos OpenALTest/Synth02AL: Show JoalVersion | Sven Gothel | 2023-05-19 | 2 | -22/+14 |
| | |||||
* | ALAudioSink: Query latency and re-create context @ init w/ latency ↵ | Sven Gothel | 2023-05-19 | 1 | -137/+245 |
| | | | | (refresh-rate) if frameDuration < defaultLatency | ||||
* | JoalVersion: List all devices, output devices w/ latency and source count ↵ | Sven Gothel | 2023-05-19 | 1 | -1/+113 |
| | | | | (mono, stereo) using undocumented queries | ||||
* | ALAudioSink.lockContext(): Only check error state if AL ↵ | Sven Gothel | 2023-05-18 | 1 | -14/+29 |
| | | | | makeContextCurrent()/alcSetThreadContext() fails (returns false) | ||||
* | Sound3D/Context: Use same base ctor to initialize ↵ | Sven Gothel | 2023-05-18 | 2 | -3/+2 |
| | | | | `hasALC_thread_local_context`, benefitting from thread-local-context | ||||
* | Sound3D: Make all OO wrapper fully transparent and stand-alone, allow ↵ | Sven Gothel | 2023-05-18 | 8 | -154/+330 |
| | | | | | | | | | | | 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 Gothel | 2023-05-18 | 1 | -4/+11 |
| | | | | | | context-locking and release same way; Destroy shall also release context. Result is 'ALSOFT(WW)' free. | ||||
* | Doc, scripsts/tests.sh: Mentione OpenAL-Soft environment variables | Sven Gothel | 2023-05-18 | 2 | -0/+8 |
| | |||||
* | ALAudioSink: Promote to public, be fully functional regarding AudioFormat ↵ | Sven Gothel | 2023-05-18 | 3 | -104/+390 |
| | | | | and OpenAL paremeter. Can be 'plugged' into existing OpenAL logic. | ||||
* | Synth02AL: Fix API doc re reduces latency | Sven Gothel | 2023-05-17 | 1 | -2/+2 |
| | |||||
* | README/index.html: Update Web resources & URLs, add details about ↵ | Sven Gothel | 2023-05-17 | 2 | -6/+53 |
| | | | | audio-backens per platform and contained openal-soft library | ||||
* | ALAudioSink: Enhance using AL_EXT_MCFORMATS (max channels == 8), ↵ | Sven Gothel | 2023-05-17 | 2 | -11/+67 |
| | | | | | | | | | | | 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. | ||||
* | make/scripts/tests.sh: Adjust D_ARGS and add X_ARGS for optional FlightRecorder | Sven Gothel | 2023-05-17 | 1 | -2/+10 |
| | |||||
* | ALAudioSink.toString(): Show hasALC_thread_local_context value ('tlc') | Sven Gothel | 2023-05-17 | 1 | -1/+1 |
| | |||||
* | ALAudioSink.dequeueBuffer(): wait == true: Fix sleep cycle and use sleep(1) ↵ | Sven Gothel | 2023-05-17 | 2 | -28/+68 |
| | | | | | | | 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. | ||||
* | ALAudioSink: Add exclusive locking allowing less context management overhead | Sven Gothel | 2023-05-17 | 1 | -0/+23 |
| | |||||
* | Manual Demos: Add two simple sine wave synthesizer, Synth02AL may be ↵ | Sven Gothel | 2023-05-17 | 3 | -1/+688 |
| | | | | enhanced to a general synth solution | ||||
* | OpenALTest: Drop nonsense LOOPING test on buffer (only applies to a source) | Sven Gothel | 2023-05-17 | 1 | -4/+0 |
| | |||||
* | JoalVersion: Accept null ALC instance | Sven Gothel | 2023-05-17 | 1 | -0/+4 |
| | |||||
* | Promote ALAudioSink from JOGL to JOAL (Common av classes reside in GlueGen, ↵ | Sven Gothel | 2023-05-17 | 1 | -0/+1013 |
| | | | | see gluegen commit 270172bcbd91f96d4a38a3d73e23d744f57a25b8) | ||||
* | JOAL File Layout: Have *-java-src.zip inside jar folder | Sven Gothel | 2023-05-07 | 1 | -4/+2 |
| | |||||
* | Bump openal-soft | Sven Gothel | 2023-05-06 | 1 | -0/+0 |
| | |||||
* | README.txt: Linux: Add libpipewire-0.3-dev for PipeWire | Sven Gothel | 2023-05-05 | 1 | -1/+5 |
| | | | | | On Debian 11 Bullseye: Use bullseye-backports `apt -t bullseye-backports install libpipewire-0.3-dev` to have libpipewire-0.3>=0.3.23, i.e. version 0.3.65. | ||||
* | README: Linux: Add libsndio-dev for SndIO (linked) | Sven Gothel | 2023-05-04 | 1 | -1/+2 |
| | |||||
* | Add ALVersion, i.e. retrieve vendor, renderer, version and vendor-version. ↵ | Sven Gothel | 2023-05-04 | 6 | -21/+309 |
| | | | | Test against OpenAL-Soft data >= 1.23.0 | ||||
* | Windows build script: Drop c.compiler.debug | Sven Gothel | 2023-05-04 | 1 | -1/+2 |
| | |||||
* | Bump openal-soft 1.23.1 customconfig -> toolchain cmake usage, add MacOS ↵ | Sven Gothel | 2023-05-04 | 2 | -5/+10 |
| | | | | arm64 openal-soft build! | ||||
* | Bump openal-soft to v1.23.1 plus platform patches (building only) | Sven Gothel | 2023-05-04 | 1 | -0/+0 |
| | |||||
* | Eclipse: Fix JRE Container and add src, add jdt settings | Sven Gothel | 2023-05-04 | 2 | -1/+21 |
| | |||||
* | Add check-junit.sh test result script | Sven Gothel | 2023-05-04 | 1 | -0/+38 |
| | |||||
* | Windows: Add commandline unit test scripts | Sven Gothel | 2023-05-04 | 3 | -0/+45 |
| | |||||
* | Windows: Drop using soft_oal.dll blobs, use own bundled openal-soft instead. | Sven Gothel | 2023-05-04 | 5 | -38/+9 |
| | | | | Note: This requires mingw-w64 w/ posix-threads to allow using C++ std::mutex etc. | ||||
* | Fix Bug 1280: WAVData.loadFromStream(..) *API Change*: Only take expected ↵ | Sven Gothel | 2023-05-04 | 5 | -16/+13 |
| | | | | | | | | | | 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> | ||||
* | Remove Windows dll-rename, adopting to cpptasks.jar changev2.4.0 | Sven Gothel | 2023-01-23 | 1 | -9/+0 |
| | |||||
* | check-java-major-version.sh: Use unique output to validate one class version ↵ | Sven Gothel | 2023-01-20 | 1 | -3/+4 |
| | | | | used (52 for Java8) | ||||
* | Update Windows build scripts | Sven Gothel | 2023-01-17 | 2 | -28/+3 |
| | |||||
* | Windows: Use mingw32-make.exe | Sven Gothel | 2023-01-17 | 1 | -1/+1 |
| | |||||
* | Build scripts: MacOS + Windows: Use JDK-17 to build our Java-1.8 API | Sven Gothel | 2023-01-15 | 6 | -7/+8 |
| | |||||
* | Replace AccessController.doPrivileged() w/ SecurityUtil.doPrivileged() | Sven Gothel | 2023-01-14 | 2 | -5/+4 |
| |