Rockbox mail archiveSubject: Re: Opus codec developments
Re: Opus codec developments
From: RafaŽl Carrť <funman_at_videolan.org>
Date: Thu, 26 Jul 2012 20:25:18 +0200
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:
> freqmod also has a github repo (currently a few days older) at:
> 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.
> Please try it out and help enhancing it further.
> Kind regards,
> Bertrik Sikken
Received on 2012-07-26