mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-12 06:42:00 +00:00
[552/906] GstGLFilterApp: update for GstGLMeta
This commit is contained in:
parent
8ae1fd34e0
commit
61e2266d16
1 changed files with 22 additions and 10 deletions
|
@ -67,7 +67,7 @@ static void gst_gl_filter_app_get_property (GObject * object, guint prop_id,
|
||||||
static gboolean gst_gl_filter_app_set_caps (GstGLFilter * filter,
|
static gboolean gst_gl_filter_app_set_caps (GstGLFilter * filter,
|
||||||
GstCaps * incaps, GstCaps * outcaps);
|
GstCaps * incaps, GstCaps * outcaps);
|
||||||
static gboolean gst_gl_filter_app_filter (GstGLFilter * filter,
|
static gboolean gst_gl_filter_app_filter (GstGLFilter * filter,
|
||||||
GstGLBuffer * inbuf, GstGLBuffer * outbuf);
|
GstBuffer * inbuf, GstBuffer * outbuf);
|
||||||
static void gst_gl_filter_app_callback (gint width, gint height, guint texture,
|
static void gst_gl_filter_app_callback (gint width, gint height, guint texture,
|
||||||
gpointer stuff);
|
gpointer stuff);
|
||||||
|
|
||||||
|
@ -168,17 +168,29 @@ gst_gl_filter_app_set_caps (GstGLFilter * filter, GstCaps * incaps,
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_gl_filter_app_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
|
gst_gl_filter_app_filter (GstGLFilter * filter, GstBuffer * inbuf,
|
||||||
GstGLBuffer * outbuf)
|
GstBuffer * outbuf)
|
||||||
{
|
{
|
||||||
GstGLFilterApp *app_filter = GST_GL_FILTER_APP (filter);
|
GstGLFilterApp *app_filter = GST_GL_FILTER_APP (filter);
|
||||||
|
GstGLMeta *in_meta, *out_meta;
|
||||||
|
GstVideoMeta *in_v_meta;
|
||||||
|
|
||||||
|
in_meta = gst_buffer_get_gl_meta (inbuf);
|
||||||
|
out_meta = gst_buffer_get_gl_meta (outbuf);
|
||||||
|
in_v_meta = gst_buffer_get_video_meta (inbuf);
|
||||||
|
|
||||||
|
if (!in_meta || !out_meta || !in_v_meta) {
|
||||||
|
GST_ERROR ("A Buffer does not contain required GstGLMeta or GstVideoMeta");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (app_filter->clientDrawCallback) {
|
if (app_filter->clientDrawCallback) {
|
||||||
//blocking call, use a FBO
|
//blocking call, use a FBO
|
||||||
gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
|
gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
|
||||||
filter->fbo, filter->depthbuffer, outbuf->texture,
|
filter->fbo, filter->depthbuffer, out_meta->memory->tex_id,
|
||||||
app_filter->clientDrawCallback, inbuf->width, inbuf->height,
|
app_filter->clientDrawCallback, in_v_meta->width, in_v_meta->height,
|
||||||
inbuf->texture, 45, (gfloat) filter->width / (gfloat) filter->height,
|
in_meta->memory->tex_id, 45,
|
||||||
|
(gfloat) filter->width / (gfloat) filter->height,
|
||||||
0.1, 100, GST_GL_DISPLAY_PROJECTION_PERSPECTIVE,
|
0.1, 100, GST_GL_DISPLAY_PROJECTION_PERSPECTIVE,
|
||||||
app_filter->client_data);
|
app_filter->client_data);
|
||||||
}
|
}
|
||||||
|
@ -186,10 +198,10 @@ gst_gl_filter_app_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
|
||||||
else {
|
else {
|
||||||
//blocking call, use a FBO
|
//blocking call, use a FBO
|
||||||
gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
|
gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
|
||||||
filter->fbo, filter->depthbuffer, outbuf->texture,
|
filter->fbo, filter->depthbuffer, out_meta->memory->tex_id,
|
||||||
gst_gl_filter_app_callback, inbuf->width, inbuf->height, inbuf->texture,
|
gst_gl_filter_app_callback, in_v_meta->width, in_v_meta->height,
|
||||||
0, filter->width, 0, filter->height, GST_GL_DISPLAY_PROJECTION_ORTHO2D,
|
in_meta->memory->tex_id, 0, filter->width, 0, filter->height,
|
||||||
NULL);
|
GST_GL_DISPLAY_PROJECTION_ORTHO2D, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue