Friday, July 1, 2011

GstTranscodeBin is (hopefully) done

I now have transcodebin doing actual transcoding as part of rygel, so I think it's time to actually publicize some git repositories.

If you're wondering what I did over the past few weeks, aside from the annoying delays which kept me from my chair at times... I moved out all the transcoding logic from Rygel into a separeate gstreamer plugin called gst-transcode. The plugin can be spawned as "transcodebin" from the element factory; it provides a sink and a src pad. You also have to set the "profile" property with a GstEncodingProfile just like encodebin. Anything coming in the sink pad gets autoplugged and transcoded, and output on the src pad.

Transcodebin is available on this github repo:
https://github.com/kmeisthax/gst-transcode

There's also a test application in tests called gst-transcodetest which grabs a DLNA profile by name from gupnp-dlna and tries to transcode a file into the target format. Compilation of the test application is disabled by default; since it's not very useful, adds a build-dependancy on gupnp-dlna, and I plan to remove it eventually. If you want to compile it look in the Makefile.am and configure.ac files to see what needs to be uncommented.

It also has debian packaging which I added back before I spent two days switching from Ubuntu to Fedora in search of newer packages, then to Fedora Rawhide to get the bleeding edge. That ordeal is immortalized on my twitter.

Likewise I patched Rygel to use transcodebin; it removes about 50 lines of code from rygel-transcoder.vala. I've also got a github for that here:
https://github.com/kmeisthax/rygel

Master is just a mirror of the gnome git; my patch is in branch gsoc2011-transcoding. I've tested this on a Sony Bluray player, specifically playing an OCRemix album in OGG format live-transcoded to LPCM through Rygel and transcodebin.

There's a known bug; if I do OGG->LPCM through the gst-transcodetest program, autoplugging fails. OGG->MP3 works, and so does Rygel's LPCM transcoder. Since I next plan to replace Rygel's transcoders with a single generic transcoder fed by gupnp-dlna's profiles, I expect this bug to rear it's ugly head when said work is done.

No comments:

Post a Comment