PiTiVi progress, Summer Of Code and Android

As usual, a long time since the last update. But “as usual”, plenty of updates πŸ™‚

PiTiVi updates

Over the past 3-6 months hacking has been going at an insane rate, thanks mostly to Collabora Multimedia hiring Brandon Lewis (who worked the 2 past Summer Of Code on PiTiVi) and Alessandro Decina (Python god and GStreamer hacker) to work on PiTiVi and the related technologies.

We’ve been refactoring most of the code based on the past 5 years of feedbacks and a 3 month re-design I carried on last summer. At this point we’re on schedule for the end-of-April 0.13.1 release. Everything is available in the new GIT repository.

What’s newΒ  you ask ?

  • multiple layers (yes, like a real editor πŸ™‚ )
  • trimming/cutting support, ripple/roll, slip/slide
  • audio-only or video-only support (yes, along with pictures)
  • Faster backend with many improvements and bugfixing in GNonLin and GStreamer
  • cleaner API for extensions
  • and much more

Since the current git version depends on bugfixing done in unreleased GStreamer packages, Alessandro set up a PPA for ubuntu with latest packages so you can try PiTiVi the right way. Available here : https://launchpad.net/~gstreamer-developers/+archive. It’s also a good way to tryout the latest GStreamer and plugins.

Feedbacks and comments are welcome as usual. The more feedback we get, the better suited PiTiVi will be for you.

Summer Of Code

Want to earn some cash while making PiTiVi rock even more ? How about participating in Summer Of Code 2009 ?

There are many ways you can help PiTIVi due to it’s modular approach:

  • Since we rely entirely on GStreamer for multimedia processing, you can propose a project with GStreamer [see existing proposals].
    Amongst the various proposals, there’s one very interesting one (not only for PiTiVi but for multimedia in general on Linux) is to bring the awesome collection of AVISynth filters to GStreamer by creating a wrapper to load existing AVISynth filters as GStreamer elements.
    Another one that would benefit everybody is to wrap VDPAU/VA-APIΒ  as decoder/filters/sink elements in GStreamer, bringing us closer to real-time editing of HD content. Ask us on the pitivi or gstreamer mailing-list if you’re unsure, we’ll give you more pointers.
    Yet another one would be to help make the consumer Video Camera (DV/HDV/AVCHD) support in GStreamer pristine (capture, seeking, auto-cut, editing, rendering, …), which requires some help in various elements (like the mpegts demuxer, add some parsers, etc…).
  • You can also hack at the PiTiVi level by adding better integration to existing tools or online services. One existing proposal in the GNOME project is to have a tight integration with Brasero. Proposals to integrate PiTiVi with Telepathy for real-time collaborative editing would also be much welcome. For application-level proposals we’d recommend choosing a desktop-style organisation (like GNOME, or KDE).
  • Helping FFMpeg by adding new decoders/encodersΒ  or improving the existing ones would also be beneficial for everybody.

As a side note, there’s also a few other organisations which have got GStreamer-related proposals or could do with some GStreamer loving, like Wine who have got a proposal to have a GStreamer backend for playback, or you could propose adding GStreamer support in Moonlight (reusing all the available GStreamer plugins) ! Don’t limit yourselves to the GStreamer/GNOME organisations if you have GStreamer ideas, the sky’s the limit, ask us for pointers and we’ll be able to find GStreamer hackers to co-mentor projects in other organisations.

GStreamer on Android

Over the past few weeks, I’ve been working along with Prajnashi porting GStreamer to Android. We’ve been making big progress and are at the point where we can actually replace OpenCore (the ‘official’ Android multimedia framework) with GStreamer. Funnily enough, this happens exactly at the time where the official Android build is broken due to OpenCore πŸ™‚ Those interested can join the dedicated google group site.

Along with Zaheer’s recent efforts to port GStreamer to S60, it looks like there will soon be no device not running GStreamer πŸ™‚

PiTiVi 0.11.2 “Milanesa de Lomo”

