Design Docs Overview
From PiTiViWiKi
Overview of the design of the PiTiVi video editor.
DOCUMENT CURRENTLY BEING EDITED !!!
Contents |
High-level overview
PiTiVi is comprised of two parts:
- The core, which contains all the parts required to do audio/video editing.
- The user interface, which is optional, offers intuitive access to the underlying core layer.
Core
PiTiVi relies on the GStreamer multimedia framework for all the audio/video processsing/capture/display/... as well as all the plugins available for that framework. The only required plugin for PiTiVi are the gnonlin set of plugins. These plugins give a more editing-oriented usage of GStreamer.
The Core of PiTiVi offers a higher-level API aimed at video/audio editing use-cases. Think of it as a playground for video editing, it aims to offer no limits to creativity.
The Core does not offer a user-friendly interface, It is meant to be used with some frontends, like a gtk+ graphical frontend, a CLI interface, or a console interface. Those interfaces can then call methods on the Core methods, and connect to signals to know what to display. For those familiar, this is the observer design pattern.
Core components
pitivi.Pitivi
This is the main Class. There can only be one instance of this class in any given process, since this is the application class.
playground.PlayGround
This is where all GStreamer processing pipelines go. Those pipelines are wrapped within SmartBin(s) which allow switching from one pipeline to another while keeping the same output sinks.
project.Project
sourcelist.SourceList
timeline.timeline.Timeline
User Interface
SimpleSourceWidget
This represents a source in the simple timeline
SimpleTransitionWidget
This represents a transition widget in the simple timeline
SimpleEditingWidget
This widget is displayed when editing a source in the simple timeline. This widget sets the media start and media duration of a source in the core Timeline.
SimpleTimeline
This widget implements the simple timeline. It manages a list of SimpleSource and SimpleTransition widgets, which it temporarily hides to display and instance of the SimpleEditingWidget. There is only one SimpleEditingWidget instantiated, but it's source is set using the setSource() method.
ComplexTimeline
This widget implements the full-featured timeline. It can manage multiple Audio/Video tracks (called compositions in PiTiVi terms). Here is provided a diagram that slices the visual look of the timeline into basilar functional, reporting for each piece the module::class where the widget is implemented.


