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
> 

Reply via email to