2012-07-27 17 views
5

Estoy tratando de escribir un plugin gstreamer en C++, usando los enlaces GStreamermm. Ahora, hay una buena guía de escritores de complementos (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/), y en la web hay varios ejemplos y plantillas, pero para gstreamermm, hay muy poco cantidad de documentación que sea.Plugin GStreamer con GStreamermm (C++)

Sé que podría recurrir a usar una mezcla de C y C++, pero el uso de enlaces C++ parece mucho más elegante.

Simplemente 'traducir' los ejemplos que se encuentran en el gstreamer pwg to gstreamermm es un callejón sin salida; gstreamer requiere el uso de bastantes macros para definir tipos, a lo que no puedo ver una traducción inmediata de gstreamermm. Además, tengo muy poca experiencia con gstreamer, y absolutamente ninguna experiencia con gobj (hasta ahora).

¿Alguien puede ponerme en el camino correcto? Incluso el más pequeño ejemplo o explicación sería suficiente.

Gracias

+1

Tal vez al preguntar en el canal #gstreamer en irc.freenode.net podría obtener una respuesta. Si lo haces, sería espléndido si respondieras esta pregunta con él. – joar

+0

Ver la respuesta a [mi pregunta] (http://stackoverflow.com/questions/9609201/gstreamermm-creating-a-new-element-type-in-plugin-by-deriving-from-gstele). Puede que te interese mi parche. – peper0

Respuesta

3

que he hecho esta en la lista de correo gtkmm hace un par de días, y tengo la siguiente respuesta (de José Alburquerque):

En la actualidad, los únicos plug-ins que tienen una posibilidad (probablemente inexistente) de desarrollarse utilizando gstreamermm que son privadas para las aplicaciones. Si eso es posible, estos complementos serían registrados utilizando el método Gst :: Plugin :: register_static() [1] y no el proceso que describió anteriormente.

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

En teoría, se podría extender una de las clases base gstreamermm [2] y llamada la Gst :: ElementFactory :: register_element() en la Gst [3] :: Plugin :: Ranura SlotInit (devolución de llamada) para que se pueda crear una fábrica de elementos que genere estos elementos . Esa fábrica puede ser agregada al registro usando Gst :: Registry :: add_feature() [4] en el mismo slot Gst :: Plugin :: SlotInit de .

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

[3] El método Gst :: ElementFactory :: register_element() es un método que no se ha implementado todavía pero que envuelva el gst_element_register() función. Eso sería parte de un próximo lanzamiento.

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

no he probado esto y realmente no sé exactamente cómo funcionaría (o si en realidad lo haría), pero es la forma en que lo intentaría si tuviera que. Sin embargo, Creo que es más fácil escribir el complemento en C actualmente, pero eso es simplemente una cuestión de facilitar las cosas.