1.1同步方式和异步方式
MadLib是以帧为单位解码mp3文件的,所谓同步方式是指解码函数在解码完一帧后才返回并带回出错信息,异步方式是指解码函数在调用后立即返回,通过消息传递解码状态信息。
1.2 Mad API 的调用顺序
1、mad_decoder_init()【decoder.h】
Minimad.c中给出了一个函数调用过程的实例。首先定义一个mad_decoder变量(解码器对象),这时不需要对解码器对象进行任何初始化。调用mad_decoder_init()函数对刚才创建的decoder对象进行初始化,mad_decoder_init()函数定义于decoder.h头文件中。原型如下:
void mad_decoder_init(struct mad_decoder *, //解码器对象指针
void *,//自定义消息指针,这个值被复制进mad_decoder的cb_data成员
enum mad_flow (*)(void *, struct mad_stream *),//input回调函数
enum mad_flow (*)(void *, struct mad_header const *),//header回调函数
enum mad_flow (*)(void *,struct mad_stream const *,struct mad_frame *),//filter回调函数
enum mad_flow (*)(void *,struct mad_header const *,struct mad_pcm *),//output回调函数
enum mad_flow (*)(void *,struct mad_stream *,s