我有一个以 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
我怎样才能做到这一点 ?