The meson target was named 'libvlc_opengles' but meson automatically
adds a 'lib' prefix, producing 'liblibvlc_opengles.a'. Rename the
target to 'vlc_opengles' so the output match the intended name.
VOUT_DISPLAY_CHANGE_SOURCE_PLACE is called when:
- crop changes
- aspect-ratio changes
- video area changes after a window size changes
- zoom changes
- the fitting of the video changes inside the window
We may force a place_changed when it actually didn't change.
But it only calls sub->api.vt.Viewport() which is cheap.
The location which automake uses can not be used at the moment
because plugins built by meson lack the RUNPATH property.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Will replace MediaCodec direct rendering once AImageReader is handled by
MediaCodec.
- Support HDR metadata (should be the same than legacy vout).
- Fully support vout crop/scale/size controls, without the need to
external JNI calls to libvlcjni AWindow class.
- Support picture re-display (it was not possible before)
Both APIs are avalaible since API 29+, but some new functions were added
in API 31. As I don't want to add a third behavior to test (legacy,
API29, API31), I force usage of API31+ to enable new AImageReader /
ASurfaceControl path.
Gbm states the following:
> Each call to gbm_bo_get_fd_for_plane() returns a new
> file descriptor and the caller is responsible for
> closing the file descriptor.
This is currently not satisfied. Because of that, the
application quickly runs out of the file descriptors
that the system can give when resizing the video window.
This fixes the crash for me when I resize the window on
wayland. In my case it takes a few seconds of accumulated
resize before running out of file descriptors.
The VLC and libvlc format is the one from HEVC SEI which is ANSI/CTA 861-G.
The Microsoft format differs from this format in MaxMasteringLuminance where the
values is not in 1/10000th of a nit but in nit.
We also reorder the setting of values to match the order of the structure.
This is also the same order as libvlc.
GL_CLAMP_TO_EDGE is an enum and must be set using glTexParameteri. It
was like this since ce1dc5d726 but union
magic probably saved us from noticing weird behaviour.
This updates the video rendering loop in VLCOpenGLES2VideoView to use
kCFRunLoopCommonMode instead of kCFRunLoopDefaultMode.
Using CADisplayLink with the default run loop mode causes frame updates
to pause during common UI interactions, such as pulling down the
control center. This results in frozen video even though audio
continues normally.
Using kCFRunLoopCommonMode ensures frame updates even when the player
is not in focus. This matches the behavior used by Apple in AVPlayer.
NPOT textures is supported by standard in OpenGLES and OpenGL 2.0
(see OpenGL 2.0 Appendix I.3)
Some OpenGL implementations such as Apple core profile, no longer list
`GL_ARB_texture_non_power_of_two` or `GL_APPLE_texture_2D_limited_npot`
as part of their extensions