2012-07-27 10 views
5

Próbuję napisać wtyczkę gstreamer w C++, używając powiązań GStreamermm. Teraz jest dobry poradnik dla pisarzy wtyczek (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/), a w Internecie są różne przykłady i szablony, ale dla gstreamermm jest bardzo mało ilość dokumentacji.Wtyczka GStreamer z GStreamermm (C++)

Wiem, że mógłbym tylko użyć kombinacji C i C++, ale używanie wiązań C++ wydaje się dużo bardziej eleganckie.

Po prostu "tłumaczenie" przykładów znalezionych w gstreamer pwg do gstreamermm jest swego rodzaju ślepym zaułkiem; gstreamer wymaga użycia kilku makr do definiowania typów, których nie widzę do natychmiastowego tłumaczenia na gstreamermm. Dodatkowo mam tylko niewielkie doświadczenie z gstreamerem i absolutnie żadne doświadczenie z gobj (jak dotąd).

Czy ktoś jest w stanie ustawić mnie na właściwej drodze? Nawet najdrobniejszy przykład lub wyjaśnienie by się udało.

Dzięki

+1

Być może pytanie w kanale #gstreamer na irc.freenode.net może dać ci odpowiedź. Jeśli to zrobisz, byłoby wspaniale, gdybyś odpowiedział na to pytanie. – joar

+0

Zobacz odpowiedź na [moje pytanie] (http://stackoverflow.com/questions/9609201/gstreamermm-creating-a-new-element-type-in-plugin-by-deriving- from-gstele). Możesz być zainteresowany moją łatką. – peper0

Odpowiedz

3

Prosiłem to na liście mailingowej gtkmm kilka dni temu, i dostałem następującą odpowiedź (Jose Alburquerque):

Obecnie jedynymi wtyczek mieć (prawdopodobnie nieistniejącą) możliwość rozwijania za pomocą gstreamermm są te, które są prywatne dla aplikacji. Jeśli to możliwe, te wtyczki będą zarejestrowane przy użyciu metody Gst :: Plugin :: register_static() [1], a nie procesu, który opisałeś powyżej.

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

Teoretycznie, można by rozszerzyć jednej z klas bazowych gstreamermm [2], a połączenia GST :: ElementFactory :: register_element() [3], metoda w GST :: Plugin :: Slot Slot (wywołanie zwrotne), aby utworzyć fabrykę elementów, która generuje te elementy, . Ta fabryka może następnie zostać dodana do rejestru za pomocą Gst :: Registry :: add_feature() [4] w gnieździe Gst :: Plugin :: SlotInit z .

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

[3] Sposób GST :: ElementFactory :: register_element() to metoda , który nie jest jeszcze wprowadzone ale owinąć gst_element_register() funkcji. To byłby element nadchodzącego wydania.

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

Nie Przetestowałem to i tak naprawdę nie wiem dokładnie, jak to działa (lub jeśli to rzeczywiście będzie), ale to jak będę próbować, gdybym musiał. Jednakże, Myślę, że obecnie łatwiej jest napisać wtyczkę w C, ale to jest tylko kwestia ułatwienia.