It is always nice to see various pieces of code that has been under development for some time start coming together and new functionality get unlocked. Since it is also of critical importance to Transmageddon I have been following the work of Edward Hervey on the gst-convenience library. Well actually gst-convenience isn’t really a separate library, it is a planned extension to GStreamer itself which makes a lot of things a lot easier to do with GStreamer, like advanced multimedia attribute discovery and encoding.
One of the first projects set to benefit from this is the Rygel DLNA library written by Zeeshan Ali. Zeeshan recently posted a great post on how through utilizing gst-discoverer they are now able to do proper DLNA profile detection in the gupnp-av library, you can find the full email here, it is definitely worth a read in my opinion. One thing Zeeshan doesn’t mention in his email, but as I see as one of the big advantages of this new system is that it is also easy to do intelligent transcoding. No matter if you are doing automatic DLNA transcoding or manual transcoding to your device, you normally want to transcode as little as possible. Dumb transcoding (which is what my current Transmageddon profiles do, just transcoded the audio and video to a known working target, regardless of if either the incoming video or audio already was in an acceptable state, thus taking more resources and decreasing audio and video quality more than needed. With smart transcoding you instead cross check between input and output the possibilities and you figure out an optimal remuxing and or transcoding strategy. Thanks to gst-convenience this is not easy to do in Rygel and it will be easy to do in Transmageddon.
One thing holding is a little back atm is that doing bindings using GObject introspection seems a little raw still. Since Rygel and gupnp needs Vala bindings and Transmageddon needs Python bindings it would be nice if we could get the bindings generation working smoothly, but so far it hasn’t been. If anyone got any experience with this I am sure the help would be appreciated.