0.91 Release “Charming Defects”

This is the first alpha release for the new version of Pitivi based on GES, the GStreamer Editing Services library.

It is a major rework of the entire Pitivi architecture. It includes:

  • Replacing the core of Pitivi by GES; 20 thousand lines of code removed
  • Porting to GStreamer 1.x
  • Porting to GTK+ 3.x
  • Replacing GooCanvas by Clutter for the timeline
  • An automated UI test suite, with many checks for mission-critical parts
  • Fixing hundreds of bugs and implementing many new features
  • UI polish all over the place
  • Refactoring pretty much the entire codebase

To give you a visual idea of what this meant: http://jeff.ecchi.ca/blog/wp-content/uploads/2012-02-28-12.42.44-levelled.jpg

WARNING: Please keep in mind that this is an alpha release, so there may be some bugs we haven't found yet. We appreciate your feedback, so try it out, let us know how well it works for you and report detailed bugs for issues you may encounter. Again, this is not yet considered production-ready software. We can't be sure until we test and iron out the bugs! With your help, we will follow up with a beta release and eventually a 1.0 release.

Top features of this release

These features have been documented throughout many blog posts from January 2012 to September 2013. Take a look at the “Pitivi” category of Jeff's blog for additional details and historical context.

Media Library

  • The redesigned clip previewing feature gives you more space to view a video from the media library, yet stays out of your way. It now opens a separate window that tries to show the clip at 1:1 size whenever possible. This window can be dismissed by clicking the close button or clicking anywhere outside the window, so there is no reduction of efficiency compared to the old approach.
  • Use Nautilus/Totem’s thumbnails and conform to the new version of the Freedesktop specification for thumbnail directories. The result is prettier and we don’t have to do processing in most cases, which means even faster import/loading times.
  • Asynchroneous (non-blocking) and much faster clip importing
  • The media library keeps itself sorted alphabetically as you import files, without any additional performance hit.
  • Prevent playing back clip previews in double (that was a subtle one, as windows were exactly on top of each other)
  • Make special characters show up correctly in the media library’s iconview mode, remove the ancient filename shortening code and rely on Pango instead.
  • Avoid excessive work when searching clips in the media library, improving performance
  • Handle special characters in the media library’s search entry
  • Use the system’s default image viewer to preview images

