Monday, June 17, 2013

OLPC XO Filmmaker progress: Basic GStreamer audio and GTK app

Onwards!! As you can see I am back to it, working again towards my ultimate aim of a video editing application for the One Laptop Per Child program's "XO" laptops. We all know that naming things in Computer Science is hard, so even though I am still a ways away from getting this app done, I've got a name for it. I want to keep it simple, so I'm going to call it, "XO Filmmaker".

As you saw from yesterday's post, I was crazily working last night till 5:00am to get my Windows 7 machine to be a more effective virtualized host for a Fedora VirtualBox "guest" machine.

Things are now finally quite smooth. The biggest problem as I mentioned in yesterday's post was that I had hardcore run out of (virtual) disk space on the Linux virtual machine, and so I couldn't install anything and stuff was generally going haywire. Getting that sorted last night was SWEET. Also I managed to finally get dual-monitor support working on the Linux machine too, which means I can work :) This is all great. Tonight I fixed an issue with the VirtualBox Guest Additions, so now I can freely copy and paste from my Windows machine to the virtualized Linux machine... this is all kindof magic.

Tonight, the main event was to start learning about GStreamer, and make a test program using GLADE (GTK's wysiwyg user interface editing toolkit, like Qt Designer), connected to callbacks inside of Python to GStreamer objects. SUCCESS!!

A GLADE user interface (3 buttons) connected to a Python program, running a GStreamer Pipeline
I followed the great tutorial here:

So, why is this cool???


This is basically the foundation of what I am trying to ultimately do, which is a video editing application for the One Laptop Per Child program. For this application I am trying to write, I am ultimately going to need some GTK widgets, probably created via this GLADE tool, and then have them firing events back to Python code (as I am doing here as well). And in the backend, doing most of the work, will be the GStreamer Python library. This example just plays a tone through the sound card, but that's sortof similar to decoding and playing back video files. GStreamer does handle this, which is great. And ultimately, I want to figure out how to use something called GStreamer Editing Services to combine inputted .OGG video files together into a glorious edited result.

Tonight was awesome, and I'm finally feeling like I've got a stable setup here and some good ground to stand on to now move forwards with the actual app writing. There's still a lot of work ahead of me on this, and I'm going at it alone which is a little crazy given my generally busy work schedule and life in general. I could have put together a team for this but I think it's pretty tractable to get it done myself, I just need to keep chipping away at it. I really believe in this, and I want to make sure to get it done. Even if it does take me longer than I'd hope, I'm gonna keep chipping away at it whenever I can sort out larger blocks of time.

Once I get version 1 of XO Filmmaker out to OLPC, I'll upload it on Github for the Open Source community. At that point, I may try to source some more volunteers to help maintain and add new features going forwards, or at least offer up my services as more of a consultant/code-reviewer/project lead kindof role. If any budding young coders want to try to add some new features, I can offer advice/support/guidance which would be super fun too.

Glad to have made some progress and have some idea of how GStreamer works now. This is all quite exciting :)

1 comment:

josha said...

Sounds like an awesome project, Mike!