mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 05:56:14 +00:00
glupload: memcpy on raw data upload
Anything else requires keeping track of the GstVideoFrame mapping across possible multiple buffers to ensure correct data pointer usage.
This commit is contained in:
parent
19f2b3b882
commit
82c0189b28
1 changed files with 14 additions and 5 deletions
|
@ -782,7 +782,6 @@ static GstGLUploadReturn
|
||||||
_raw_data_upload_perform (gpointer impl, GstBuffer * buffer,
|
_raw_data_upload_perform (gpointer impl, GstBuffer * buffer,
|
||||||
GstBuffer ** outbuf)
|
GstBuffer ** outbuf)
|
||||||
{
|
{
|
||||||
GstGLMemory *in_tex[GST_GL_UPLOAD_MAX_PLANES] = { 0, };
|
|
||||||
struct RawUpload *raw = impl;
|
struct RawUpload *raw = impl;
|
||||||
int i;
|
int i;
|
||||||
GstVideoInfo *in_info = &raw->upload->priv->in_info;
|
GstVideoInfo *in_info = &raw->upload->priv->in_info;
|
||||||
|
@ -793,12 +792,22 @@ _raw_data_upload_perform (gpointer impl, GstBuffer * buffer,
|
||||||
GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
|
GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
|
||||||
max_planes *= GST_VIDEO_INFO_VIEWS (in_info);
|
max_planes *= GST_VIDEO_INFO_VIEWS (in_info);
|
||||||
|
|
||||||
gst_gl_memory_setup_wrapped (raw->upload->context,
|
/* FIXME: buffer pool */
|
||||||
&raw->upload->priv->in_info, NULL, raw->in_frame.data, in_tex);
|
|
||||||
|
|
||||||
*outbuf = gst_buffer_new ();
|
*outbuf = gst_buffer_new ();
|
||||||
|
gst_gl_memory_setup_buffer (raw->upload->context, NULL,
|
||||||
|
&raw->upload->priv->in_info, NULL, *outbuf);
|
||||||
|
|
||||||
for (i = 0; i < max_planes; i++) {
|
for (i = 0; i < max_planes; i++) {
|
||||||
gst_buffer_append_memory (*outbuf, (GstMemory *) in_tex[i]);
|
GstMemory *mem = gst_buffer_peek_memory (*outbuf, i);
|
||||||
|
GstMapInfo map_info;
|
||||||
|
|
||||||
|
gst_memory_map (mem, &map_info, GST_MAP_WRITE);
|
||||||
|
|
||||||
|
memcpy (map_info.data, raw->in_frame.data[i], map_info.size);
|
||||||
|
|
||||||
|
gst_memory_unmap (mem, &map_info);
|
||||||
|
|
||||||
|
gst_gl_memory_upload_transfer ((GstGLMemory *) mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GST_GL_UPLOAD_DONE;
|
return GST_GL_UPLOAD_DONE;
|
||||||
|
|
Loading…
Reference in a new issue