This one time, at band camp, peter@neocoder.net wrote:
I am trying to decode a mp3-file 100kB at a time.
The core of the problem is that your mpeg frames may not be an integer divisor of 100kB.
I'm not familiar with the mp3-format structure but i guess that the data in the file should be sent to the decoder in complete blocks. I was hoping that the decoder would save incomplete data from the end of the previous buffer sent and join them with the next buffer sent. But it isn't ?
Nah, you should do that yourself.
So if I want to decode small blocks of the file. If I look through the file and only send complete blocks of data to the decoder.
It's been a while since I wrote any code against libmad, but I'm pretty sure you get back a count of how much data was eaten.
So, feed the decoder data until you've done 100kB and then finish the frame. You get back a count of how much data was eaten and how much is left in the buffer, and you can then feed that remaining data to the decoder the next time around.