Timeline and Playback

  • Smooth, modern Clutter-based timeline with animations to enhance usability
  • Smooth autoscrolling while playing
  • Live preview of what you are trimming. No more trial and error, no more fuzzying around and moving the playhead all the time to figure out if you cut your scene right.
  • Playback performance back to the 0.13.1 levels (or possibly better). Want to play a 1080p clip? A 2K clip? Not a problem anymore (unless you're still running on a 286 or something).
  • Much faster and prettier video thumbnails on the timeline, with two-stage caching and adaptive CPU usage throttling
  • Much faster and more accurate audio waveforms, with on-disk caching
  • Manual layers management interface, layer reordering
  • The timeline toolbar is now vertical and sports improved “Split”, “Group” and “Ungroup” icons. It also does away with obsolete buttons.
  • Automatic rippling (a.k.a. “magnetic”, elastic, fantastic) timeline mode: this makes your clips behave like magnets and prevents needing to re-arrange them manually all the time.
  • Automatically adjust the zoom when inserting to the end of the timeline
  • New icons for split, group/ungroup and align
  • Clip snapping indicator

For contributors and distributors

  • Infinitely cleaner and easier to navigate codebase. See this blog post and this blog post for an explanation and some numbers, or just look at this screenshot comparing the old and new amount of source files.
  • An awesome test suite
  • A revised and simplified API has been implemented in GES and integrated in Pitivi.
  • A small brand adjustment. From now on, PiTiVi should simply be called “Pitivi”.
  • Dependencies are defined and checked in only one, centralized place: check.py
  • We now use yelp-tools instead of gnome-doc-utils
  • New format for which a mimetype needs to be registered: xges
  • Commandline rendering, scripting and batch processing is now GES' job
  • New high-resolution logo icon
  • Various pieces of documentation (README, HACKING, AUTHORS, etc.) were updated
  • We ship an AppData file in order to show up with the correct description in GNOME Software
  • We dropped the ChangeLog file, it weighs a ton and we have this thing called version control systems now.

General

  • In addition to the good old “crossfade”, you can now choose from 70 industry-standard (SMPTE) transitions. This number doubles to 140 if you consider that each transition can also be reversed.
  • Pitivi now inhibits the screensaver when playing and inhibits suspend when rendering.
  • The automated backup feature now works. See this blog post and its sequel
  • Simplified menus
  • Fix many, many, many problems with the Media Library, project management, keyboard shortcuts, etc.
  • Ability to save/export the current frame as an image file
  • Much faster application startup
  • Auto-hiding toolbar in fullscreen mode
  • Improved error dialogs
  • Automatically saving and restoring the state of our dynamic detachable tabs/components.
  • Redesigned rendering progress dialog and post-render user experience. See this, this and this.
  • Enforce unicode in preset names, preventing a bug with non-ASCII chars are used in the name of a preset
  • Allow presets with “/” in their name
  • Fix a race between clicks on the preview widget’s slider and position updates. When using it in the media library/file chooser, the slider would often “jump” back to its previous position instead of seeking. The new behavior is now smooth and reliable.
  • When the viewer is undocked, provide a button to toggle fullscreen mode
  • Specify the duration of missing/moved files when prompting the user about their new location
  • Update effect categories, merge “Noise” and “Blur”, add a “Compositing” category, categorize new effects
  • Automatically save the last used render directory
  • Stop rendering when the user presses Escape
  • Use symbolic icons everywhere where it makes sense (in the media library toolbar, property reset buttons, lists, etc.)
  • Update the preview widget slider on a more frequent basis, giving it a snappier feeling
  • Automatically save and restore the main window’s position. This is especially useful when using detached utility windows.
  • Hide the effects toolbar when nothing is selected
  • Add a contextual help button in the render dialog to explain container formats
  • Allow entering a frame number into the time widget
  • Keyframable (animatable) properties for all effects
  • Scale down effects thumbnails to fit better in the new listview arrangement
  • Various improvements to the robustness of the import dialog's video previewer
  • Ability to pause and resume rendering
  • A basic title editor
  • Filter the project loading or media file importing dialogs to only show relevant/supported files by default
  • Only show codecs and containers with a high-enough GStreamer “rank” to reduce the possibility of rendering problems

This is just the beginning, of course. See the “Bugs fixed (and even more features)” section further below if you're hungry for more.

Requirements

Dependencies/requirements have changed significantly since the 0.15 series.

Generally speaking, you can refer to Pitivi's check.py for the dependencies' versions specific to a given release. For 0.91, those are:

Hard requirements:

  • cairo >= 1.10.0
  • clutter >= 1.12.0
  • gnonlin >= 1.1.90
  • gobject-introspection >= 1.34.0
  • gst-python >= 1.1.90
  • gstreamer >= 1.2.0
  • gstreamer-editing-services >= 1.1.90
  • gtk >= 3.8.0
  • numpy (static bindings)
  • pygobject >= 3.4.0
  • pyxdg (static bindings)

Soft requirements:

  • gstreamer-libav
  • libnotify
  • pycanberra (static bindings)
  • frei0r

See also dependencies for additional tips.

Known issues

  • Layer management interface is missing features.
  • The title editor UI is very primitive and probably buggy. Please join us to make it work up to your expectations! See the existing title editor bugs.
  • The transformation box has been disabled (we need someone to fix it).
  • The user manual is completely outdated (it references the 0.15 series). We are looking for someone to take on the role of writing the Pitivi user guide. Please get in touch if you love writing and are interested in helping out.
  • Translations are not all fully up to date.
  • The Media Library does not generate missing thumbnails. See GStreamer bug 667203 for details.
  • The ruler has not been ported to Clutter, so it will not be in sync with the rest of the timeline while autoscrolling.
  • The automated codecs installer is (still) broken. See bug 686182 and GES bug 686181.
  • The automatic clip aligner feature does not work. We need someone to port it to use our new audio waveforms processing module.
  • If xptv file support is important to you, we urgently need someone to get involved in fixing/refactoring the xptv formatter module in GES. If no interest is shown after a few releases, support for this legacy file format may be dropped.
  • No dialog to install missing codecs after discovering clips, and no error gets raised in that case. This means that the clip will “appear” to have imported correctly, but if you try inserting it into the timeline you may get errors in the background or Pitivi's UI may hang.

See the list of currently known issues, the 0.91-specific issues and the list of bugs that need re-testing with 0.91 (you can help!)

Bugs fixed (and even more features)

It is difficult to evaluate the amount of commits directly related to Pitivi in GStreamer. However:

  • At least 50 bugs in GStreamer have been fixed by Mathieu Duponchelle between January and September 2013:
  • At least 96 bugs in GStreamer since 0.15 mention Pitivi

In GStreamer Editing Services, the Pitivi team has made 975 commits in preparation for this release.

In Pitivi:

Since you're reading the release notes of an an alpha release, we suspect you might be pretty geeky, so here are roughly 150 (of the 1300+ commits) that are “interesting” but were not necessarily big enough to be mentioned in the “top features” above.

0d21848 Kill ChangeLog with fire
c07dc1b mediafilespreviewer: Remove sync-message handler and add proper xid handling
a0a21e6 viewer: Use the “realize” GTK callback to asynchronously obtain window handle
6f4c58f viewer: Disable GTK double buffering to prevent flickering and black images
351a833 project, timeline: Set restriction caps on tracks.
e2c59ca timeline: Reimplement the seeking and framestepping keyboard shortcuts
1362142 pitivi: Rely on timeline widgets' focus to set actions/shortcuts sensitivity
81cd77c check: Drop the GooCanvas dependency
e956801 Redesign the rendering progress dialog
a568665 render: Provide an estimation of the output file size
6b2e69b mainwindow: Make context tabs (2nd child of the 2nd hpane) not resize themselves
d276be2 pitivi: Implement the notion of “read-only” projects
0008538 project: Refactor and fix saveProject
054489a Conform to the AppData spec so we show up properly in the GNOME Software Center
88ebb08 Fix .desktop file categories so that Pitivi will show up in GNOME Software
b61048d mediafilespreviewer: Always use the same videosink
54dc09f pipeline: when not in RENDER, the pipeline can and must recover
75b96b2 Use yelp-tools instead of gnome-doc-utils
24189e4 Properly parent the “Render” and “Project Settings” dialogs
a9900d7 medialibrary: Support the new “large” (256 pixels) thumbnails
127e6e6 medialibrary: Handle multiple sizes for fallback icons when there are no thumbs
e360b2a mediafilespreviewer: Fix the icon shown when previewing audio files
1d1e1ed Make the import filechooser dialog modal so that it works in fullscreen
6599953 timeline/elements: Improve the appearance and visibility of the keyframe curves
d9f5364 utils/widgets: Fill sliders with color to indicate the default values
3d02054 check: Make numpy a hard dependency as we now need it for core audio waveforms
43255f6 previewers: Delay initial thumbnail & waveform processing to when the UI is idle
b04c221 Regulate the frequency at which thumbnails get created.
50546b0 previewers: add saving and loading for the waveforms.
caccf69 This commit adds a waveform audio previewer.
7154b06 pitivi: Port to the new commit based API in GES
ddcee62 previewers: Periodically save clip thumbnails
e492dde previewers: Avoid blocking the UI when generating clip thumbnails
4a01a2e mainwindow: Ensure “Clip properties” is the focused context tab on startup
e70b055 render:  Show rendering errors in a dialog
62157c7 Do not set titles on modal message dialogs, they are redundant with the contents
71a9d45 Define some more harmonized default colors for timeline elements/clips
aa64ac9 Save resources by only drawing the visible thumbs
4a0cb3c Improve clip thumbnailing performance when scrolling/zooming the timeline
f47b1f9 Various performance improvements to the timeline clip thumbnailer
ff50eb2 Register mimetypes for the new xges project format
c86d33f New X-Large (256x256) logo icon
e643fb5 Add a button to toggle a “gapless” (auto-ripple) timeline mode
d5bd8dc clipproperties: Prevent drag and drop “ghosts” from the effects library
cbd8910 Add a contextual help button in the render dialog to explain container formats
931a445 clipproperties: Use a symbolic icon for the “Remove effect” inline tool button
c31a230 Automatically save and restore the main window's position
f2389ad Use symbolic icons for the “Reset to default value” dynamic widget buttons
b3be493 mediafilespreviewer: Update the preview widget slider on a more frequent basis
1fcbbe6 Use the system's default image viewer to preview images from the media library
76573e8 Fix a race between clicks on the preview widget's slider and position updates
f67b9ea Use symbolic icons everywhere in the Media Library toolbar
1a51f04 render: Stop rendering when the user presses Escape
4b4e969 render: Properly save the render directory
2f2c92a effects: Scale down thumbnails to fit better in the new listview arrangement
3ef1f81 utils/ui: Properly ignore subtitles, including the new DiscovererSubtitleInfo
4c10b27 medialibrary: Force quoting URIs right before computing the thumbnail hash
89dc28e utils/misc: Use Gst.filename_to_uri instead of manually encoding URIs
42587d3 medialibrary: Remove the ancient filename shortening code, rely on Pango instead
b2309e9 medialibrary: Make special characters show up correctly in iconview mode
1f766ab medialibrary: Rework the way we sort files in the view
6b5b009 medialibrary: Respect the fdo spec to find thumbnails
1301dab Specify the dependencies version requirements in only one place (check.py)
248e0a2 Refactor check.py for faster, better (simpler), stronger dependency checking
3ab1026 Remove the pitivi.spec file
d52614c Remove the ABOUT-NLS file, it's completely useless
2b5ef0c Update AUTHORS to match the About dialog
3361da9 New icons for split, group/ungroup and align
b0a36cd viewer: When undocked, show a button to toggle fullscreen mode
9d50648 mainwindow: Make the medialibrary previewer work even in fullscreen mode
c9493f9 medialibrary: Do not emit “play” twice when double-clicking a clip
d9f3034 preset: Allow presets with slash chars in the name
bcf90cf Notify and play a sound when rendering is complete
b0617ea tabsmanager: Restore the state of undocked utility windows on startup
a4c3674 tabsmanager: Save/restore settings from detached tabs
5c063a6 Refine the “Split” icon to be pixel-perfect and closer to a symbolic style
4f417ef medialibrary: Use MIME types instead of extensions for filtering the filechooser
6bc2427 Make the code compliant with PEP8 1.3
0fb0c0e Set widget names for AT-SPI/accessibility
6d9a4d0 Remove the code to hide/show toolbars
e63d158 Hide the menubar in fullscreen mode
3ee3ea5 Auto-hide and show the main toolbar in fullscreen mode
ca61a6d timeline: Add missing labels to (un)group and align
f7a10b1 timeline: Remove “Keyframe” from the toolbar, but keep the keyboard shortcut
4b4291a mainwindow: Make the timeline toolbar vertical
6e70641 Make the filename entry in render dialog activate the Render action
1c1807a mainwindow: Filter for the file's extension when prompting for missing files
4568997 medialibrary: Only show known file formats by default in the filechooser
254f50c mainwindow: Fix the filechooser filter for opening project files
b295b6a render: Properly parent the advanced codec settings dialogs
55ba545 mediafilespreviewer: Add support for the “copyright” tag
454e65b Move the media and effect library toolbars to the top for consistency
e0a04cd transitions: Use a symbolic icon and placeholder text for search
67aba11 effects: Use an inline toolbar for searching and categories
4240ea5 medialibrary: Use GtkBuilder for infobars
70f2ba9 Implement a Media Library toolbar and kill menu items
94d7d6b Document our keyboard shortcuts and allow contextual help
459532f Implement a title editor
c4cb00e medialibrary: Hide the infobar when sources start importing
857be52 Increase the amount of recent items in the welcome dialog to 10
d6006aa Implement the ability to go a frame forward or backwards
508dab0 When space is constrained, allow notebook tabs to scroll
16e2087 When not usable, hide widgets in clip properties and transitions
1b7cd97 Refactor clipproperties and fix the expansion behavior with GTK3
b59af58 Fixes traceback when user double-clicks on an empty row in the treeview
c469d35 Use symbolic toolbar icons in Project settings and Render dialog
11a4166 Use the GTK3 “inline” style for toolbars under presets listviews
3b63ba3 projectsettings UI: Force some fields to be numeric only
1d35ad3 Use the new GTK3 features for the About/credits dialog
8e90540 Set the “primary-toolbar” style on the main toolbar
1130ce7 Use a dark theme variant for GTK3
d996933 pitivi: Playbin2 is dead, use playbin
59b3956 Abort project loading when a clip does not have a replacement
edeb4e1 Effects: Merge icon and treeview into a single view
2c9e8f5 Make the about dialog's credits future-proof
9017fc6 Add tooltips to buttons at the bottom of the Preferences UI
d44d440 Implement UI testing with Dogtail
b5155c8 Prevent the timeline's Zoom Fit button from expanding
d205a51 Add a preference for the default duration of image clips in the timeline
493c226 Refactor GTK+ actions and keyboard shortcuts
194a714 timeline: Bind Ctrl+0 to the “Zoom fit” action
d8a09f9 mainwindow: Use standard shortcuts for Help and Fullscreen
995cedb medialibrary: Standardize playback in iconview and treeview
a63564e Create icons for transitions
c429604 Implement SMPTE video transitions
426257c Remove old mimetype icons
e04a3d2 Merge branch 'ges'
df36892 Show a better default progressbar text when starting rendering
dbc3a26 render: Set power management only when starting/resuming
6c70423 Allow pausing and resuming rendering
6886c57 timeline: When autoscrolling, jump to 1/6th of the width, not 1/2
f2ff6c3 timeline: Fix the horizontal scrollbar management for zooming
20ad0a2 Add a version checker
4c0abcb Show a vertical line to indicate clip snapping
608ab1a Port to the new GES timeline edition API
48b8d46 thumbnailer: Add on disk thumbnail caching
c012a2c Add the ability to render video only or audio only
f73e918 Add a “rule of thumb for long lines” to coding style conventions
2df0743 When run from git, don't show a stable version number in About
44787d9 Add version info to the About dialog
5b9f1e6 If available, show thumbnails for missing files to help the user
4ae8768 Cleanup the translatable strings in project settings
96c79e3 Set a better default height for the render dialog
98cd55e Allow copying a clip's properties to project settings
e8e7296 viewer: Preview the clips being trimmed
64fb372 Set the main official repository to be git.gnome.org/pitivi
e82764c Offer to to load the autosaved backup instead of the project file
4499155 Show the time for the unsaved changes confirmation dialog
d971cfc Allow saving a snapshot of the current frame as an image file
14ceaa0 medialibrary: Make discovery asynchroneous and show progress

fdb9bd4 Disable timeline accels when focusing Media Library contents
6ff7983 Prevent Delete from being sensitive in Media Library and Effects
33ab288 Make the search bars use focus-in events to ensure you can't have sensitive actions that prevent them from working.

431769b Kill the “Preview” menu and reorganize the “Timeline” menu
6a5e5df Selectively use the word “encoder” when talking about codecs
8759e58 pitivi/ui/encodingdialog.py: inhibit logging out, inhibit suspend/shutdown etc. when rendering
845d911 pitivi/ui/viewer.py: inhibit screensaver whilst previewing videos.
b7fcd7c Fix the resolution and framerate parsing in the Media Library
94bf5f2 ui: Get source thumbs from the Freedesktop thumbnail cache spec
23d08bb Ensure that previewed videos fit within a reasonable size
1ee2ada Put the Media Library previewer's playback controls at the top
39f271f Automatically set the size of the Media Library previewer
d95adeb Prevent the render dialog from having a blank output filename

What, you want more?! Well, you can use this command in our code repository:

git log RELEASE-0_15_0..RELEASE-0_91_0

Contributors for this release

In Pitivi:

526  Jean-François Fortin Tam
266  Thibault Saunier
190  Mathieu Duponchelle
 72  Paul Lange
 26  Alex Băluț
 23  Matas Brazdeikis
 17  Nicolas Dufresne
 14  Daniel Thul
 12  René Stadler
 10  Alexandru Băluț
  8  Stephen Griffiths
  7  Luis de Bethencourt
  5  Lubosz Sarnecki
  2  Anton Belka
  2  Elad Alfassa
  2  Joris Valette
  2  Meenal-goyal
  2  Thiago Santos
  1  Brian Grohe
  1  Danny Piccirillo
  1  Dominique Leuenberger
  1  Jan Gerber
  1  Javier Jardón
  1  Marianne Corvellec
  1  Odin Hørthe Omdal
  1  Oliver Propst
  1  Olivier Duchateau
  1  Simon Corsin
  1  Simon Wenner
  1  Ulisse Perusin
  1  Yann Pravo

In GES:

596  Thibault Saunier
 98  Mathieu Duponchelle
 74  Edward Hervey
 54  Tim-Philipp Müller
 34  Sebastian Dröge
 26  Luis de Bethencourt
 11  Simon Corsin
 10  Volodymyr Rudyi
  8  Stefan Kost
  6  Mark Nauwelaerts
  6  Stefan Sauer
  5  Robert Swain
  5  Vasilis Liaskovitis
  5  Руслан Ижбулатов
  4  Nicolas Dufresne
  4  Thiago Santos
  3  Alessandro Decina
  3  Anton Belka
  3  Lubosz Sarnecki
  3  Paul Lange
  3  Xabier Rodriguez Calvar
  2  Matas Brazdeikis
  2  Vincent Penquerc'h
  1  Alban Browaeys
  1  Andoni Morales Alastruey
  1  David Schleef
  1  Jean-François Fortin Tam
  1  Joris Valette
  1  Kerrick Staley
  1  Kishore Arepalli
  1  Mateu Batle
  1  Stéphane Maniaci
  1  Thomas Vander Stichele
  1  Wim Taymans

Translations:

   ca  Jordi Mas, Pere Orga
ca@valencia Carles Ferrando
   cs  Marek Černocký
   de  Christian Kirbach
   el  Dimitris Spingos, Panagiotis Papadopoulos
   es  Daniel Mustieles, Milagros Alessandra Infante Montero, Adonfo Jayme Barrientos
   et  Mattias Põldaru
   fr  Bruno Brouard
   gl  Fran Diéguez
   he  Yaron Shahrabani
   hu  Balázs Úr, Gabor Kelemen
   it  Gianvito Cavasoli
   ja  Jiro Matsuzawa
   lt  Aurimas Černius
   lv  Rūdolfs Mazurs
   pl  Piotr Drąg
pt_BR  Rafael Ferreira, Antonio Fernandes C. Neto, Enrico Nicoletto, Florêncio Neves
   ru  Yuri Myasoedov
   sl  Matej Urbančič, Martin Srebotnjak, Andrej Žnidaršič
   sr  Мирослав Николић
   te  Praveen Illa

Download, additional information and feedback

A tarball is available on http://ftp.gnome.org/pub/GNOME/sources/pitivi/0.91/

See the Pitivi website and building with GES for download and installation instructions.

Feedback is welcome. See bug reporting for tips and tricks.

The results of the search are