Bellagio中用的libmad的API有以下几个:
void mad_stream_init(struct mad_stream *stream)
void mad_frame_init(struct mad_frame *)
void mad_synth_init(struct mad_synth *)
以上三个API是初始化API;
int mad_header_decode(struct mad_header *, struct mad_stream *)
负责MP3文件的头解码;
int mad_frame_decode(struct mad_frame *, struct mad_stream *)
负责MP3文件的帧解码;
void mad_stream_buffer(struct mad_stream *stream,
unsigned char const *buffer, unsigned long length)
将未解码的MP3文件数据与stream关联起来;
void mad_synth_frame(struct mad_synth *, struct mad_frame const *)
void mad_stream_finish(struct mad_stream *stream)
void mad_frame_finish(struct mad_frame *)
1)调用初始化API;
2)调用mad_stream_buffer,将数据传递给stream;
3)调用mad_header_decode,解析文件头,将文件头信息保存到frame->header中;
4)调用mad_frame_decode,解码帧,将解码后的数据保存到frame中;