Transmageddon website offline

Just thought I let people know that my personal domain, linuxrising.org is offline atm,. due to a mess up when transferring the domain to a new registrar. This means my gnome.org email is out of comission atm, and that the Transmageddon website is down. Hope to get the situation sorted within a few days.

Back on Transmageddon and new GStreamer features

Been working on Transmageddon again this weekend as the work Edward has been doing on GES has been making its way into GStreamer-plugins-base and gst-python. The most import change for now is the new discoverer service. For those who used gst-python you might know the old version of it, which is basically an API for getting information about a multimedia file. Unfortunately the old Python version had some shortcomings, but thanks to the work that has been done for GES and Rygel we now have a new C based on in plugins-base which works a lot better. So those who had problems with Transmageddon in the past not recognizing files and thus not operating properly should now have more luck. Also the new discoverer process will tell me if a file is interlaced so I can easily now add support for deinterlacing in Transmageddon.

Anyway, I thought I share my half-done implementation of gst-discover in Python. You find a better version in C in gst-plugins-base/tools or a nice Vala version at live.gnome.org. But if you are familiar with Python the code below should at least give you an inkling on how to use the API from Python. Or check out the code of transmageddon for how to use the asynch version of the API.

#!/usr/bin/env python
# gst-python

import os
import sys

import pygtk
pygtk.require('2.0')
import gobject
gobject.threads_init()
import pygst
pygst.require('0.10')
import gst
import gst.pbutils

class discover:
    def __init__(self):
	self.audiostreams=[]
    def set_file(self,file):
        self.file_uri=("file://"+filepath)
	newitem = gst.pbutils.Discoverer(50000000000)
	self.info = newitem.discover_uri(self.file_uri)

	self.streaminfo=self.info.get_stream_info()
	self.duration= (self.info.get_duration()/1000000000.0)
	self.container = self.streaminfo.get_caps()
	seekbool = self.info.get_seekable()
	if seekbool is True:
		self.seekable="Yes"
	else:
		self.seekable="No"
	audiostreamcounter=-1

	for i in self.info.get_stream_list():
		audiostreamcounter=audiostreamcounter+1
		if isinstance(i, gst.pbutils.DiscovererAudioInfo):
			audiocaps=i.get_caps()
			self.audiostreams.append(gst.pbutils.get_codec_description(audiocaps))
			self.audiotags=i.get_tags()	

		if isinstance(i, gst.pbutils.DiscovererVideoInfo):
			self.videocaps=i.get_caps()
			self.videotags=i.get_tags()
			interlacedbool = i.is_interlaced()
			if interlacedbool is True:
				self.interlaced ="Yes"
			else:
				self.interlaced="No"
			self.videoheight=i.get_height()
			self.videowidth=i.get_width()


    def create_report(self): # Create properties report
		print "Analyzing " + str(self.file_uri)
		print "Topology:"
		print "  container: " + gst.pbutils.get_codec_description(self.container)
		beancounter=0
		for item in self.audiostreams:
			beancounter=beancounter+1
			print "    audio stream " +str(beancounter) + ": " + self.audiostreams[beancounter-1]

		print "    video stream: " + gst.pbutils.get_codec_description(self.videocaps)
		print " "
		print "Properties:"
		print "  Duration: " + str(self.duration)
		print "  Seekable: " + str(self.seekable)
		print "  Video interlaced: " + str(self.interlaced)
		print "  Video height: " + str(self.videoheight)
		print "  Video width: " + str(self.videowidth)
		print "  Audio Tags: " 
		audiofile_tags = {}
		for akey in self.audiotags.keys():
			audiofile_tags[akey] = self.audiotags[akey]
			print "      " + akey, '\t', self.audiotags[akey]
		print "  Video Tags: "
		videofile_tags = {}
		for vkey in self.videotags.keys():
			videofile_tags[vkey] = self.videotags[vkey]
			print "      " + vkey, '\t', self.videotags[vkey]

if __name__=="__main__":
    if len(sys.argv)>1:
        file = sys.argv[1]
        pwd = os.getcwd()
        filepath = os.path.join(pwd,file)
        discovering = discover()
	discovering.set_file(file)
        discovering.create_report()
    else:
        print "select an audio file"



This program should give you an output like this one:

python newdiscoverer.py /home/cschalle/Videos/diracpromo.vob 
Analyzing file:///home/cschalle/Videos/diracpromo.vob
Topology:
  container: MPEG-2 System Stream
    audio stream 1: MPEG-1 Layer 2 (MP2)
    video stream: MPEG-2 Video
 
Properties:
  Duration: 735.672
  Seekable: Yes
  Video interlaced: No
  Video height: 576
  Video width: 720
  Audio Tags: 
      audio-codec 	MPEG 1 Audio, Layer 2
      bitrate 	384000
      has-crc 	True
      channel-mode 	stereo
  Video Tags: 
      bitrate 	8000000

GStreamer Conference 2011

Discovered today that the cat is out of the bag and that it is now public that we will be co-locating the GStreamer Conference 2011 together with LinuxCon Europe, The Linux Kernel Summit and ELC-Europe in Prague this year. So set aside some days in October because this is a Linux and open source mega event you do not want to miss :)

Will be doing a more formal announcement in the coming weeks, along with getting a website set up for this years conference. I hope to see everyone who came to the GStreamer Conference in Cambridge last year and a whole lot of new faces at this years event! For those who missed last years event, know that some of the videos and most of the slides are available on the 2010 GStreamer conference website.

