У меня есть конвейер gstreamer, который заканчивается элементом xvimagesink. Чтобы видео отображалось в определенном окне , я могу использовать 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
Как я могу это сделать?