mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
[537/906] GstGLFilterReflectedScreen: update for GstGLMeta
This commit is contained in:
parent
5402a43d80
commit
d4045e7699
1 changed files with 19 additions and 7 deletions
|
@ -65,7 +65,7 @@ static void gst_gl_filter_reflected_screen_get_property (GObject * object,
|
||||||
guint prop_id, GValue * value, GParamSpec * pspec);
|
guint prop_id, GValue * value, GParamSpec * pspec);
|
||||||
|
|
||||||
static gboolean gst_gl_filter_reflected_screen_filter (GstGLFilter * filter,
|
static gboolean gst_gl_filter_reflected_screen_filter (GstGLFilter * filter,
|
||||||
GstGLBuffer * inbuf, GstGLBuffer * outbuf);
|
GstBuffer * inbuf, GstBuffer * outbuf);
|
||||||
|
|
||||||
static void gst_gl_filter_reflected_screen_draw_background ();
|
static void gst_gl_filter_reflected_screen_draw_background ();
|
||||||
static void gst_gl_filter_reflected_screen_draw_floor ();
|
static void gst_gl_filter_reflected_screen_draw_floor ();
|
||||||
|
@ -208,22 +208,34 @@ gst_gl_filter_reflected_screen_get_property (GObject * object, guint prop_id,
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_gl_filter_reflected_screen_filter (GstGLFilter * filter,
|
gst_gl_filter_reflected_screen_filter (GstGLFilter * filter,
|
||||||
GstGLBuffer * inbuf, GstGLBuffer * outbuf)
|
GstBuffer * inbuf, GstBuffer * outbuf)
|
||||||
{
|
{
|
||||||
GstGLFilterReflectedScreen *reflected_screen_filter =
|
GstGLFilterReflectedScreen *reflected_screen_filter =
|
||||||
GST_GL_FILTER_REFLECTED_SCREEN (filter);
|
GST_GL_FILTER_REFLECTED_SCREEN (filter);
|
||||||
|
GstGLMeta *in_meta, *out_meta;
|
||||||
|
GstVideoMeta *in_v_meta;
|
||||||
|
|
||||||
if (reflected_screen_filter->aspect == 0.0)
|
if (reflected_screen_filter->aspect == 0.0)
|
||||||
reflected_screen_filter->aspect =
|
reflected_screen_filter->aspect =
|
||||||
(gfloat) (filter->width) / (gfloat) (filter->height);
|
(gfloat) (filter->width) / (gfloat) (filter->height);
|
||||||
|
|
||||||
|
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_WARNING ("A buffer does not contain required GstGLMeta or"
|
||||||
|
" GstVideoMeta");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
//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_reflected_screen_callback, inbuf->width, inbuf->height,
|
gst_gl_filter_reflected_screen_callback, in_v_meta->width,
|
||||||
inbuf->texture, reflected_screen_filter->fovy,
|
in_v_meta->height, in_meta->memory->tex_id,
|
||||||
reflected_screen_filter->aspect, reflected_screen_filter->znear,
|
reflected_screen_filter->fovy, reflected_screen_filter->aspect,
|
||||||
reflected_screen_filter->zfar, GST_GL_DISPLAY_PROJECTION_PERSPECTIVE,
|
reflected_screen_filter->znear, reflected_screen_filter->zfar,
|
||||||
|
GST_GL_DISPLAY_PROJECTION_PERSPECTIVE,
|
||||||
(gpointer) reflected_screen_filter);
|
(gpointer) reflected_screen_filter);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue