FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
5341 Discussions

DE2-115 - MP3 decoding from Flash with libMAD - searching examples

Honored Contributor II

Hello Alteraforum, 


I am searching for help, with the libMAD, because it drives me mad. :) I am working on an easy example to decode a MP3-file from flash, decode it into sram and output the PCM from there. 


I have verified, that the output is working. So when I read an PCM (16bit, 44.1kHz) from the flash and output it, it plays nice. I then tried to write and read from sram, no problem. I then tried the same with a MP3 and libMAD. As codebase I tried to adept the minimad.c example, but I do not get it working and I even can't really determine where the error occurs. There is audio output, but just plain noise. 


Has someone here an easy example for the DE2-Family that he would share with me, where you decode an MP3 with libMAD and use the Wolfson to output the data?  


(please don't refer to the Neek-Example, because there they do so much more to output the id-tags and read the files, I have looked quite deep into that example already). 


I think my problem lies somewhere in the scale function or I get mixed up with the endians. 


Any example code would be really appreciated. 


Yours, Peter.
0 Kudos
2 Replies
Honored Contributor II

Ok, I got it running now. The problem was the output method of the minimad.c example. I have now written some new code for it, see below. 


//j is a global variable, that i use to count the length of the pcm. //I use it to output from the sram in another method while (nsamples--) { unsigned int sample; //i am sure, that i only decode stereo, so I don't check nsamples == 2 unsigned int audioausgabe = 0; //sample = scale(*left_ch++); sample = (*left_ch++); audioausgabe = sample&0xFFFF; audioausgabe = audioausgabe << 16; //sample = scale(*right_ch++); sample = (*right_ch++); audioausgabe = audioausgabe|(sample & 0xFFFF); //write to sram the resulting 32bit word IOWR(SRAM_BASE,j,audioausgabe); j++; }
Honored Contributor II

Could you provide me with the working project? 


Jeff Goeders 

jeffrey.goeders (GMAIL)