The PiTiVi team is proud to announce the third release in the unstable 0.11
PiTiVi series.

This release series is not intended to be production-ready, but instead to allow
users to try more often new features that will be available in the next stable
series.

The developers will not be held accountable for any work lost, flooding or war
caused by this unstable series.

Due to its dependency on GStreamer, The PiTiVi team strongly recommends users have
all official latest gstreamer libraries and plugins installed for the best user
experience.

Features of this release

  • New advanced timeline interface by Brandon Lewis (SoC)
  • Capture interface for webcams and network sources by Sarath Lakshman (SoC).
  • Simple Timeline is gone.
  • Project save/load now activated by default
  • Cutting/Trimming/Removing features added to advanced timeline.
  • Misc fixes and improvements

Bugs Fixed

  • 552777 : [ruler.py] BadAlloc error with big sources
  • 353870 : Save/Load project from/to file
  • 332473 : Capture from given gstreamer input source
  • 334631 : xvsink crash with python in pitivi
  • 339895 : [Advanced Timeline] Zooming in too much causes X error
  • 432678 : [discoverer] Files that report a duration of 0s is BUGGY !!!
  • 458944 : Cancelling while rendering does not work
  • 461738 : [Advanced Timeline] Scrollbar always comes back to beginning
  • 498071 : [Simple Timeline] Drag and Drop puts clips in the wrong slot
  • 498904 : incorrect indentation: some tabs are mixed with spaces in…
  • 501028 : Missing files from POTFILES.in
  • 501068 : Uses make instead of $(MAKE)
  • 518301 : Pitivi won’t start under KDE: " Icon ‘misc’ not present in…
  • 547095 : [Export Settings] Filter unusable muxers
  • 554544 : net_capture.glade not installed
  • 554602 : seeking is not working correctly …

