diff options
author | Seungha Yang <seungha@centricular.com> | 2020-06-12 19:44:01 +0900 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-06-16 10:49:02 +0000 |
commit | 73b39407a6b6cc0e9a9cea81cd39545dc4aacd6b (patch) | |
tree | 77f38481bbcebb4f20892cd8f72e26a44abc4b6b | |
parent | 4471788e4a123d0d6cba33dc9e657af9c234f623 (diff) | |
download | gstreamer-plugins-bad-73b39407a6b6cc0e9a9cea81cd39545dc4aacd6b.tar.gz |
d3d11videosink: Ensure shader resource view of fallback buffer
SRV must be configured for color conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339>
-rw-r--r-- | sys/d3d11/gstd3d11videosink.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/d3d11/gstd3d11videosink.c b/sys/d3d11/gstd3d11videosink.c index 2cf4611de..3ada96fe9 100644 --- a/sys/d3d11/gstd3d11videosink.c +++ b/sys/d3d11/gstd3d11videosink.c @@ -740,6 +740,8 @@ gst_d3d11_video_sink_upload_frame (GstD3D11VideoSink * self, GstBuffer * inbuf, gboolean ret; gint i; + GST_LOG_OBJECT (self, "Copy to fallback buffer"); + if (!gst_video_frame_map (&in_frame, &self->info, inbuf, GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF)) goto invalid_buffer; @@ -846,6 +848,18 @@ gst_d3d11_video_sink_show_frame (GstVideoSink * sink, GstBuffer * buf) return GST_FLOW_ERROR; } + for (i = 0; i < gst_buffer_n_memory (render_buf); i++) { + GstD3D11Memory *dmem; + + dmem = (GstD3D11Memory *) gst_buffer_peek_memory (render_buf, i); + if (!gst_d3d11_memory_ensure_shader_resource_view (dmem)) { + GST_ERROR_OBJECT (self, "fallback shader resource view is unavailable"); + gst_buffer_unref (render_buf); + + return GST_FLOW_ERROR; + } + } + if (!gst_d3d11_video_sink_upload_frame (self, buf, render_buf)) { GST_ERROR_OBJECT (self, "cannot upload frame"); gst_buffer_unref (render_buf); |