8 feb. 2012

Python + GObject + Gstreamer + GTK3 (Parte 1)

Esta entrada esta pensada para poder dar una primera respuesta a las personas que han preguntado acerca de la parte final del tutorial de Python y GTK3.

Como algunos quizás saben Gstreamer es muy amigo de GObject porque están pensados para funcionar como hermanos.
GObject es entonces una parte fundamental para Gstreamer ya que se encarga de crear un ciclo o bucle en el que gst habita y hace su trabajo.

Todo esto suena muy bonito pero tiene su grado alto de complejidad y es que como sabemos GTK3 también es un ciclo, entonces hay que saber quien vive dentro de quien y porque razón.

De primer mano podríamos pensar que el ciclo mas grande seria GObject y que GTK3 y Gstreamer deberían habitar dentro de este. Esta seria una solución ideal de no ser por el hecho de que estamos trabajando en Python que crea Threads que son para no confundirlos unos mini ciclos.

Al tener tantos ciclos puede pasar que no se sabe quien vive dentro de quien para que funcionen de forma adecuada todo.

Es por eso que hay que pensar muy bien incluso como invocar los modulos.

La respuesta la verdad no es tan compleja, el ciclo mayor debe ser GTK3 y dentro debe estar lo demás, se deben abrir y cerrar esos ciclos de la siguiente forma:

Abrir
GTK3
GObject
Gstreamer

Cerrar
Gstreamer
GObject
GTK3

Para verlo con un poco más de codigo seria algo asi:

from gi.repository import Gtk, GObject
import gst

loop = GObject.MainLoop()

#Cerrando los ciclos
if __name__ == "__main__":
        main()
    loop.quit()   
    Gtk.main()


En la próxima entrada mostrare una primera aplicación que usa este tipo de ciclos en un primer ejemplo simple de Gstreamer.

No hay comentarios:

Publicar un comentario en la entrada