There was one issue I ran into when implementing MP3 importing support for Audacity that I meant to ask about.
It seems that when you pass the decoder data from the input callback, it tries to synthesize everything you give it. If the end of the buffer you passed ends in the middle of a frame, you get seams. Passing all the data to the decoder at once solves the problem, but that's not practical.
As far as I can see, you can't get any metainformation (like the size of each frame) until you pass it data. Once you pass it data, you've probably misaligned the frame and produced garbage. What's the proper way to handle this situation?
Joshua