AMR in Transmageddon

So after the successful integration of the new AMR plugin into GStreamer, I went about doing some testing with Transmageddon. Discovered that it didn’t work so well. Turned out to be two different issues. First after some communication with Iago and then Martin Storsjö, Martin managed to fix some bugs in the original encoder which meant it was broken on x86_64 systems. Then even when that was fixed I couldn’t get Transmageddon to create a working file. I realized I should use the graph creation system to debug it, but this time I decided to add it as a permanent feature to Transmageddon, so that anything I or anyone else needed a graphical output of the transcoding process it would be very easy to do. So in the current git master version of Transmageddon you now have a ‘debug’ option under the Help menu. If you choose it, graphwiz and Eye of Gnome will be called, giving you a graphical representation of the pipeline at the time of choosing ‘debug’. With that in place I could quickly see that my audioresampler had ended up outside the standard pipeline and was able to fix the issue. After that encoding into amr-nb works without a hitch.

This screenshot of my desktop shows Transmageddon after having created a 3gpp file with AMR-NB audio, Totem playing that file and finally EOG displaying the pipeline used to create the file in Transmageddon. In fact you can create such images to view even if you don’t have any issues as it will not affect the successful completion of your transcoding process.

Great thing now is that any user of Transmageddon who experience a hang or similar can just choose ‘debug’ and add the debug image to a bug report. In a lot of cases I would be able to see exactly what goes wrong just from that. Having such a debug tool in the UI might not be the most usability PC thing to do, but at this stage in the development process I think there will be enough issues faced to warrant it.

A big thanks to Martin Storsjö for his effort today in fixing this issue, very much appreciated.

Collabora at the Gran Canaria Desktop Summit

Collabora had a large group of people at the Desktop Summit this year, and also a very large group giving talks. Since most of those talks either have slides online now, or both slides and video recordings I thought I list a little summary here for those interested.

