| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
space (whitespace) and full- and halfwidth tests.
|
| |
|
|
|
|
| |
'[H[H]:]m[m]:s[s][.S*]' using custom DateTimeFormatter to milliseconds, complementing millisToTimeStr(..)
|
| |
|
|
|
|
| |
used by added get{SCR, Last, }TimeStr(..) methods
|
|
|
|
| |
Double quoting of the exe-file for execution is only allowed and required on Window.
|
|
|
|
|
|
|
|
|
|
|
| |
If the temp path contains parenthesis on Windows, e.g. the username or the sub-temp folder,
the used exeTestFile.getCanonicalPath() can't be used by 'Runtime.getRuntime().exec( path )'.
Example: C:\Users\(ABC)abc\AppData\Local\Temp
Output: Exe-Tst: 'C:\Users\' is not recognized as an internal or external command, operable program or batch file.
Hence the complete canonical path must be quoted, i.e.
Path: "C:\Users\(ABC)abc\AppData\Local\Temp"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
native library path, supported throughout DynamicLibraryBundle[Info]
Motivation: It is helpful to retrieve the actually used native library pathname,
since loading a library w/o absolute path but lookup through LD_LIBRARY_PATH
may render it hard for the user to determine which library is used.
+++
+++
Windows implementation simply can use GetModuleFileNameA() with the native library handle.
POSIX implementation may utilize a symbol-name to retrieve its address within the
loading native library used to retrieved the library information
via dladdr().
To support this feature throughout DynamicLibraryBundle and DynamicLibraryBundleInfo,
the custom DynamicLibraryBundleInfo specializations shall provide
optional symbol-names per each tool-library-name for the POSIX implementation,
see above.
public interface DynamicLibraryBundleInfo {
...
/**
* Returns optional list of optional symbol names per {@link #getToolLibNames()}
* in same order for an OS which requires the symbol's address to retrieve
* the path of the containing library.
*/
public List<String> getSymbolForToolLibPath();
...
}
|
| |
|
| |
|
|
|
|
|
|
|
| |
last PTS value against System Clock Reference (SCR)
This allows passing through actual SCR with the PTS when enqueueing audio frames
and utilizing it when querying actual time lapsed PTS value (interpolation SCR to currentMillis).
|
| |
|
|
|
|
| |
for PTS and duration, i.e. good for 24.855 days
|
|
|
|
|
|
|
|
| |
current monotonic milliseconds **since start of this application**
Also added TSPrinter, a simple millisecond timestamp prepending `print*()` wrapper for a {@link PrintStream}.
Test coverage via TestClock01.
|
|
|
|
| |
access the last buffered audio pts
|
|
|
|
| |
Last review editting I hope :)
|
|
|
|
| |
usability, as well as getScheme(String), isValidScheme(String), isFileScheme(String) and isHttpxScheme(String)
|
|
|
|
| |
changes, using bitfield state (earmarked to be used within GLMediaPlayerImpl etc)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
thread with an optional minimum execution duration
|
| |
|
|
|
|
|
|
|
|
| |
Arrange wrap/deref arguments equal; Add equal set of absolute get/set methods
Completing API to simplify usage by generated code.
All absolute get/set method check arguments itself and against limit(), allow to drop checks in generated code (size).
|
|
|
|
| |
destElemPos, elementCount argument set and use it for the single absolute get/put methods.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
native-free-code Struct-Code generation
Recfactored all NIO buffer utils to Buffers, i.e. buffer <-> address, memcpy, strnlen, etc
Buffers:
- Added copyNativeToDirectByteBuffer(..), allowing to copy a native memory slice into a direct buffer.
- Added typeNameToBufferClass(String) and sizeOfBufferElem(Class<? extends Buffer>)
- Completed slize2<Type>(..) buffer-mapping methods
- Exposure of safe getDirectByteBuffer(..) w/ null-check (package private)
Added NativeBuffer.storeDirectAddress(..), allowing to write the array address into a native buffer (struct, etc),
allowing to referencing the ElementBuffer (linear array of elements) and PointerBuffer (array of pointer).
Hint: This can be read via PointerBuffer.wrap(..).get(0)
Added ElementBuffer (a NativeBuffer) mapping an array of elements,
completing native abstraction next to PointerBuffer (array of pointer).
ElementBuffer can dereference an existing element-array by native address via ElementBuffer.derefPointer(..).
Views of its content can be directly accessed via ElementBuffer.slice(..).
+++
These utilities and buffer abstractions will allow to reuse code and simplify the GlueGen struct get/set implementations
and help to reduce native code injection.
|
|
|
|
|
|
|
|
|
|
|
| |
getPreferredFormat() and isSupported(); Add setChannelLimit() impacting
Add setChannelLimit() impacting getPreferredFormat() and isSupported(),
i.e. to limit channels for e.g. JOAL/OpenAL spatial 3D sound usage.
getNativeFormat() shall be unaffected.
getMaxSupportedChannels() is redudandant -> getPreferredFormat()
|
|
|
|
| |
universal API interface
|
|
|
|
| |
precision when dealing with stats, averages etc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AudioFrame; init(): Use getAvgFrameDuration() for queue growth and limit.
This change renders buffer dequeueing, growth and limit sticking w/ [ms] values
while getAvgFrameDuration() assists frame count determination.
getAvgFrameDuration() is calculated when buffer is fully filled (queuedBytes / queuedFrames),
i.e. a proper representation to be used to dequeue in duration range
as well as for growth.
This further decouples the frameDuration{->Hint} parameter in init(),
as it is now only used for the initial buffer count (and latency adjustment).
|
|
|
|
| |
using enqueueData() -> 1 AudioFrame
|
|
|
|
| |
null in case no sub-directory is desired
|
|
|
|
| |
JOAL/OpenAL implementation
|
| |
|
|
|
|
| |
API doc
|
|
|
|
| |
type int
|
|
|
|
| |
moved to com.jogamp.openal.util.ALAudioSink (public)
|
|
|
|
| |
less management overhead (-> OpenAL + Synthesizer)
|
|
|
|
|
|
|
| |
for cross module usage in JOAL, JOGL, ...
Supply AudioSink: NullAudioSink and JavaSoundAudioSink by GlueGen,
ALAudioSink is supplied via JOAL.
|
|
|
|
|
|
|
|
|
|
| |
(segment) of the input stream (skipBytes, byteCount)
This method 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 method is a revised version of the proposed IOHelpers.copyFromStream2ByteBuffer(..),
see <https://github.com/OndrejSpanel/joal/commit/1616659e98904270af4faca25b770d0983609735>
|
|
|
|
| |
stream is copied.
|
|
|
|
| |
'totalNumBytes' argument, since we have no user-feedback callback passed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Win32 clock_gettime() implementation.
Consider return code on failed native clock_gettime(..) call
- Return Instant.EPOCH for all Instant variations (essentially 0)
- Return 0 for all 'long' variations (ms, ns)
Add Win32 clock_gettime() implementation.
- Source: https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-libraries/winpthreads/src/clock.c
- Public Domain within mingw-w64, included here to simplify linkage.
- Tested on Win10 64bit w/ TestTextRendererNEWT00, all values are OK
|
|
|
|
| |
duration since module startup and not time.
|
|
|
|
|
|
|
|
|
|
|
| |
startup, retrievable via getMonotonicStartupTime(). (performance)
Settings two long fields in getMonotonicTime() and creating Instant and using Duration
for high-frequency counter is too expensive.
currentTimeNanos() subtracts the startup time from the current monotonic time and returns the
resulting duration in nanoseconds, which lasts for 292 years since module startup.
This satisfies performance counter requirements.
|
| |
|