GStreamer d3dvideosink覆盖重绘闪烁

时间:2018-08-01 12:32:57

标签: qt gstreamer direct3d flicker

关于 d3dvideosink ,我遇到了一个长期存在的问题。

我的GStreamer管道是使用Qt / C ++中的GStreamer SDK 1.14.2编写的,看起来像这样: videotestsrc-> d3dvideosink

我使用gst_video_overlay_set_window_handle将接收器输出放置在相应的QWidget上(使用WId QWidget::winId() const)。

该流按预期工作,但是每当小部件(或任何父级小部件)进行重新绘制时(例如,在调整大小时),都会产生闪烁。

Flicker

如何配置小部件/管道/ d3dvideosink / ...以消除闪烁?

P.S。使用glimagesink代替d3dvideosink可以工作,但是性能较低。

1 个答案:

答案 0 :(得分:0)

禁用Qt重新绘制窗口。为此:

  1. setAttribute(Qt :: WA_PaintOnScreen);
  2. 重载paintEngine()以返回nullptr。