Commit 28bd9dfe authored by Romain Vimont's avatar Romain Vimont
Browse files

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.
parent 5fb8ae7e
......@@ -495,10 +495,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++) {
......
......@@ -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;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment