libmad解码mp3估计是最好的开源解码器了吧?portaudio后端支持比较多,openal-soft也不错,如果喜欢音效可以考虑一下,这个都是跨平台的,这个程序应该是不用修改就可以在windows和linux下面运行的,portaudio没有使用回调函数而是使用block I/O,可能要v19的版本才支持,我用的是v20140130的v19版本
代码如下:
//libmad portaudio play mp3
#include <stdio.h>
#include <string.h>
#include <mad.h>
#include <portaudio.h>
#define BUFFER_SIZE 16384
#define FRAMES_PER_BUFFER 1152
//
void check_error(mad_stream stream);
static inline signed int scale(mad_fixed_t sample);
//
int main(int argc,char* argv[])
{
FILE* fp;
mad_stream stream;
mad_frame frame;
mad_synth synth;
mad_header header;
unsigned char inputbuffer[BUFFER_SIZE];
//
PaStreamParameters outparams;
PaStream* pastream=NULL;
PaError paerr;
//
if(argc!=2)
{
printf("Usage:%s mp3file\n",argv[0]);
return 1;
}
fp=fopen(argv[1],"rb