[vlc-devel] [PATCH 11/19] vout: opengl: keep the number of bound planes in picture_sys_t
Steve Lhomme
robux4 at ycbcr.xyz
Thu Jul 30 14:16:52 CEST 2020
---
modules/video_output/opengl/interop_sw.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/modules/video_output/opengl/interop_sw.c b/modules/video_output/opengl/interop_sw.c
index a7da464b92a..d65345b723a 100644
--- a/modules/video_output/opengl/interop_sw.c
+++ b/modules/video_output/opengl/interop_sw.c
@@ -34,6 +34,7 @@
typedef struct
{
PFNGLDELETEBUFFERSPROC DeleteBuffers;
+ int i_planes;
GLuint buffers[PICTURE_PLANE_MAX];
size_t bytes[PICTURE_PLANE_MAX];
} picture_sys_t;
@@ -54,7 +55,7 @@ pbo_picture_destroy(picture_t *pic)
{
picture_sys_t *picsys = pic->p_sys;
- picsys->DeleteBuffers(pic->i_planes, picsys->buffers);
+ picsys->DeleteBuffers(picsys->i_planes, picsys->buffers);
free(picsys);
}
@@ -73,14 +74,15 @@ pbo_picture_create(const struct vlc_gl_interop *interop)
free(picsys);
return NULL;
}
+ picsys->i_planes = pic->i_planes;
- interop->vt->GenBuffers(pic->i_planes, picsys->buffers);
+ interop->vt->GenBuffers(picsys->i_planes, picsys->buffers);
picsys->DeleteBuffers = interop->vt->DeleteBuffers;
- assert(pic->i_planes > 0
- && (unsigned) pic->i_planes == interop->tex_count);
+ assert(picsys->i_planes > 0
+ && (unsigned) picsys->i_planes == interop->tex_count);
- for (int i = 0; i < pic->i_planes; ++i)
+ for (int i = 0; i < picsys->i_planes; ++i)
{
const plane_t *p = &pic->p[i];
@@ -102,7 +104,7 @@ pbo_data_alloc(const struct vlc_gl_interop *interop, picture_t *pic)
interop->vt->GetError();
- for (int i = 0; i < pic->i_planes; ++i)
+ for (int i = 0; i < picsys->i_planes; ++i)
{
interop->vt->BindBuffer(GL_PIXEL_UNPACK_BUFFER, picsys->buffers[i]);
interop->vt->BufferData(GL_PIXEL_UNPACK_BUFFER, picsys->bytes[i], NULL,
@@ -155,7 +157,7 @@ tc_pbo_update(const struct vlc_gl_interop *interop, GLuint *textures,
picture_sys_t *p_sys = display_pic->p_sys;
priv->pbo.display_idx = (priv->pbo.display_idx + 1) % PBO_DISPLAY_COUNT;
- for (int i = 0; i < pic->i_planes; i++)
+ for (int i = 0; i < p_sys->i_planes; i++)
{
GLsizeiptr size = pic->p[i].i_lines * pic->p[i].i_pitch;
const GLvoid *data = pic->p[i].p_pixels;
--
2.26.2
More information about the vlc-devel
mailing list