2012-07-27 6 views
5

Ich versuche, ein Gstreamer-Plugin in C++ zu schreiben, mit den GStreamermm Bindungen. Jetzt gibt es einen guten Leitfaden für Plugins-Autoren (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/), und im Internet gibt es verschiedene Beispiele und Vorlagen, aber für gstreamermm gibt es sehr wenig Umfang der Dokumentation.GStreamer-Plugin mit GStreamermm (C++)

Ich weiß, ich könnte nur auf eine Mischung aus C und C++ zurückgreifen, aber die Verwendung der C++ - Bindungen scheint so viel eleganter.

Einfach die im gstreamer pwg gefundenen Beispiele in gstreamerm zu übersetzen, ist eine Art Sackgasse; gstreamer erfordert die Verwendung einiger Makros zum Definieren von Typen, für die ich keine sofortige Übersetzung von gstreamermm sehen kann. Außerdem habe ich nur wenig Erfahrung mit gstreamer und absolut keine Erfahrung mit gobj (bisher).

Kann mich jemand auf die richtige Spur bringen? Selbst das kleinste Beispiel oder die Erklärung würde genügen.

Dank

+1

Wenn Sie im # gstreamer-Kanal auf irc.freenode.net nachfragen, erhalten Sie möglicherweise eine Antwort. Wenn Sie das tun, wäre es großartig, wenn Sie diese Frage damit beantworten würden. – joar

+0

Siehe Antwort auf [meine Frage] (http://stackoverflow.com/questions/9609201/gstreamermm-creating-a-new-element-type-in-plugin-by-deriving-from-gstele). Vielleicht interessiert dich mein Patch. – peper0

Antwort

3

ich dies auf der gtkmm Mailing-Liste ein paar Tagen gefragt haben, und bekam folgende Antwort (von José Alburquerque):

Derzeit sind die einzigen Plug-Ins haben eine (wahrscheinlich nicht existent) Möglichkeit, mit gstreamermm entwickelt zu werden, sind diejenigen, die private Anwendungen sind. Wenn das möglich ist, würden diese Plug-Ins mit der Gst :: Plugin :: register_static() [1] -Methode registriert werden und nicht der oben beschriebene Prozess.

[1] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Plugin.html#ac0728bb285ae1bed9298c0f9ea522ad9

In der Theorie würde man eine der gstreamermm Basisklassen erstrecken [2] und Aufruf der Gst ElementFactory :: :: register_element() [3] Methode im Gst :: Plugin :: SlotInit Slot (Callback), so dass eine Elementfactory erzeugt werden kann, die diese Elemente erzeugt . Diese Factory kann dann mit Gst :: Registry :: add_feature() [4] im selben Gst :: Plugin :: SlotInit-Slot zur Registry hinzugefügt werden.

[2] http://developer.gnome.org/gstreamermm/unstable/group__GstBaseClasses.html

[3] Die GST :: :: ElementFactory register_element() Methode ist eine Methode, die noch nicht umgesetzt wird, sondern würde wickelt den gst_element_register() Funktion. Das wäre Teil einer bevorstehenden Veröffentlichung.

[4] http://developer.gnome.org/gstreamermm/unstable/classGst_1_1Registry.html#ae1f9a1ddd60ef5a7e1f8cddf14ec404f

ich nicht getestet habe und nicht wirklich genau wissen, wie es funktionieren würde (oder wenn es würde tatsächlich), aber es ist, wie ich würde versuchen, wenn ich musste. Aber Ich denke, es ist einfacher, das Plug-in in C zu schreiben, aber das ist nur eine Frage der Dinge zu erleichtern.