Salut,
je suis entrain de réaliser une application sur la base de GStreamer pour lire des fichiers vidéo.
J'utilise un "playbin" afin reconnaître le format vidéo et que GStreamer choisisse ainsi lui-même le décodeur adapté au format vidéo. Ensuite j'utilise un sink de type "directdrawsink".
Pour afficher la vidéo, je veux relier le sink "directdrawsink" à un drawingArea de XWindow. Pour ce la, je réalise les opérations suivantes :
- récupération du XID de mon drawing area :
-liaison du sink et du drawingArea :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unsigned long winid = XtWindow(myDrawingArea);
où "vsink" correspond à mon sink vidéo et "winid" au XID de mon drawingArea.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(vsink), winid);
Mon problème est que lorsque je demande la lecture du fichier vidéo, je me rend compte que le lien n'est pas réalisé et me retourne un message d'erreur :
je pense que mon problème vient du XID de ma widget drawingArea qui n'est pas valide pour GStreamer. Cependant, je ne sais pas comment récupérer autrement le XID ou le window_handle d'un widget sous XWindow.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 domain=1048 code=10 message="ailed to set the set the cooperative level error=DDERR_INVALID_PARAMS" gstdirectdrawsink.c (1142) /dec/vbin/vsink
Auriez-vous une idée sur mon problème ?
Y-at-il d'autres méthodes pour récupérer l'identifiant d'un widget XWindow ?
Merci pour vos réponses,
Bouncebounce
Partager