From 73b39407a6b6cc0e9a9cea81cd39545dc4aacd6b Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Fri, 12 Jun 2020 19:44:01 +0900 Subject: [PATCH] d3d11videosink: Ensure shader resource view of fallback buffer SRV must be configured for color conversion Part-of: --- sys/d3d11/gstd3d11videosink.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sys/d3d11/gstd3d11videosink.c b/sys/d3d11/gstd3d11videosink.c index 2cf4611..3ada96f 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); -- 2.7.4