Architecture
From PiTiViWiki
The image below should give you general idea of what technologies PiTiVi depends on:
The PiTiVi user interface is made of two components:
- GTK+: Toolkit for creating graphical user interfaces. Provides standard widgets and event handling. Based also in GLib.
- GooCanvas: an abstraction of Cairo that allows us to draw custom canvas widgets, such as the timeline.
The backend is made of the following components:
- GES (GStreamer Editing Services), a library created on top of GNonLin plugins, making it easier to use the GNonLin plugins: it wraps GNonLin by offering an API of higher level. In other words, GNonLin in media-agnostic and has no notions of video editing, while GES brings in those missing notions and provides a more app-friendly API. See also the GES page.
- GStreamer, a multimedia framework that allows us to do anything multimedia-related. It is very flexible and uses elements that are packaged in the form of plugins. These elements can be codecs/muxers/demuxers/effects, etc.
- One set of these plugins are the GNonLin plugins, which are the ones who implement anything related to the logic of video editing in GStreamer. Mainly, GNonLin handles the timing of reading different multimedia files.
- See also the Wikipedia page about it.
Ultimately, all the components above are based on GLib and communicate through its signals.
- GLib is a low level C library that provides fundamental types and algorithms. It is a base upon which everything is constructed. Since we interact with GStreamer through GES, in PiTiVi we can see the GLib basic types (gboolean, gchar, gint, gfloat, gdouble etc).
- GObject is a part of GLib that provides an object-oriented framework for C. In PiTiVi, we can see the gobject functions (http://www.pygtk.org/pygtk2reference/gobject-functions.html)
See also the various pages in Category:Developer documentation.
