views:

406

answers:

4

Hi,

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

In additional if somebody have any experience with OpenSL ES and know which software/hardware solutions are compatible i will be glad to hear about.

Thanks.

Clarification:

I need to support popular codecs mp3 is a must. I'm implementing a media player reference for embedded application and can't just tell user: "hey convert all your music library to Vorbis it's much better" :)

Additional clarification:

I'm looking for mp3 codec which is mandatory, but will be glad to find more advanced library handling more codecs (more audio codecs, video, codecs etc ...)

+1  A: 

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.

jassuncao
As far as i understand OpenSL is a framework, an interface definition not an actual codec implementation, so it's a good start but not exactly what i need.
Ilya
+2  A: 

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.

danvari
+1  A: 

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.

Pierre Lebeaupin
Hm, i aware about NXP software even visiting them for meeting. Good point, they might have what i need. Thanks, i will renew my contacts here...
Ilya
A: 

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, an you should use a separate one where possible.

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.

TRiG