xvimagesink要素で終わるgstreamerパイプラインがあります。ビデオを特定のウィンドウに表示するには、x_oerlay_interfaceを使用できます。
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(xvsink), winid);
ここまでは順調ですね。ただし、これは、winidがトップレベルウィンドウのアイデアである場合にのみ機能します。これは、子ウィジェットの場合ではありません。私が持っているとしましょう:
- ダイアログウィジェットDialogWidget
- DialogWidgetの子であるビデオウィジェットVideoWidget。
を使用する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
どうやってやるの ?