summaryrefslogtreecommitdiff
path: root/gst-libs/gst/gl/gstglfilter.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst/gl/gstglfilter.c')
-rw-r--r--gst-libs/gst/gl/gstglfilter.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
index cf744aa8e..d77dde9a2 100644
--- a/gst-libs/gst/gl/gstglfilter.c
+++ b/gst-libs/gst/gl/gstglfilter.c
@@ -1222,7 +1222,7 @@ gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
GstBuffer * outbuf)
{
GstGLFilterClass *filter_class;
- guint in_tex, out_tex;
+ guint in_tex, out_tex, out_tex_target;
GstVideoFrame gl_frame, out_frame;
GstVideoInfo gl_info;
gboolean ret;
@@ -1261,7 +1261,6 @@ gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
}
in_tex = *(guint *) gl_frame.data[0];
-
to_download |= !gst_is_gl_memory (gst_buffer_peek_memory (outbuf, 0));
if (!to_download)
@@ -1275,6 +1274,8 @@ gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
if (!to_download) {
out_tex = *(guint *) out_frame.data[0];
+ out_tex_target =
+ ((GstGLMemory *) gst_buffer_peek_memory (outbuf, 0))->tex_target;
} else {
GST_LOG ("Output Buffer does not contain correct memory, "
"attempting to wrap for download");
@@ -1285,6 +1286,7 @@ gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
gst_gl_download_set_format (filter->download, &out_frame.info);
out_tex = filter->out_tex_id;
+ out_tex_target = GL_TEXTURE_2D;
}
GST_DEBUG ("calling filter_texture with textures in:%i out:%i", in_tex,
@@ -1294,8 +1296,8 @@ gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
ret = filter_class->filter_texture (filter, in_tex, out_tex);
if (to_download) {
- if (!gst_gl_download_perform_with_data (filter->download, out_tex,
- out_frame.data)) {
+ if (!gst_gl_download_perform_with_data (filter->download,
+ out_tex, out_tex_target, out_frame.data)) {
GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND,
("%s", "Failed to download video frame"), (NULL));
ret = FALSE;