struct vout_display_sys_t
{
- vout_display_opengl_t vgl;
+ vout_display_opengl_t *vgl;
vout_window_t *window;
vlc_gl_t *gl;
goto error;
/* Initialize video display */
- if (vout_display_opengl_Init (&sys->vgl, &vd->fmt, sys->gl))
+ sys->vgl = vout_display_opengl_New (&vd->fmt, sys->gl);
+ if (!sys->vgl)
goto error;
vd->sys = sys;
vout_display_t *vd = (vout_display_t *)obj;
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Clean (&sys->vgl);
+ vout_display_opengl_Delete (sys->vgl);
vlc_gl_Destroy (sys->gl);
vout_display_DeleteWindow (vd, sys->window);
free (sys);
vout_display_sys_t *sys = vd->sys;
if (!sys->pool)
- sys->pool = vout_display_opengl_GetPool (&sys->vgl);
+ sys->pool = vout_display_opengl_GetPool (sys->vgl);
(void) count;
return sys->pool;
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Prepare (&sys->vgl, pic);
+ vout_display_opengl_Prepare (sys->vgl, pic);
(void)subpicture;
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Display (&sys->vgl, &vd->source);
+ vout_display_opengl_Display (sys->vgl, &vd->source);
picture_Release (pic);
(void)subpicture;
}
UIView * container;
vlc_gl_t gl;
- vout_display_opengl_t vgl;
+ vout_display_opengl_t *vgl;
picture_pool_t *pool;
picture_t *current;
sys->gl.getProcAddress = NULL;
sys->gl.sys = sys;
- if (vout_display_opengl_Init(&sys->vgl, &vd->fmt, &sys->gl))
+ sys->vgl = vout_display_opengl_New(&vd->fmt, &sys->gl);
+ if (!sys->vgl)
{
sys->gl.sys = NULL;
goto error;
[sys->glView release];
if (sys->gl.sys != NULL)
- vout_display_opengl_Clean(&sys->vgl);
+ vout_display_opengl_Delete(sys->vgl);
free (sys);
}
VLC_UNUSED(requested_count);
if (!sys->pool)
- sys->pool = vout_display_opengl_GetPool (&sys->vgl);
+ sys->pool = vout_display_opengl_GetPool (sys->vgl);
assert(sys->pool);
return sys->pool;
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Prepare( &sys->vgl, pic );
+ vout_display_opengl_Prepare( sys->vgl, pic );
(void)subpicture;
}
static void PictureDisplay(vout_display_t *vd, picture_t *pic, subpicture_t *subpicture)
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Display(&sys->vgl, &vd->fmt );
+ vout_display_opengl_Display(sys->vgl, &vd->fmt );
picture_Release (pic);
sys->has_first_frame = true;
(void)subpicture;
vout_window_t *embed;
vlc_gl_t gl;
- vout_display_opengl_t vgl;
+ vout_display_opengl_t *vgl;
picture_pool_t *pool;
picture_t *current;
sys->gl.getProcAddress = NULL;
sys->gl.sys = sys;
- if (vout_display_opengl_Init(&sys->vgl, &vd->fmt, &sys->gl))
+ sys->vgl = vout_display_opengl_New(&vd->fmt, &sys->gl);
+ if (!sys->vgl)
{
sys->gl.sys = NULL;
goto error;
[sys->glView release];
if (sys->gl.sys != NULL)
- vout_display_opengl_Clean(&sys->vgl);
+ vout_display_opengl_Delete(sys->vgl);
if (sys->embed)
vout_display_DeleteWindow(vd, sys->embed);
VLC_UNUSED(requested_count);
if (!sys->pool)
- sys->pool = vout_display_opengl_GetPool (&sys->vgl);
+ sys->pool = vout_display_opengl_GetPool (sys->vgl);
assert(sys->pool);
return sys->pool;
}
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Prepare( &sys->vgl, pic );
+ vout_display_opengl_Prepare( sys->vgl, pic );
(void)subpicture;
}
{
vout_display_sys_t *sys = vd->sys;
[sys->glView setVoutFlushing:YES];
- vout_display_opengl_Display(&sys->vgl, &vd->fmt );
+ vout_display_opengl_Display(sys->vgl, &vd->fmt );
[sys->glView setVoutFlushing:NO];
picture_Release (pic);
sys->has_first_frame = true;
if (hasFirstFrame) {
// This will lock gl.
- vout_display_opengl_Display( &vd->sys->vgl, &vd->source );
+ vout_display_opengl_Display( vd->sys->vgl, &vd->source );
}
else
glClear(GL_COLOR_BUFFER_BIT);
HDC hGLDC;
HGLRC hGLRC;
vlc_gl_t gl;
- vout_display_opengl_t vgl;
+ vout_display_opengl_t *vgl;
#endif
#ifdef MODULE_NAME_IS_direct2d
sys->gl.sys = vd;
video_format_t fmt = vd->fmt;
- if (vout_display_opengl_Init(&sys->vgl, &fmt, &sys->gl))
+ sys->vgl = vout_display_opengl_New(&fmt, &sys->gl);
+ if (!sys->vgl)
goto error;
vout_display_info_t info = vd->info;
vout_display_t *vd = (vout_display_t *)object;
vout_display_sys_t *sys = vd->sys;
- if (sys->vgl.gl)
- vout_display_opengl_Clean(&sys->vgl);
+ if (sys->vgl)
+ vout_display_opengl_Delete(sys->vgl);
if (sys->hGLDC && sys->hGLRC)
wglMakeCurrent(NULL, NULL);
VLC_UNUSED(count);
if (!sys->pool)
- sys->pool = vout_display_opengl_GetPool(&sys->vgl);
+ sys->pool = vout_display_opengl_GetPool(sys->vgl);
return sys->pool;
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Prepare(&sys->vgl, picture);
+ vout_display_opengl_Prepare(sys->vgl, picture);
VLC_UNUSED(subpicture);
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Display(&sys->vgl, &vd->source);
+ vout_display_opengl_Display(sys->vgl, &vd->source);
picture_Release(picture);
VLC_UNUSED(subpicture);
# define VLCGL_TYPE VLCGL_RGB_TYPE
#endif
+struct vout_display_opengl_t {
+ vlc_gl_t *gl;
+
+ video_format_t fmt;
+
+ int tex_pixel_size;
+ int tex_width;
+ int tex_height;
+
+ GLuint texture[VLCGL_TEXTURE_COUNT];
+ uint8_t *buffer[VLCGL_TEXTURE_COUNT];
+
+ picture_pool_t *pool;
+};
+
static inline int GetAlignedSize(unsigned size)
{
/* Return the smallest larger or equal power of 2 */
return ((align >> 1) == size) ? size : align;
}
-int vout_display_opengl_Init(vout_display_opengl_t *vgl,
- video_format_t *fmt,
- vlc_gl_t *gl)
+vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt,
+ vlc_gl_t *gl)
{
+ vout_display_opengl_t *vgl = malloc(sizeof(*vgl));
+ if (!vgl)
+ return NULL;
+
vgl->gl = gl;
/* Find the chroma we will use and update fmt */
vlc_gl_Unlock(vgl->gl);
}
- return VLC_SUCCESS;
+ return vgl;
}
-void vout_display_opengl_Clean(vout_display_opengl_t *vgl)
+void vout_display_opengl_Delete(vout_display_opengl_t *vgl)
{
/* */
if (!vlc_gl_Lock(vgl->gl)) {
for (int i = 0; i < VLCGL_TEXTURE_COUNT; i++)
free(vgl->buffer[i]);
}
+ free(vgl);
}
int vout_display_opengl_ResetTextures(vout_display_opengl_t *vgl)
# endif
#endif
-typedef struct {
- vlc_gl_t *gl;
+typedef struct vout_display_opengl_t vout_display_opengl_t;
- video_format_t fmt;
-
- int tex_pixel_size;
- int tex_width;
- int tex_height;
-
- GLuint texture[VLCGL_TEXTURE_COUNT];
- uint8_t *buffer[VLCGL_TEXTURE_COUNT];
-
- picture_pool_t *pool;
-} vout_display_opengl_t;
-
-int vout_display_opengl_Init(vout_display_opengl_t *vgl,
- video_format_t *fmt, vlc_gl_t *gl);
-void vout_display_opengl_Clean(vout_display_opengl_t *vgl);
+vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, vlc_gl_t *gl);
+void vout_display_opengl_Delete(vout_display_opengl_t *vgl);
int vout_display_opengl_ResetTextures(vout_display_opengl_t *vgl);
picture_pool_t *vout_display_opengl_GetPool(vout_display_opengl_t *vgl);
GLXContext ctx;
vlc_gl_t gl;
- vout_display_opengl_t vgl;
+ vout_display_opengl_t *vgl;
picture_pool_t *pool; /* picture pool */
};
sys->gl.getProcAddress = GetProcAddress;
sys->gl.sys = sys;
- if (vout_display_opengl_Init (&sys->vgl, &vd->fmt, &sys->gl))
+ sys->vgl = vout_display_opengl_New (&vd->fmt, &sys->gl);
+ if (!sys->vgl)
{
sys->gl.sys = NULL;
goto error;
Display *dpy = sys->display;
if (sys->gl.sys != NULL)
- vout_display_opengl_Clean (&sys->vgl);
+ vout_display_opengl_Delete (sys->vgl);
if (sys->ctx != NULL)
{
(void)requested_count;
if (!sys->pool)
- sys->pool = vout_display_opengl_GetPool (&sys->vgl);
+ sys->pool = vout_display_opengl_GetPool (sys->vgl);
return sys->pool;
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Prepare (&sys->vgl, pic);
+ vout_display_opengl_Prepare (sys->vgl, pic);
(void)subpicture;
}
{
vout_display_sys_t *sys = vd->sys;
- vout_display_opengl_Display (&sys->vgl, &vd->source);
+ vout_display_opengl_Display (sys->vgl, &vd->source);
picture_Release (pic);
(void)subpicture;
}