Question

I'm looking for a software based codec library to be used in embedded application (C/C++). I'm interested in both commercial and free codec libraries. Any suggestion will be welcomed.

In addition, if you have any experience with OpenSL ES and know which software/hardware solutions are compatible, I would be glad to hear about it.

I need to support popular codecs. MP3 is a must. I'm implementing a media player reference for an embedded application and can't just tell the user: "Hey convert all your music library to Vorbis; it's much better." Support for the MP3 codec mandatory, but I would be glad to find a more advanced library handling more codecs (more audio codecs, video codecs, etc.)

Was it helpful?

Solution

Disclaimer, full disclosure, etc: I currently work there as a contractor.

For one, are you interested in just decoders or full codecs (decoders+encoders)?

I guess the answer depends on your exact situation. If you're looking for a full player for your embedded platform, NXP Software could be a solution. They provide other applications as well, such as a recorder.

OTHER TIPS

Take a look at libvorbis, an open source BSD audio codec that's quite good. There is also a reference decoder for vorbis named Tremor that uses only integer arithmetic, and thus can be used on architectures without floating point.

The Vorbis codec is open source and is a good alternative to MP3.

After taking a quick look at the OpenSL ES API, it seems there are already some codecs defined:

#define SL_AUDIOCODEC_PCM         ((SLuint32) 0x00000001)
#define SL_AUDIOCODEC_MP3         ((SLuint32) 0x00000002)
#define SL_AUDIOCODEC_AMR         ((SLuint32) 0x00000003)
#define SL_AUDIOCODEC_AMRWB       ((SLuint32) 0x00000004)
#define SL_AUDIOCODEC_AMRWBPLUS   ((SLuint32) 0x00000005)
#define SL_AUDIOCODEC_AAC         ((SLuint32) 0x00000006)
#define SL_AUDIOCODEC_WMA         ((SLuint32) 0x00000007)
#define SL_AUDIOCODEC_REAL        ((SLuint32) 0x00000008)

You probably should find out if you are limited to those.

Encoding or decoding?

LAME (mp3) and FFmpeg (almost everything else, audio and video) should do the trick, though I believe the Vorbis encoder with FFmpeg is poor quality, and you should use a separate one where possible. (I don't know whether this advice is still current.)

Disclaimer: I've been reading quite a bit about codecs recently, but I have not yet done anything with them, so I don't really know what I'm talking about yet.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top