| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
'page size' of covered view. Resolve color-setup.
Tested with FontView01
|
|
|
|
| |
caller, reducing specification
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MediaPlayer} and new RangeSlider
- A widget specifies specific UI semantics including individual controls.
- Being a {@link Group}, implementations provide shape(s) and its instance can be added to the user's scene.
- Due to the specific nature of widgets,
individual controls/listener may be provided with semantic values.
+++
MediaPlayer exposes a RangeSlider for current position (view and control).
|
|
|
|
| |
AA_RENDERING_MASK from renderModes (not necessary for a rect)
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
d99c2d8b28470d335ab5b30124ef8b0607b3b90f
|
|
|
|
| |
usable w/ fix for Bug 1472 (Enhance A/V Sync)
|
|
|
|
| |
controls), used in demos UIMediaGrid0[01]
|
|
|
|
|
|
|
|
| |
Group.replaceShape(..) allows replacing a shape w/o disturbing a layout, e.g. to zoom one element
by taking it out of a grid-group and placing it on-top of the Scene while using a placeholder in the grid
until returned.
Shape.getParent() - depending on use-case (w/o DAG) - allows access and control of a shape's Group.
|
|
|
|
| |
information (if any), FFMPEG* utilizes NativeLibrary.get[Native]LibraryPath()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
traversion for most inner interactive shape; ...
Pick shall complete traversion for most inner interactive shape
- Shape::dispatchMouseEvent() is only invoked for interactive shapes, impl. simplified.
- Remove 'Scene::dispatchMouseEvent(..)', use 'Scene::dispatchMouseEventPickShape(..)' for given use cases
- Scene::dispatchMouseEventForShape(..) used for mouseDragged() only,
i.e. using activeShape.
+++
This allows a 'group widget' being used, allowing to click on inner shapes like a button.
|
|
|
|
|
|
|
|
|
| |
visible UI widget element (activation, visibility)
Enabled widget behavior for a group causes
- the whole group to be shown on top on (mouse over) activation of one of its elements via getAdjustedZ()
- this group's onActivation(Listener) to handle all it's elements activation events
- isActive() of this group and its sub-groups to return true if one of its elements is active
|
|
|
|
|
|
|
| |
getAdjustedZ()
getAdjustedZ() simply returns `position.z() * getScale().z() + zOffset`,
i.e. with added zOffset reflecting activation status (renders shape/group on top).
|
|
|
|
| |
'curverenderer01-pass1.vp' (commit 297c48f4fefd1ab59800524ea5f0dd56684d6786)
|
| |
|
| |
|
| |
|
|
|
|
| |
default ctor
|
| |
|
|
|
|
| |
created (ready)
|
|
|
|
|
|
|
|
|
| |
texture (effiency, less artifacts)
2-pass Graph-AA is not desired for video textures to enhance efficiency and reduce artifacts.
Consider using 'mPlayer.setTextureMinMagFilter( new int[] { GL.GL_LINEAR, GL.GL_LINEAR } )'
of passed GLMediaPlayer instance to use bilinear filtering for different sizes.
|
|
|
|
| |
initialization
|
|
|
|
|
| |
Note that invisible shapes are still considered for picking/activation.
To completely mute the shape, issue {@link #setInteractive(boolean)} as well.
|
|
|
|
| |
active; Add isContainer() to avoid rfeflection
|
|
|
|
| |
details of the translation
|
| |
|
| |
|
|
|
|
| |
GLEventListener (API)
|
| |
|
| |
|
|
|
|
| |
library path, support throughout DynamicLibraryBundle[Info]
|
|
|
|
| |
misleading and wrong info (e.g. on mute)
|
|
|
|
| |
disruption after pause(flush:=false)
|
|
|
|
| |
i.e. ignore audio_queued_ms in such case (Fixes video sync on SCR w/o audio)
|
|
|
|
| |
direct user-exposure and potential data-race
|
|
|
|
| |
w/o video-frame (fixes 'massive' seek'ing)
|
|
|
|
| |
Left behind hacking for AV sync ..
|
|
|
|
|
|
| |
!hasVideoFrame upfront, simplifying sync-block
Fix playSpeed > 1: dt_v (keep playSpeed factor), allow drop frame on no-frames w/ playSpeed > 2
|
|
|
|
| |
stream is not yet initialized or playing, cached clipped value and set at initGL(..)
|
|
|
|
| |
user from selecting video or audio PTS.
|
|
|
|
| |
USE_GLSL_VERTICAL_FLIP, changed names in commit d6cf89f22a5926b437c4430eb166972d90fd92be
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
setUseGLSLVerticalFlip(false) in addition to property 'jogl.gljpanel.noglsl'
Suche setting would enable the slow path of flipping a potentially 'big' framebuffer via the CPU.
The best performance path is using the GLSL shader to vertically flip the FBO,
or - w/o using the shader - to render the GL scene vertically-flipped and set the flag 'flipVertical' to false.
- property "jogl.gljpanel.noverticalflip"
- setter setSkipGLOrientationVerticalFlip(boolean)
If set to <code>true</code>, user needs to flip the OpenGL rendered scene
<i>if {@link #isGLOriented()} == true</i>, e.g. via the projection matrix.<br/>
See constraints of {@link #isGLOriented()}.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(multiple of) audio_dequeued_ms
The case of lagging audio to the audio master-clock (by experience) is a rare and probably synthethic case
of the AV async videos, was
dt_a > MAX_VIDEO_ASYNC && d_apts > 0
now with increased threshold max_adelay = Math.max( 4*audio_dequeued_ms, 4*MAX_VIDEO_ASYNC )
dt_a > max_adelay && d_apts > 0
In conjunction the video-repeat case (video pts > SCR) shall use a higher threshold _when_
detecting, i.e. min1_audio_queued_ms = Math.max( 2*audio_dequeued_ms, 2*MAX_VIDEO_ASYNC )
to ensure enough buffered audio exists (2 audio-frames) before the next getNextTexture()
hits within vsync.
This early detection and min1_audio_queued_ms threshold
is double of the late threshold for video-repeat min0_audio_queued_ms = Math.max( audio_dequeued_ms, MAX_VIDEO_ASYNC ),
when the to-be repeated frame shall be displayed within getNextThreshold().
Failing this requirement (1 audio-frame) will discard it and gather the next video-frame,
allowing to fill the audio-buffer. A subsequent AV sync shall correct the difference.
Strategy is less intervention on less buffered-audio.
This shorter tolerance also reduces some video lag or stuttering on 24fps -> 60fps films.
|
|
|
|
|
|
|
|
|
| |
resample: Use swr_get_out_samples(..) to calculate the required output sample count
Notable when playing audio with e.g. 24k sample rate on a 48k OpenAL ALAudioSink,
the sample duration was cut in half due to erroneous resampling missing half the required samples.
Using swr_get_out_samples(..) resolves this issue pre swr_convert(..), the resampling.
|