The answer is likely yes, but it is by no means simple. Its on the bottom of my to do list (at least investigating exactly how difficult it would be), but given the current priority of things, it wont be for many months before I look at it.
As a starting point, find some code for an integer-only MP3 decoder... then decompose the algorithm, and try to implement it in propeller assembly code. If one cog is not enough, you may have to divide the task between several cogs. It should be doable; I am not sure one cog can do it.
I used to have an old SGI Indigo playing mp3's up to 192Kbps. (95 percent CPU utilization) The endoder was Amp, and it's open source. Probably was a floating point code though...
The Ogg Vorbis codec (similar to mp3), has an integer code base to examine.
A dual-licensed integer only MPEG audio decoder; free for GPL projects, $$$ for closed source projects.
MAD appears to be 'THE' integer only decoder to use.
I'm releasing a ADPCM object into the Object Exchange in the near future along with tools to convert the audio over.
It compresses down 1/6th of wave and only needs one COG.
I wouldn't be useful for projects that need to play back MP3s though, such as a propeller based MP3 player.
Instead it would be useful for people who need to add voice or audio samples to their projects as another form of output.
Like talking Robots or a talking time clock for example.
The nice thing is it only needs one COG and doesn't take up any HUB-ram for decoding, so anyone with a COG to spare can add audio to their project.
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Paul Baker
Propeller Applications Engineer
Parallax, Inc.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Paul Baker
Propeller Applications Engineer
Parallax, Inc.
I used to have an old SGI Indigo playing mp3's up to 192Kbps. (95 percent CPU utilization) The endoder was Amp, and it's open source. Probably was a floating point code though...
The Ogg Vorbis codec (similar to mp3), has an integer code base to examine.
http://www.underbit.com/products/mad/
A dual-licensed integer only MPEG audio decoder; free for GPL projects, $$$ for closed source projects.
MAD appears to be 'THE' integer only decoder to use.
http://www.mp3-tech.org/programmer/decoding.html
Helix fixed point mp3 decoder:
https://datatype.helixcommunity.org/mp3dec
A list of links to free source code for MP3 decoders
http://www.mp3-tech.org/programmer/docs/2001MAR26_DSP_MSD_TAC.pdf
An interesting paper on integer-only DSP decoding
Apparently a 30MHz ARM can do it, with about 50k of ram.
I think two cogs, and careful memory optimizations should do it.
Hope this helps!
Bill
It compresses down 1/6th of wave and only needs one COG.
I wouldn't be useful for projects that need to play back MP3s though, such as a propeller based MP3 player.
Instead it would be useful for people who need to add voice or audio samples to their projects as another form of output.
Like talking Robots or a talking time clock for example.
The nice thing is it only needs one COG and doesn't take up any HUB-ram for decoding, so anyone with a COG to spare can add audio to their project.
Post Edited (Ym2413a) : 10/4/2006 3:27:05 PM GMT