aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Bug 1495: GraphUI Shape: Only updateMat() if marked dirty once in ↵Sven Göthel2024-01-311-34/+64
| | | | | | | | applyMatToMv() and getMat(*) It is sufficient to mark the internal iMat dirty when mutating the source values (pos, ..) and calling updateMat() only once when used in applyMatToMv() and getMat(*). iMatIdent can also be set to true within updateMat() IF neither mutations occured, i.e. no translocation, scale or rotation.
* Utilize PTS.getCurrent() where applicableSven Göthel2024-01-315-13/+13
|
* GLMediaPlayer: Split GLMediaFrameListener (rarely used) from ↵Sven Göthel2024-01-3117-114/+136
| | | | | | | | | | GLMediaEventListener, easing listener callbacks; Prepare SubtitleEventListener generalization (Bug 1494) Moves pushSound(), pushSubtitle*() from FFMPEGMediaPlayer to GLMediaPlayerImpl, as it is handled in a generic way - even though currently only called by native FFMPEGMediaPlayer implementation. Note: This patch is incomplete, i.e. not even compile clean. But choses as-is to semantically split the work to ease review.
* Bug 1494: Add SubTextureEvent & SubEmptyEvent; Add SubtitleEvent.release() ↵Sven Göthel2024-01-315-31/+220
| | | | provided by owner to take back borrowed resources (texture of bitmap subtitle)
* GraphUI MediaButton: Add blending below subtitle, allow setting ↵Sven Göthel2024-01-292-18/+69
| | | | color/blending and subLineDY; MediaPlayer: Add full infoLine toggle with click on infoBox
* GLMediaPlayer: Add getSubtitleCodec()Sven Göthel2024-01-292-2/+11
|
* FFMPEGPlayer: Prep for bitmap'ed subtitles: Use glEnable()/glBindTexture() ↵Sven Göthel2024-01-289-65/+142
| | | | | | | func-ptr in native; readNextPacket0() passes video+subtitle texTarget and texID For bitmap subtitles we need to push the bitmap into its own texture. Hence readNextPacket0() must switch to used texture using glEnable() on !core and glBindTexture().
* FFMPEGMediaPlayer/GraphUI MediaButton: AVSubtitles's start/end are relative ↵Sven Göthel2024-01-282-22/+34
| | | | to pts [ms] (fixed); Use ASSEventLine packets within proper pts only.
* Cleanup GLMediaPlayer.EventMask.Bit handling in GLMediaEventListener ↵Sven Göthel2024-01-286-12/+6
| | | | implementations: Either Uninit, Init, Pause or Play (exclusive)
* GraphUI MediaButton: Clear cached subtitle data on uninit and init from ↵Sven Göthel2024-01-281-2/+12
| | | | GLMediaPlayer
* FFMPEGMediaPlayer (native): Simplify subtitle handling in readNextPacket0()Sven Göthel2024-01-281-26/+10
|
* FFMPEGMediaPlayer (native): Set used sid to none if not selected (missed)Sven Göthel2024-01-281-0/+3
|
* GraphUI Demo UIMediaGrid00: Add missing patch from relocating getSymbolsFont()Sven Göthel2024-01-281-1/+1
|
* GraphUI Demos: Disable debug togglesSven Göthel2024-01-282-2/+2
|
* GraphUI MediaPlayer: Remove debug message (Behavior to disable border if ↵Sven Göthel2024-01-281-1/+0
| | | | zoomSize == 1, full-screen)
* GraphUI MediaButton/MediaPlayer-Widget: Add working subtitle (text + ↵Sven Göthel2024-01-283-14/+184
| | | | ass/saa) support via GLMediaPlayer/FFMPEGMediaPlayer
* GLMediaPlayer/FFMPEGMediaPlayer: Add working subtitle (text + ass/saa) ↵Sven Göthel2024-01-2812-36/+401
| | | | | | | | support via FFMpeg TODO: - We may want to refine subtitle PTS handling - We may want to support bitmapped subtitles
* GraphUI Misc Cleanup: Move get*Font() helper to Scene; Allow ↵Sven Göthel2024-01-285-24/+30
| | | | GraphShape.drawImpl0(..) override;
* GraphUI Group: Don't draw border is set invisibleSven Göthel2024-01-281-2/+2
|
* GraphUI MediaPlayer: Disable always DEBUG hackSven Göthel2024-01-271-1/+1
|
* GraphUI MediaPlayer: Bump Chapter tooltip scaleSven Göthel2024-01-271-1/+1
|
* GLMediaPlayer: Support tile metadataSven Göthel2024-01-277-47/+73
|
* GraphUI MediaPlayer Widget: Support switching audio and subtitle streams, ↵Sven Göthel2024-01-271-7/+54
| | | | show their language as a button - press to switch to next
* GLMediaPlayer: Add initial subtitle support, track audio/video/subtitle ↵Sven Göthel2024-01-2722-113/+468
| | | | | | | | streams and languages and add convenient switchStream(..) entry. audio/video/subtitle streams and language metadata is maintained by arrays holding the stream-IDs and language string identifier. Implementation added in FFMPEGPlayer for these data-sets.
* GraphUI MediaPlayer: seek from display-thread, don't act on ↵Sven Göthel2024-01-273-17/+17
| | | | SliderAdapter.clicked() as dragged is always called
* GLMediaPlayerImpl: Throw out video_queue_growthSven Göthel2024-01-271-35/+2
|
* GLMediaPlayer: Fix playing with single-threaded mode w/ texture-count 1Sven Göthel2024-01-262-8/+15
|
* GraphUI Demos: Bump FontView01 + UIMediaGrid01Sven Göthel2024-01-262-34/+66
|
* GraphUI MediaPlayer: Cleanup infoLabel layout; Add sticky HUD (always-on) ↵Sven Göthel2024-01-261-40/+77
| | | | button; Fix tooltip help; Make slower-speed reduce by half if <= 1
* GraphUI RangeSlider: Use a modulating color for rect page frame for visible ↵Sven Göthel2024-01-261-4/+41
| | | | response when active
* GraphUI Shape: API doc for colors; add makeShapeDirty() on setColor(); add ↵Sven Göthel2024-01-261-9/+68
| | | | activeRGBAModulateOn.
* GraphUI Layout: Emphasize whether a value/parameter is scaled or unscaled in ↵Sven Göthel2024-01-266-72/+76
| | | | API doc to ease usage
* Math Vec*: Rename {scale->mul}(..) for non-scalar types (n-dim); Add div(..)Sven Göthel2024-01-2610-66/+130
|
* Bug 1491: GLMediaPlayerImpl: Use a shared *GraphicsDevice for all compatible ↵Sven Göthel2024-01-251-3/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | shared GLContext, removing resource restrictions In a use case with hundreds of GLMediaPlayer instances, this causes the application to bail out due to running out of resources. +++ GLMediaPlayer exposes resource restrictions and locking related with the created off-thread shared GLContext due to its newly created NativeWindow *GraphicsDevice instance (on X11). On the X11 platform, the *GraphicsDevice actually uses a native resource (X11 Display handle) and hence creating such device is costly and limited. To operate an off-thread GLContext w/o actual X11 input handling, it is *NOT* required to use a new instance. +++ Further more, the device is using locking. To operate an off-thread GLContext, it is *NOT* required to use locking on it as it does not perform actual X11 input handling etc. All operations are performed on the shared GL context. +++ Solution is to create a shared non-locking device clone compatible with the source. A share counter shall determine that the last one actually gets destructed. The usual ..
* Bug 1491: FFMPEGMediaPlayer: Lock moviePtr lifecycle phase in-between ↵Sven Göthel2024-01-251-69/+73
| | | | | | | | | [initStreamImpl - destruction] initStreamImpl() calls ffmpeg natives.setStream0(..), which in turn callsback to the GLMediaPlayerImpl and FFMPEGPlayer and hence requires a valid moviePtr. In total, it covers a longer time period. This patch uses a moviePtrLock object avoiding destruction while within initStreamImpl.
* Bug 1491: Add missing rename ↵Sven Göthel2024-01-251-2/+2
| | | | DefaultGraphicsDevice.swap{Device->}HandleAndOwnership()
* NativeWindowFactory.createDevice(..) w/ unitID for cloning; ↵Sven Göthel2024-01-256-82/+75
| | | | | | | | | | DefaultGraphicsDevice: Move ownership (Object) code into base class ensuring same code NativeWindowFactory.createDevice(..) w/ unitID - Allows cloning a device instance with same parameter. DefaultGraphicsDevice: Move ownership (Object) code final into base class ensuring same code - Rename DefaultGraphicsDevice.swapDeviceHandleAndOwnership() -> swapHandleAndOwnership()
* Bug 1488: Complete/Fix producing the 64-bit shaderKey: Use long values in ↵Sven Göthel2024-01-251-36/+28
| | | | | | | | | | bit-shift expressions and simplify it commit 1dcfdf71c09c6d774ac47012c05e09da4a085d7b - still used the 'hash code' bit shift pattern, not necessary -> simplified - the value as not ensured to be long, hence conversion occured This caused Graph's MSAA not being picked up properly using the shaderKey.
* Graph: Drop non-existing 'JAVA' font from FontFactorySven Göthel2024-01-256-200/+14
|
* GraphUI MediaPlayer: Fix Zoom behavior; Disable DEBUG outputSven Göthel2024-01-191-33/+67
|
* GraphUI RangeSlider/RangedGroup: Fix overall integration, adding more API ↵Sven Göthel2024-01-194-142/+359
| | | | | | | | | | | | | | | | | | | comments; UIMediaGrid01 now uses RangedGroup RangeSlider - Fix pageSize, i.e. allow valid content.getBounds() be pending @ validateImpl() - Clip value [0, maximum - pageSize] - Has to use Float.isFinite() to capture both, NaN and Infinity -- used for pageSize, determining whether slider uses pageSize rect-knob or position round-knob -- used for minMax, val, val_pct and temp range + pageSize_pct -- don't overwrite valid pageSize if leading to !isFinite() - Reuse setKnobSize() for ctor as well, where padding is be done once (FIXME?) - Tested via RangedGroup w/ UIMediaGrid01 and FontView0 -- vertical slider, inverse and !inverse
* GraphUI Tooltip: Use delayMS for no time-based alarm (only used for now()); ↵Sven Göthel2024-01-192-15/+16
| | | | FontView01: Use TooltipShape for GlyphShape only with mouse click -> Tooltip.now()
* GraphUI Demos: Minor fixesSven Göthel2024-01-223-21/+6
|
* VBORegionSPES2: Disable verbose flag in TextureSequence.setTexCoordBBox() .. ↵Sven Göthel2024-01-221-1/+1
| | | | oops
* Bug 1488: FFMPEGMediaPlayer: Fix getTextureFragmentShaderHashID(), i.e. use ↵Sven Göthel2024-01-221-6/+3
| | | | actual tc_w_1 = (float)getWidth() / (float)texWidth value as hardcoded within the shader.
* Bug 1488 - Graph RegionRenderer: Use a more deterministic 64-bit shaderKey: ↵Sven Göthel2024-01-221-31/+62
| | | | | | | | | | | | | | | | | | | | | | | [0-31] bit values and state, [32-63] colorTexSeqHash This leaves only room for a key collision on the 32-bit colorTexSeqHash value and hence should be save within our shader-code environment. + // # | s | + // 0 | 1 | isTwoPass + // 1 | 1 | pass1 + // 2 | 5 | ShaderModeSelector1 + // 7 | 1 | hasFrustumClipping + // 8 | 1 | hasColorChannel + // 9 | 1 | hasColorTexture + // 32 | 32 | colorTexSeqHash + long hash = ( isTwoPass ? 1 : 0 ); + hash = ( hash << 1 ) | ( pass1 ? 1 : 0 ) ; + hash = ( hash << 1 ) | sms.ordinal(); // incl. pass2Quality + sampleCount + hash = ( hash << 5 ) | ( hasFrustumClipping ? 1 : 0 ); + hash = ( hash << 1 ) | ( hasColorChannel ? 1 : 0 ); + hash = ( hash << 1 ) | ( hasColorTexture ? 1 : 0 ); + hash = ( hash << 1 ) | ( ( colorTexSeqHash & 0xFFFFFFL ) << 32 );
* Scene.dispatchMouseEventPickShape(): Reuse PMVMatrix4f, Ray and Vec3f within ↵Sven Göthel2024-01-191-6/+8
| | | | EDT, reducing temp objects on mouse moves
* TooltipShape.destroyTip(): Only show warning instead of throwing a ↵Sven Göthel2024-01-191-1/+5
| | | | RuntimeException if tip couldn't be found within wrapper Group
* Simplify TooltipShape: Create own wrapper Group to not mutate user given ↵Sven Göthel2024-01-223-33/+83
| | | | Shape (if reused in DAG); Fix FontView01 TooltipShape instance, use NoOp DestroyCallback
* Bug 1488 - Graph RegionRenderer: Ensure shaderPrograms1 path is disabled ↵Sven Göthel2024-01-221-6/+8
| | | | | | using 'static final boolean useShaderPrograms0 = true' For now, let's leave the dead shaderPrograms1 code path inside the class for further consideration.