J'ai un pipeline gstreamer qui se termine par un élément xvimagesink. Pour avoir la vidéo affichée dans une fenêtre particulière , je peux utiliser le x_oerlay_interface:Ciblage du widget enfant Qt avec gstreamer
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(xvsink), winid);
Jusqu'à présent, si bon. Cependant, cela ne fonctionne que si winid est l'idée d'une fenêtre de haut niveau, ce qui n'est pas le cas du widget enfant. Disons que j'ai:
- Un widget dialogue DialogWidget
- Un widget vidéo VideoWidget, qui est un enfant de DialogWidget.
Si j'utilise DialogWidget->winId()
, la vidéo s'affiche correctement.
Si j'utilise « VideoWidget-> winId() », je reçois un message de l'extension Xv me disant des choses comme
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
Je voudrais avoir une fenêtre redimensionnable avec des boutons de commandes, etc .., et à l'intérieur cette fenêtre, une fenêtre d'affichage vidéo ou un widget ou tout ce qui est une cible appropriée pour
gst_x_overlay_set_xwindow_id
Comment puis-je faire cela?