Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Altera_Forum
Honored Contributor I
936 Views

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

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
Altera_Forum
Honored Contributor I
65 Views

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++; }
Altera_Forum
Honored Contributor I
65 Views

Could you provide me with the working project? 

 

Jeff Goeders 

jeffrey.goeders (GMAIL)
Reply