Ce que je veux faire est simple. Activez les pastilles de lavabo sur le mélangeur vidéo:Gstreamer: Comment régler videomixer sink_0 caps en C
/* Manually link the mixer, which has "Request" pads */
mixer_sink_pad_template = gst_element_class_get_pad_template(GST_ELEMENT_GET_CLASS(videomixer), "sink_%u");
mixer_sink_pad = gst_element_request_pad(videomixer, mixer_sink_pad_template, NULL, NULL);
sink_pad = gst_element_get_static_pad(videomixer, "src");
gst_pad_link(sink_pad, mixer_sink_pad);
Ensuite, définissez alpha, xpos, ypos, par ex.
g_object_set(videomixer, "sink_0::alpha", 0.5, NULL);
Mais cela ne fonctionne pas.
(orig_code:22527): GLib-GObject-WARNING **: g_object_set_valist: object class 'GstVideoMixer2' has no property named 'sink_0::alpha'
Je suis en train de comprendre la syntaxe pour obtenir le code C pour définir sink_0 de videomixer & propriétés pad sink_1.
Quelqu'un peut-il souligner à quel point c'est facile?
Vous ne pouvez pas définir la propriété du récepteur via le videomixer. Essayez 'GstPad * sink_0 = gst_element_get_static_pad (videomixer," sink_0 ");' alors 'g_object_set (sink_0," alpha ", 0.5, NULL);' – Martin
Merci Martin. Si je place le premier de cette façon, il semble fonctionner, c'est-à-dire compile et pas d'avertissement d'exécution, mais (dans ce cas) le xpos ne change pas. Si j'essaie de définir la seconde, il donne un avertissement ou des erreurs de segmentation (en fonction de la présence du premier gst_element_get_static_pad). Cela me fait me demander si le code qui demande les pads (montré ci-dessus) est incorrect, car il fait quelque chose de similaire. Les suggestions sont les bienvenues. Je vais creuser dans les blocs de requête. – Raydude