Requirements

  • gstreamer >= 0.10.14
  • gst-python >= 0.10.6
  • gnonlin >= 0.10.9
  • pygtk >= 2.8.0
  • zope.interface (http://www.zope.org/Products/ZopeInterface)
  • setuptools (http://peak.telecommunity.com/DevCenter/setuptools)
  • pygoocanvas (http://live.gnome.org/GooCanvas)
  • dbus and HAL for capture support

Contributors

  • Edward Hervey
  • Sarath Lakshman
  • Brandon Lewis

Download
PiTiVi source tarballs are available on gnome FTP:
http://ftp.gnome.org/pub/GNOME/sources/pitivi/0.11/
See the website for distribution-specific packages : http://www.pitivi.org/

Lost my phone…

… so yeah, I actually managed to lose my phone while in Istanbul. Just got myself a new phone/card with the same phone number as before (+34 666 …). If you have my phone number in your address book… send me an sms or a mail with your name and phone number so I can rebuild my address book.

Will write a post soon about GUADEC istanbul.

Sync me up !

Question for the internet:

I have a phone (Nokia N80), lots of GNOME/Gentoo computers and some internet tablets. Add to that… I’m starting to move more and more for business/leasure, sometimes I only have the phone on me and I need to have all my contacts/calendar/tasks/notes synchronized over all of those devices. I’ve been trying to find a FOSS solution to do this… but haven’t found anything coherent.

What do people use that can run on all those devices and properly synchronize that information across all of them ? I’m open to solutions that require setting up a daemon on a server. And obviously… it needs to be free software (although for the phone part it might be hard) πŸ™‚

PiTiVi 0.11

So finally, after much delay, the PiTiVi team gives you: PiTiVi 0.11.0 “A hooligan’s game played by gentlemen”

This is the first release of the 0.11 unstable serie. What does the 0.11 branch mean for users and PiTiVi followers ? It will be released more often (we’re aiming at every 3 weeks), (almost) regardless of current code status, in order for you to try out the latest improvements and bugfixes, give you a more periodic idea of where PiTiVi is heading towards, and allow you to give us more regular feedback. Most of the current work is going to be concentrating on this branch, in order to finally come up with a stable branch within the next 6months.

What does it contain ? The major part is the work Brandon did for the 2007 Summer of Code, which contains a lot of nice improvements to the simple timeline. You’ll also be able to play around with the Advanced Timeline which has been re-enabled. Brandon is carrying on his amazing job post-SOC by working heavily on the project save/load framework, most of the work is currently in the code but not yet enabled. Luca Della Santina has also been commiting the beginning of a promising plugin system to extend PiTiVi’s feature-set. All in all, good stuff coming ahead !

More information on the 0.11.0 release here : http://www.pitivi.org/wiki/0.11.0

Is that a video editor ?

You have no idea how many times people have asked me that question. And every single time the answer was “We’re adding features gradually making sure it keeps stable every step of the way. We still don’t have the basic editing features.”. The we in that sentence is for “PiTiVi team”, which was me alone until now apart from a few outside patch contributors who will get their overdue’d beers at GUADEC 2007.

Flashback (first cvs entry):

Author: bilboed
Date: Sat May  1 10:48:55 2004 UTC (3 years, 2 months ago)
Log Message: Initial revision

The first 6 months were done outside of CVS and without filling in the ChangeLog appropriately (that has changed since, don’t worry). So yes, it has been in fact 3 years and 8 months since PiTiVi was first hacked on.

Quick refresher of PiTiVi history

December 2003 – March 2005

  • PiTiVi was my end-of-studies project for the last 2 years at school. I had been wanting to do an open and flexible video editor for ages by then. This was the chance to actually get it done. “Yeah, we’re 10 students and within 18 months we should have something nice” … oh man… what a fool I was.
  • I’d already played around with GStreamer at that point, and I was sure it was the best option to do such an editor… except I hadn’t accounted for the fact that I was going to spend the next 4 years fixing GStreamer, plugins and GNonLin to actually get it to a level stable enough for a video editor πŸ™‚ We didn’t take into account that we were students, had different views and motivations on that project, etc…
  • End result : we had a limited, special cases only editor… So still far away from something usable.

March 2005 – June 2007

  • Working at Fluendo, first as a 6months internship… and then as a Junior Developer (if you laugh, you don’t get free beers at GUADEC!) .
  • The reaction all of you must be having is “But if you were working all the time on PiTiVi, how come it’s still not full featured?”. Well the answer is quite simple : I was NOT working all the time on PiTiVi.
  • I was also working on converting the python bindings to GStreamer 0.10 and maintaining it, taking care of gst-ffmpeg, doing bugfixing in plugins, adding new features to GStreamer core (hello multiqueue/decodebin2), doing work for other sections of Fluendo, doing consulting work, giving trainings, etc… Yeah, it’s a company, we actually needed to make some money πŸ™‚
  • What did I really do on PiTiVI ? Convert it to python (best move ever), switch GNonLin (the non-linear plugins for GStreamer) to 0.10 and bringing them to a more stable level (ok, fine, the Jokosher team did find some bugs, but were quickly solved), fix core/plugins issues related to encoding/decoding/accurate-seek/transcoding/…
  • Looking over my work stats for the past 8 months, I’ve in fact been doing 62% work on consulting work, 11% on community work (I fixorz yo bugz), and 28% of the time only on PiTiVi work (including lower-levels works).

“Dude, almost 4 years ? And you still don’t have basic editing features ?”

Well guess what : NO LONGER !!!! For teasers, I give you a screenshot of the triming features in PiTiVi where I can change the start/stop position of a clip used in a timeline :

Editing in PiTiVi

How did this happen ? Well thanks to the awesome work Brandon Lewis, the SoC student working on PiTiVi, has been doing on creating widgets, I was able to link up everything within one day… and voila πŸ™‚ It still has some rough edges, but we’re working on doing a preview release by GUADEC. Lots of other stuff are in the bag for the SoC : effects, transitions, picture support, project file save/load, ….

Post-Edit : All this work is available in the PITIVI_SOC_2007 branch of PiTiVI for those wondering.

“I want feature XYZ in PiTiVi NOW!”

By now, you might have guessed that bribing/paying/drunken-ing me is not the way you’re going to get that feature faster. The only way that is going to happen… is by having more contributors ! If you’re good at UI designing, writing widgets, with gtk-python …. send a mail to the mailing list and we can start sharing the workload of what’s left to do to create the killer video editor. There are some low hanging fruits that can be solved if you’re comfortable with gtk-python, and some challenging features if you’re comfortable with gst-python and editing concepts.

Grab me or Brandon at GUADEC for a chat if you’re interested. I’ll also most certainly setup again a GStreamer hackfest as we did last year, so if you feel like having a hands-on experience, join the fun !

No longer at Fluendo

Nothing much to say about that currently, more in the coming weeks. What a blast it was though… but times are different, things have changed at Fluendo… and we’ll see where the wind blows this time πŸ™‚

Back from Fosdem

The FOSDEM weekend went down great as usual. Met the usual folks, and many more new people. Alway refreshing to put a face and personality behind a IRC nick πŸ™‚

The talk I gave on “GStreamer: What’s New?” was well received. I had a hard time in fact both reducing the talk to fit in the limit of 45 mins and keeping it not too technical, but it seems to have paid off. The slides are available here in OOo format.

As I mentioned during my talk, we’ve been working hard on making GStreamer work on other platforms, including Windows and MacOSX. We’d love to receive more feedback on their usage, especially from MacOSX users/developers. If you want to give a ride, install fink and either use the available package (although they’re a bit old now) or compile your own GStreamer from releases or cvs. BTW, if a fink maintainer sees this post, updates to the existing GStreamer packages would be nice πŸ™‚

The native MacOSX video sink is coming on nicely… but sometimes you hit some wall, like NSAutoReleasePool (objective C explicit garbage collector) not being able to work across multiple threads, which makes it impossible to avoid some warnings about objects leaking. In GStreamer plugins your entry points (pad functions, element methods, …) can be called from different threads, and you shouldn’t have to care about which thread it is (well you need to protect data that can be called by different threads with locks, but you get the drill), but with ObjectiveC you apparently need to create one of those pools for each new thread… tricky since I’m not the creator of those threads, they’re created outside of the scope of my plugin. If an ObjectiveC guru knows the trick, I’m dying to know it.

Hello Planet Gnome

A New year, and plenty of surprises…First of all, hello to Planet GNOME and thanks to Jeff for adding me. Quick presentation for those who don’t know me. I’m the author of the PiTiVi video editor, maintainer of the python bindings for GStreamer, the GStreamer GNonLin plugins (used by PiTiVi and Jokosher) and the ffmpeg GStreamer plugins. I’ve been hacking on GStreamer ever since I started PiTiVi, wanting to fix issues at the lowest level instead of making yet-another pile-of-hacks application, and I carry on doing so by debugging and implementing new features in GStreamer core. Not only do I spent a lot of time doing all this hacking during my free time , I am lucky enough to also be able to do so as part of the consulting department of Barcelona-based Fluendo along with a great team of hackers.

What can you expect on my blog ? Mostly insights on PiTiVi and GStreamer development, my views about GNOME, FOSS and the world of today and also sometimes ramblings about French cheese not being weapons of mass destruction.

Good news ! PiTiVi 0.10.2 was released 2 weeks ago, with a truckload of bugfixes. Tests, bug-reports or comments are more than welcome. I’m currently working on the editing interface for the simple timeline with the goal of being able to *finally* show some real editing at FOSDEM.

So yes, I’m going to FOSDEM, where I will be giving a talk about what’s new in GStreamer and what’s currently being developed under the hood. This talk will happen in the GNOME developer room. If you want to see what niceties are coming round the corner, come along !

Finally, hacking and having a real life is not always that easy, so LOTS of love to Emma, my girlfriend, who’s been an angel for the past 7 years, and whose birthday it is today.