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.


Image:Complex_timeline_schema.png