[vlc-commits] opengl: simplify renderer format

Romain Vimont git at videolan.org
Wed May 20 14:55:39 CEST 2020


vlc | branch: master | Romain Vimont <rom1v at videolabs.io> | Tue Mar 10 17:04:24 2020 +0100| [8b0e70ee4f2a6553bcdc85f9cb92ccd351ccd0f6] | committer: Alexandre Janniaux

opengl: simplify renderer format

The interop may modify its own copy of the video_format_t. These changes
must be reported to the core (by writing to the provided
video_format_t).

But as a hack, the Android interop currently flips the orientation to
avoid a vertical flip in the renderer, since it provides its own
transform matrix. This change must not be reported to the core (the core
must not flip the input), so the orientation change is reverted. A
further refactor will remove this hack later.

Meanwhile, handle the format to report to the core outside of the
renderer, so that the renderer is not involved in this hack. This paves
the way to pass only the interop to the renderer, without an additional
video_format_t instance.

Signed-off-by: Alexandre Janniaux <ajanni at videolabs.io>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8b0e70ee4f2a6553bcdc85f9cb92ccd351ccd0f6
---

 modules/video_output/opengl/renderer.c    | 5 +----
 modules/video_output/opengl/vout_helper.c | 7 ++++++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/modules/video_output/opengl/renderer.c b/modules/video_output/opengl/renderer.c
index 82fba1675a..3a87627c0b 100644
--- a/modules/video_output/opengl/renderer.c
+++ b/modules/video_output/opengl/renderer.c
@@ -504,10 +504,7 @@ vlc_gl_renderer_New(vlc_gl_t *gl, const struct vlc_gl_api *api,
                                   sampler->var.OrientationMatrix);
     getViewpointMatrixes(renderer, interop->fmt.projection_mode);
 
-    /* Update the fmt to main program one */
-    renderer->fmt = interop->fmt;
-    /* The orientation is handled by the orientation matrix */
-    renderer->fmt.orientation = fmt->orientation;
+    renderer->fmt = *fmt;
 
     /* Texture size */
     for (unsigned j = 0; j < interop->tex_count; j++) {
diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c
index 1945f01e71..31b828d64a 100644
--- a/modules/video_output/opengl/vout_helper.c
+++ b/modules/video_output/opengl/vout_helper.c
@@ -187,7 +187,12 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
         return NULL;
     }
 
-    *fmt = renderer->fmt;
+    video_orientation_t orientation = fmt->orientation;
+    *fmt = vgl->interop->fmt;
+    /* The orientation is handled by the orientation matrix: from the core
+     * point of view, it does not change. */
+    fmt->orientation = orientation;
+
     if (subpicture_chromas) {
         *subpicture_chromas = gl_subpicture_chromas;
     }



More information about the vlc-commits mailing list