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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
unsigned long winid = XtWindow(myDrawingArea);
-liaison du sink et du drawingArea :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(vsink), winid);
où "vsink" correspond à mon sink vidéo et "winid" au XID de mon drawingArea.

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 :
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
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.

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