Summary of GStreamer Conference 2010

Had a really great time organizing and running the GStreamer conference this year. We had a ton of people attending and all the talks where packed (some of them maybe too packed even, like David Schleefs Orc talk. To bad not more people know about Orc because if widely used and deployed it could revolutionize the performance of Linux systems.

For those wondering videos (and slides) of the talk should start appearing online from next week, I will link to them from the conference web page and also send out an announcement.

Was also happy to see LWN picking up on the plans for GStreamer 1.0 (you have to wait a week unless you are a subscriber, but I do recommend to subscribe) that Collabora Multimedias own Wim Taymans announced in his keynote. Together with the rest of the GStreamer community members we will push forward next year to get the long awaited beast out the door, with Collabora Multimedia dedicating Wim to the task. This time it will happen.

In general I also think we managed to put together a good mix of talks at the conference, with a lot of technology talks centered on things like the mobile editing system we are building for GStreamer and MeeGo with Nokia, the advances in the Telepathy VoIP and video conferencing system and the drop inn ready DLNA support through Rygel. It clearly shows how we moved beyond the basic playback/recording scenario in GStreamer and moved on towards more advanced solutions and at the same time how we in the Collabora family are at the heart at driving a lot of those developments. Cheesy as it sounds I am extremely happy about how we are at a point now where we are not only able to provide a fun and challenging work environment for a lot of people, but also have the resources now to drive the development of projects like GStreamer and Telepathy forward beyond just addressing our clients most immediate needs.

I was not the only one enjoying myself at the GStreamer and CE Linux conference, for instance one of the newest members of the Collabora Multimedia family, Mauricio Piacentini and our Qt and KDE multimedia expert was here, reporting on his experience from the conference and talking a bit about our ongoing effort together with Nokia to great some great Qt C++ bindings for GStreamer.

Robert Swain reports on both the fact that his been with us for a year (time flies crazy fast) and on the talk by Benjamin Gaignard about the GStreamer and Android work we have been doing with them over the last year. I saw Harald Welte was a bit disappointed the glue code between GStreamer and Android has not been released, but as Robert points out, there was still major contributions happening from ST Ericsson to the code of GStreamer through this project, fixes and improvements that will greatly help anyone wanting to us GStreamer with Android.

My friend Thomas Vander Stichele also blogged about the event pointing out that we are a decent sized group of GStreamer greybeards at this point, with quite a few developers around who have about 10 years or more of GStreamer experience ;)

Anyway, considering what a great success the conference was I think there is no way forward except doing a new conference next year, so hope to see everyone I met at next years conference. Co-locating with ELCE seemed to work out really well for both us and them, but we have to wait and see what happens next year due to the big changes for the CE Linux conference due to the Linux Foundation merger, maybe Jim Zemlin doesn’t love us for instance :)

And for those I didn’t get to talk to or only speak to for a short while, I apologize but being the first one there was a lot of little things that needed sorting and fixing to make it all run smoothly, so I am sorry if I seemed stressed and distracted :)

GStreamer 2010 Conference starts tomorrow!

So people are starting to pile into the Collabora office here in Cambridge, in preparation for the GStreamer Conference 2010 and the CE Linux Europe 2010. My old friend Jan Schmidt arrived for instance from Australia yesterday and has been putting the finishing touches on his talk today. I strongly recommend seeinghis talk as he is working on something quite nifty. Not to say I don’t recommend the rest of our great list of GStreamer talks.

For those who have arrived early be aware that you can most likely register at the hotel this afternoon already (they where just waiting on some last material to open registration when I was there) and thus save yourself some time tomorrow morning.

Growing the GStreamer family with QtGStreamer

For those who might have missed it we recently starting an effort together with Nokia to create a full set of Qt friendly C++ bindings for GStreamer. This effort is spearheaded by Mauricio Piacentini, building on the original code by and working with George Kiagiadakis, who has also started a blog about the Qt GStreamer bindings. In addition for its use in MeeGo we also hope that this effort will make the KDE community first class citizens of the GStreamer community and thus help push multimedia on the free desktop forward. So be sure to bookmark Mauricios blog so that you can follow his progress, he plans on blogging regularly about the effort. As part of this effort the code will also be hosted along with the rest of the GStreamer modules on freedesktop.org.

GStreamer Conference 2010

So in preparation for the GStreamer Conference 2010 we had some shirts made for the presenters and organizers. Think they ended up looking quite swish. Here is me modelling the silver colour variation :)

Our swish new GStreamer shirts for the GStreamer Conference

GStreamer Conference 2010 just 18 days away!

So there is only 18 days left before GStreamer Conference 2010 opens its doors in Cambridge, UK. So be sure to mark the 26th of October in your calendar. Preparations are going smoothly with final items being sorted at the venue and programs getting printed. Registrations are also going well with around 120 people signed up to attend so far. If you plan on coming but having registered yet be sure to do so quickly, because there is likely to be a last minute rush of registrations and you don’t want to risk not being able to register and attend because the venue capacity was reached.

Also be sure to check out the list of presentations which is packed full of presentations by the GStreamer community best and brightest and leading technology companies.

Also check out the agenda for the CE Linux Europe Conference, which has established itself as the leading European conference for discussing the use of linux in embedded devices. Since it happens in the same venue as the GStreamer conference, on the 27th and 28th, you can very easily combine the two.