使用 gstreamer 定位 Qt 子部件
我有一个以 xvimagesink 元素结尾的 gstreamer 管道。为了让视频显示在特定的窗口中,我可以使用 x_oerlay_interface :
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(xvsink), winid);
到目前为止,一切都很好。然而,它仅在 winid 是顶级窗口的情况下才有效,而子窗口小部件则不然。假设我有:
- 一个对话框小部件 DialogWidget
- 一个视频小部件 VideoWidget,它是 DialogWidget 的子项。
如果我使用 DialogWidget->winId()
,则视频会正确显示。
如果我使用“VideoWidget->winId()”,那么我会收到来自 Xv 扩展的消息,告诉我一些事情,比如
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 3 (X_GetWindowAttributes)
Resource id: 0x40000d5
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 2 (X_ChangeWindowAttributes)
Resource id: 0x40000d5
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 55 (X_CreateGC)
Resource id: 0x40000d5
X Error: BadGC (invalid GC parameter) 13
Extension: 132 (Uknown extension)
Minor opcode: 19 (Unknown request)
Resource id: 0x40000d5
X Error: BadGC (invalid GC parameter) 13
Extension: 132 (Uknown extension)
Minor opcode: 19 (Unknown request)
Resource id: 0x40000d5
我想要一个带有控件按钮等的可调整大小的窗口,并且在此窗口中,有一个视频显示窗口或小部件或任何适合我的目标的东西
gst_x_overlay_set_xwindow_id
我该怎么做?
I have a gstreamer pipeline which ends with a xvimagesink element. To have the video displayed in a particular window, I can use the x_oerlay_interface :
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(xvsink), winid);
So far, so good. However, it only works if winid is the idea of a top level window, which is not the case of child widget. Let's say I have :
- A dialog widget DialogWidget
- A video widget VideoWidget, which is a child of DialogWidget.
If I use DialogWidget->winId()
, then the video displays correctly.
If I use 'VideoWidget->winId()', then I receive message from the Xv extension telling me things like
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 3 (X_GetWindowAttributes)
Resource id: 0x40000d5
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 2 (X_ChangeWindowAttributes)
Resource id: 0x40000d5
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 55 (X_CreateGC)
Resource id: 0x40000d5
X Error: BadGC (invalid GC parameter) 13
Extension: 132 (Uknown extension)
Minor opcode: 19 (Unknown request)
Resource id: 0x40000d5
X Error: BadGC (invalid GC parameter) 13
Extension: 132 (Uknown extension)
Minor opcode: 19 (Unknown request)
Resource id: 0x40000d5
I would like to have a resizable window with controls buttons etc.., and within this window, a video display window or widget or whatever that is a suitable target for
gst_x_overlay_set_xwindow_id
How can I do that ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实上它正在与 QWidget 一起工作。但是,之后需要调用
QApplication::syncX
对
WinId
的调用:It is in fact working with QWidget. However, a call to
QApplication::syncX
is needed AFTERthe call to
WinId
: