glupload: Ensure we still have a texture after upload_set_format()

gst_gl_upload_set_format() resets the upload, hence the texture.
So we need to ensure we have a texture after this call when
uploading.
This commit is contained in:
Nicolas Dufresne 2014-05-12 13:50:47 -04:00 committed by Tim-Philipp Müller
parent b70edbff15
commit 030fc8b7d0

View file

@ -343,6 +343,11 @@ gst_gl_upload_perform_with_buffer (GstGLUpload * upload, GstBuffer * buffer,
/* update the video info from the one updated by frame_map using video meta */ /* update the video info from the one updated by frame_map using video meta */
gst_gl_upload_set_format (upload, &upload->priv->frame.info); gst_gl_upload_set_format (upload, &upload->priv->frame.info);
if (!upload->priv->tex_id)
gst_gl_context_gen_texture (upload->context, &upload->priv->tex_id,
GST_VIDEO_FORMAT_RGBA, GST_VIDEO_INFO_WIDTH (&upload->in_info),
GST_VIDEO_INFO_HEIGHT (&upload->in_info));
if (!gst_gl_upload_perform_with_data (upload, upload->priv->tex_id, if (!gst_gl_upload_perform_with_data (upload, upload->priv->tex_id,
upload->priv->frame.data)) { upload->priv->frame.data)) {
return FALSE; return FALSE;
@ -400,6 +405,11 @@ _do_upload_for_meta (GstGLUpload * upload, GstVideoGLTextureUploadMeta * meta)
/* update the video info from the one updated by frame_map using video meta */ /* update the video info from the one updated by frame_map using video meta */
gst_gl_upload_set_format (upload, &upload->priv->frame.info); gst_gl_upload_set_format (upload, &upload->priv->frame.info);
if (!upload->priv->tex_id)
gst_gl_context_gen_texture (upload->context, &upload->priv->tex_id,
GST_VIDEO_FORMAT_RGBA, GST_VIDEO_INFO_WIDTH (&upload->in_info),
GST_VIDEO_INFO_HEIGHT (&upload->in_info));
ret = _gst_gl_upload_perform_with_data_unlocked (upload, ret = _gst_gl_upload_perform_with_data_unlocked (upload,
upload->out_tex->tex_id, frame.data); upload->out_tex->tex_id, frame.data);