Gstreamer 如何在Windows中使用d3dvideosink在部分窗口中显示视频

Gstreamer 如何在Windows中使用d3dvideosink在部分窗口中显示视频,gstreamer,hwnd,Gstreamer,Hwnd,我编写了以下gstreamer函数,用于在Windows中的Win32窗口(HWND)上显示videotestsrc视频。对于给定的“win”窗口句柄,此函数工作正常,并在整个窗口中显示videotestsrc void runGstPipe(HWND win) { GstElement *pipeline = gst_parse_launch ("rtspsrc location=\"...\" ! decodebin ! d3dvideosink name=s

我编写了以下gstreamer函数,用于在Windows中的Win32窗口(HWND)上显示videotestsrc视频。对于给定的“win”窗口句柄,此函数工作正常,并在整个窗口中显示videotestsrc

void runGstPipe(HWND win)
{
    GstElement *pipeline =
    gst_parse_launch
        ("rtspsrc location=\"...\" ! decodebin ! d3dvideosink name=sink", NULL);

    GstElement *sink = gst_bin_get_by_name(GST_BIN(pipeline), "sink");
    gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), (guintptr)win);
    GstStateChangeReturn sret = gst_element_set_state(pipeline,
            GST_STATE_PLAYING);
}
接下来,我尝试增强上述功能,使用以下选项在窗口“win”的一部分显示videotestsrc

a) 通过使用带渲染矩形选项的glimagesink,如下所示

"rtspsrc location=\"...\" ! decodebin ! glvideosink render-rectange=\"<50, 50, 200, 150>\" name=sink"
gst_video_overlay_set_render_rectangle(GST_VIDEO_OVERLAY(sink), 50, 50, 200, 150);
上述两个选项均未更改渲染区域。i、 例如,videotestsrc仍然占据整个窗口,而不是给定的坐标。如果我能得到任何建议,我将不胜感激