Le 2012-07-26 14:08, Bertrik Sikken a écrit : > Hi all, > > Me (bertrik) and freqmod (Frederik M.J. Vestre) have been working on porting > a new codec to rockbox, the opus codec, see also http://www.opus-codec.org/ > This codec is backed by an IETF draft and I consider it as the next > evolution beyond vorbis and speex, with specific support for both music and > speech. It is wrapped in an ogg container, like vorbis and speex. > > The current development of the port can be found at: > http://gerrit.rockbox.org/r/#/c/300/ > freqmod also has a github repo (currently a few days older) at: > https://github.com/freqmod/rockbox-opus > > Stuff that works: > * Playback on both the simulator and on target > (tested on the Sandisk Sansa Clip Zip + simulator) > * Reading metadata (opus metadata is very similar to vorbis metadata) > * UI shows playback progress in the progress bar > > Stuff that still needs work: > * Memory allocation in the codec main is not fully consistent yet (probably > leaking some memory), so playing several files in sequence may not work
What do you mean by leak? codec_free() is a void operation, all memory which is malloc() (or realloc()) is lost (until next file I hope). Ideally we should go and replace malloc() by static buffers using worst case possibilities when possible. > * Stack usage is still quite high, I've seen about 10k for music and 36k > for speech on the clip zip, our stacks are currently 10kB by default. I'd guess some big buffers are allocated on stack (rather than usage being due to recursion) > * Applying global gain from the opus audio file is not implemented > (not sure if replaygain is working) Fixed (it's part of the codec, not related to replaygain although we might want to implement replaygain for e.g. vorbis too). > * Seeking is not implemented yet. We have several codecs now using the ogg > container, I think it should be possible to share more ogg-stuff between > these codecs, like seeking. > * I used the latest release of libogg (1.3), it is a bit wasteful because > it does a lot of memcpy'ing when processing a stream, also it performs > CRC checks on the data. Apparently there is a libogg2, which avoids at > least the memcpy. > * There are still some warnings emitted from the compiler. Fixed > > Please try it out and help enhancing it further. > > Kind regards, > Bertrik Sikken >