So following the random order of our internal wiki:

  • Edward Hervey did a talk and short demo of the great strides forward we are making with PiTiVi
  • Guillaume Desmottes did a talk about how to use tubes and telepathy to make GNOME a more collaborative desktop
  • The Orkney islands own Will Thompson did a talk about profiling and optimizing d-bus APIs. Wills talk is also available on video
  • Pierre-Luc Beaudoin did a talk about libchamplain and Geoclue and how to make a location aware desktop
  • Youness Alaoui did a talk about our firewall punching library libnice
  • Ian Monroe did a talk about qtscript bindings for Telepathy. You can watch Ian in action here.
  • Olivier Crête did a talk on how to integrate farsight2 into your project
  • In addition to this Wim Taymans did a tutorial on RTP development using GStreamer and Davyd Madeley lead a BOF about writing documentation.

    Collabora and Free Codecs

    While I am of course very happy about the progress we are making in projects like GStreamer and Telepathy in regards to supporting all kind of formats and protocols, the thing we do care the most about here at Collabora is free codecs. I guess I often tend to talk in this blog about the more playback oriented parts of that puzzle, like Vorbis, Theora and Dirac, but there is another equally important field where free codecs have an important role to play and that is for communication. Collabora has already spent significant resources to ensure that Empathy can do video conferencing using Speex and Theora, but we feel that is just the beginning of what can be achieved.

    This is why we are very happy at Collabora to send out this position paper in support of a new IETF working group to define some free and open codecs targeted at voice over IP and similar solutions. Building on the existing work done in the form of Speex and CELT, I am sure great standardized solutions can be found in this field by the IETF through such a working group.

    Together with the effort behind pushing free formats through the Firefox, Opera and Chrome HTML support this is another step forward in making free formats viable and major players in the codec field.

    So once again be sure to check out our position statement on getting IETF to set up a work group for this.

    AMR support in GStreamer

    I blogged about some time ago the effort of Iago Toral Quiroga to use the Android AMR implementations to create GStreamer plugins. Work on that goal has been happening as part of bug 584890 and we finally managed to get it merged a few days ago. So in gst-plugins-ugly you now have a nice working set of AMR plugins for AMR-NB decoding and encoding and a plugin for AMR-WB decoding. Also included is a parser that handles both AMR-NB and AMR-WB.

    A major change in the scope of the plugins is that we no longer plan to include a full copy of the Android code, instead we are going to share a common copy with other projects, a package maintained by Martin Storsjö. This copy is hosted here on Sourceforge. For those wanting to test it out together with git master of gst-plugins-ugly and are using Fedora, I created these opencore-amr RPMS today based on their git master. The 0.1.1 release got some build system bugs which are fixed in git master, but the next release should build out on the box on most systems.

    A big Thank You to Iago and Martin!

    ASF muxing support in GStreamer

    We have seen some great progress so far on the GStreamer Google summer of code projects. The project I have been following the most closely as it has a direct impact on Transmageddon is Thiago Sousa Santos asfmuxing and Windows media RTP streaming project. It just hit a major milestone in the sense that Thiago commited the code he has been working on into gst-plugins-bad. The muxer works really well with Windows Media Audio and Video 1,2 and 3 (including VC1) supported and mp3 audio supported. I already added ASF support to Transmageddon based upon it and while we still have a few issues to sort out to enable remuxing support it is a really nice step forward for the GStreamer project. A big thanks to Thiago for his work so far.
    Screenshot of ASF creation with Transmageddon

    Real Networks makes me smile

    As many of probably have noticed GStreamer is experiencing fast growth in the embedded and mobile space with major companies shipping phones or other kind of devices using it. The Palm Pre being among the latest. Of course not everyone appreciate this as much as we do at Collabora Multimedia.

    Jan pointed me to this little piece of FUD that had been added to the GStreamer wikipedia article recently:

    While the project is licensed under LGPL, there is no copyright indemnity for source code available from Fluendo or other sources primarily because the GStreamer project does not collect copyright assignments from each and every one of its contributors. This incurs significant risk on commercial distributors of GStreamer.

    The funny part was that the IP address of the anonymous person changing this was 207.188.29.244. So out of curiosity we did a little whois on that IP address and whose name do we see popping up. Well none other than Real Networks. Seriously guys, if you are going to try to add anonymous FUD to wikipedia articles you might want to do it from outside your own network….

    Anyway, I removed it now, but it is still viewable in the Wikipedia history of course.

    More important than the BBC

    So the cast and crew of Syntax Era is filming outside today and will be filming a bit inside our office either today or tomorrow. The funny part I noticed though is that if you Google for Syntax Era, myprevious blog entry on Syntax Era is ranked higher than the official BBC page for the show. I guess that means I am more important in this new Internet era than the BBC is ;)

    Transmageddon
    Thought I should mention that I got remuxing working in git master of Transmageddon. This means that for supported formats I will be able to preserve either or both of the original audio and video stream when converting to another container format. Still needs a lot of cleaning up before I release, but all the hard stuff is done.

    All hail the windmill tilters

    Been growing ever more tired of the posts about RMS and his talk at GCDS. I didn’t agree with his conclusions on the technical/legal subjects covered and the whole emacs/st.igutius thing is becoming a bore, but I suspect more than a little that the current outpouring over his alleged sexism is more about people finally finding a good meme to use to latch out against someone they don’t like and disagree strongly with, rather than a sudden realization that the St. Ignutius routine he has been doing for the last 15 years is overtly sexist. One could certainly argue that there was a few passages in there that should be altered, but I am equally sure that if it had been someone else, most people ranting currently would have been willing to write it off on the goodwill account.

    On that topic I think the whole issue of sexism in the community is somewhat of a joke. It basically appeared on the stage after the following steps was taken.
    Step 1: The lack of female participation was identified as a problem.
    Step 2: People wanted to address the problem
    Step 3: The following algorithm was used to determine the source of the problem:

    If "well reasoned explanation can be found" is true:
        address_problem()
    else:
        print "sexism"
    

    Since then well meaning people of the community has followed in the footsteps of another well meaning fool and been tilting at the windmills.

    So please continue fighting against the evils you see in the world, but be aware that crucifying RMS is probably not the solution.

    And before someone starts shouting at me for not realizing that sexism do exist in the open source world, please save yourself the energy. I am sure it exist, along with racism, anti-semitism, bigotry, general intolerance, gay and lesbian hating, supremacism, communism or whatever evil you want to come up with. I just don’t buy into using them as the default fallback whenever the reason for something needs to be explained.

    GCDS summary

    Been a great week at the Gran Canaria Desktop Summary. Met up with a lot of old and new friends, seen a lot of great talks and even managed to improve my tan quite a bit. Yesterdays GStreamer summit went well, we managed to snag the labs 2-6 room and had a long and mostly fruitful discussion about GStreamer 1.0. The general plan going forward will be to increase our number of element baseclasses, in order to both improve the general quality of elements, but also to make the job having all 0.10 plugins available with 1.0 more viable. Our general goal is still to match GStreamer 1.0 with GNOME 3.0, but it will be a tight fit so we can’t be sure to make that deadline, unless GNOME 3.0 slips a bit. A big thanks to Jan for leading the meeting and to Thomas for taking on the job of writing a technical summary of the discussion.

    It was also nice while here to meet Daniel Taylor of Arista fame and to discuss some of the practical challenges ahead for both Arista and Transmageddon.

    After a bit disappointing experiences with the food the first few days we found a wonderful tapas place two days ago called La Tasca de Los Vinos. It specializes in wines, but also serve a lot of really nicely done tapas. And they also have some really nice meat which they bring out a large raw slab of to your table and then you negotiate the piece they will cook for you. The owner promised us some special succulent pork if we came back there again today, so we might have to do that :). Had a lot of fun during dinner, like Jan starting of speaking like a nihilist with a german accent and after a few iterations, drinks and challenges doing a stuttering nihilistic pirate with a german accent, with great success :)

    Been also hacking steadily on Transmageddon while here, moving closer and closer to remuxing support. Was reminded of the great tool done by Stefan which lets you generate a graphical representation of your applications pipeline when you get an error. So in Transmageddon GStreamer buswatcher function I now have a line that reads:

    gst.DEBUG_BIN_TO_DOT_FILE (self.pipeline, gst.DEBUG_GRAPH_SHOW_ALL, 'transmageddon.dot')

    Which in combination with the GST_DEBUG_DUMP_DOT_DIR environment variable dumps a file that graphwiz can use to generate the linked image. Laszlo of Jokosher fame mentioned during the GStreamer Summit that he mostly use that these days for debugging issues rather than the GST_DEBUG logging (which can be quite verbose).

    Finally, I was also very happy with the Collabora Multimedia Polo shirts we got made. People seemed to really like them and I ran out of the smaller sizes very quickly even if I generally only offered them to people with a GStreamer track record. I think the conference went really well both for us in the Multimedia group and for Collabora in general. Wims tutorial on developing RTP applications with GStreamer was well attended and Wim is really good at explaining stuff, I have no problems seeing why we have customers asking Wim to come back time after time to do GStreamer training sessions and assist with design discussions. Edwards talk on PiTiVi also went really well and I think people where quite impressed with how far it has come. With the additional features being rolled out in the coming Months and the discussions I had while here, I think PiTiVi will quickly end up being shipped by all the major distributions as part of their default desktop setup. Tim also got some positive feedback on Thoggen and I think finally accepted that he actually do have quite a lot of users. He even promised to finally add Dirac support to Thoggen.

    GStreamer Summit 2009

    ok, so we ‘kinda’ got a room for tomorrow, Lab 2-6 at the University from 11.00 until 14.00. After two Months of emailing it turns out I am not even able to 100% reserve the room one day ahead, which is beyond ‘impressive’.

    Anyway, anyone interested in attending the GStreamer Summit meet at Lab 2-6 at 11am tomorrow (Thursday) best case,we got a room and worst case we are at least assembled so we can go beat the crap out of Agustín.