<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d22492444\x26blogName\x3dWireless+Utopia\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://witopia.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://witopia.blogspot.com/\x26vt\x3d2313595909737347303', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Wireless Utopia

The journey towards a free wireless world.

Tremor Guide

Monday, February 05, 2007

Tremor is a fixed point version of the Ogg Vorbis decoder meant for embedded systems which do not have a Floating Point Unit. Its an excellent piece of software developed by the Xiph foundation. Unfortunately its not maintained properly. It took me some time to get it all together. So here is a guide for those who are interested.

The trunk version does not work for me; autogen fails. But the low mem branch wroks fine. Download it straight from the svn here.

This version has a big memory hole. The patch for that is available from the mailing list. Download it here.

There is a performance improvement patch which uses IMDCT by Sandvall. That patch can be found here (thesis is here). Many thanks to Frantisek Dufka for sharing it. I had to make some changes in the makefile to get this working properly.

There is another patch which increases the performance by 15 %. I havent tried it out but its available here. Dunno if its already there in the low mem branch.

Thats all that is needed to make it work. Also check out the Rockbox's version of Tremor. They seem to have made a lot of changes, which again I havent tried out.

The one thing that is missing from the Ogg Vorbis specification is redundancy. The primary focus there seems to be encoding/decoding from/to files. I have been using it for streaming and packet losses lead to some nasty breaks. I am entertaining thoughts of adding that capability to Vorbis. Sounds like a good challenge! I am hard pressed for time right now but. :(
posted by Rajiv, 2:57 AM


Add a comment