- Mar 05, 2021
-
-
Romain Vimont authored
This helps for testing plane filtering.
-
Romain Vimont authored
If config.filter_planes is set on a filter, generate one output texture for each input texture, and call draw() for each plane separately.
-
Romain Vimont authored
A "direct" sampler (i.e. a sampler without interop) only supported one texture, because the output of the previous filter was assumed to be RGBA in a single plane. A deinterlace filter will output several planes, so the sampler of the next filter must be able to receive all of them.
-
Romain Vimont authored
A sampler gives access to the input picture, in RGBA. Add support for giving access to individual input planes, selected by vlc_gl_sampler_SelectPlane(), in their native format.
-
Romain Vimont authored
The number of input planes and their sizes might be useful to filters implementation. It could be retrieved by vlc_fourcc_GetChromaDescription(), but for convenience, expose them in sampler.
-
Romain Vimont authored
Compute the shader extensions in a separate function, to be able to reuse it.
-
Romain Vimont authored
The type and function to use depends on the texture target. Extract the mapping to a separate function to be able to reuse it.
-
Romain Vimont authored
Variables were generated on the fly with an index in the name. For example: uniform sampler2D Texture0; uniform mat3 TexCoordsMap0; uniform sampler2D Texture1; uniform mat3 TexCoordsMap1; uniform sampler2D Texture2; uniform mat3 TexCoordsMap2; Replace them by arrays: uniform sampler2D Textures[3]; uniform mat3 TexCoordsMaps[3]; This will enable to expose a GLSL function providing a color for a particular plane number passed as a parameter.
-
Romain Vimont authored
Now that both types of samplers (interop and direct) use the same fragment shader code generation, factorize their creation.
-
Romain Vimont authored
A sampler may receive their input picture either: - from an interop, uploading a picture_t - from a previous filter, giving an OpenGL texture directly (a "direct" sampler) The fragment shader for a "direct" sampler was straightforward: the input was always an RGBA texture. On the contrary, samplers from interop always applied chroma conversion to expose individual pixels in RGBA. However, deinterlace filters operate on individual input planes, so the chroma conversion must be applied afterwards. To prepare support for this feature, use the same fragment shader code generation for both types of samplers.
-
Romain Vimont authored
This will allow to generate chroma conversion code for "direct" samplers, in order to convert chroma between OpenGL filters.
-
Romain Vimont authored
Swizzle will be necessary even for "direct" samplers (samplers without interop).
-
Romain Vimont authored
In OpenGL, some values of picture planes scaling are hardcoded, and might differ from the values provided by in a vlc_chroma_description_t. Make the computation explicit and explain why.
-
GBM platform allows to provide an EGL context even without display server. Co-authored-by:
Romain Vimont <rom1v@videolabs.io>
-
Romain Vimont authored
A module egl_display must only provide EGL displays where eglTerminate() can be called, even if other modules are using EGL (typically because it is internally refcounted). This is always the case on Android, so egl_display was initially only enabled on Android: https://android.googlesource.com/platform/frameworks/native/+/master/opengl/libs/EGL/egl_display.cpp But this may also be the case on other platforms which support EGL_KHR_display_reference: https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_display_reference.txt Co-authored-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
If the EGL extension EGL_KHR_surfaceless_context is available, create a surfaceless context. Co-authored-by:
Romain Vimont <rom1v@videolabs.io>
-
Romain Vimont authored
The filter egl_pbuffer was initially enabled only for Android, because the default display is always internally refcounted. Now that the display is managed separately, egl_pbuffer may be enabled as soon as OpenGL and EGL are available.
-
Romain Vimont authored
Add a default EGL display module which just calls eglGetDisplay(EGL_DEFAULT_DISPLAY).
-
Romain Vimont authored
Add a new module type "egl display" to open an EGL display.
-
Romain Vimont authored
The filter egl_pbuffer does not depend on LIBM.
-
Romain Vimont authored
-
- Mar 04, 2021
-
-
Alexandre Janniaux authored
The macro was checking for $with_foo to be set but only $enabled_foo was set correctly by the PKG_WITH_MODULES macro. In addition, this patch adds an intermediate macro for the name to be readable.
-
If npot (non-power-of-two) textures are not supported, then the picture visible dimensions is not the same as the texture dimensions. When updating a picture, the interop (which calls glTexSubImage2D() or similar) expects picture dimensions. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
Contrary to vlc_gl_Create(), vlc_gl_CreateOffscreen() did not initialize gl->api_type, so it was always implicitly set to VLC_OPENGL, never VLC_OPENGL_ES2. Signed-off-by:
Alexandre Janniaux <ajanni@videolabs.io>
-
François Cartegnie authored
-
Alexandre Janniaux authored
Avoid flushing mediacodec when the decoder has been drained at the VLC decoder_t level, because the picture output by the decoder are inflight pictures that will not stay valid when the decoder will be flushed. Instead, only flush it when every pictures have been released. This is too pessimistic currently, the best alternative being doing the flush when every picture have been rendered.
-
Alexandre Janniaux authored
Avoid trying to queue picture after the closing of the decoder. Indeed, the mediacodec loop cannot be killed yet at the decoder close function because it is still needed for the integrity of the picture still used in the pipeline.
-
Alexandre Janniaux authored
These functions will be used with the decoder_t object closed, but the p_sys still alive, and they are only using the p_sys object. No functional changes.
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
-
- Mar 02, 2021
-
-
François Cartegnie authored
-
François Cartegnie authored
-
François Cartegnie authored
Format change needs a restart, but when demuxer has been probed, we only need to handle restart/reprobing when switching variants.
-
François Cartegnie authored
-