二、这只是一个核心,对于解码调用很简单,二个初始化
_mp3dec.make_decode_tables(32768);//这个数值可以用来减少音量
_mp3dec.init_layer3(SBLIMIT);
解码时,只要读取正确的一帧数据,拷贝到set_decode_buf()返回的解码缓冲区里,然后调用do_layer3解码既可返回wav波型数据,当解码到超过一定的大小AUDIOBUFSIZE时,就送到声卡处进行播放。详情见
包内播放代码中的readFrame和decode两个函数处的代码,虽然是C++的代码,其实是可以很简单的改写成C代码的。主要过程就这些,解码帧信息的过程和文件读写过程,包括同步帧的代码(它的作用就是查找帧,跳过可能有坏帧的部分继续解码),可能各人在编程上的不一样,这些代码完全可以自己尝试着查找帧信息相关文章写出来,有兴趣的可以完全可以根据这些原理,自己动手写C程序来实现调用这个解码器,或许当你写出来以后,听着从音箱里传出来的音乐的那个时间,会发现音乐播放的底层原来是这样的。
_mp3dec.make_decode_tables(32768);//这个数值可以用来减少音量
_mp3dec.init_layer3(SBLIMIT);
解码时,只要读取正确的一帧数据,拷贝到set_decode_buf()返回的解码缓冲区里,然后调用do_layer3解码既可返回wav波型数据,当解码到超过一定的大小AUDIOBUFSIZE时,就送到声卡处进行播放。详情见
包内播放代码中的readFrame和decode两个函数处的代码,虽然是C++的代码,其实是可以很简单的改写成C代码的。主要过程就这些,解码帧信息的过程和文件读写过程,包括同步帧的代码(它的作用就是查找帧,跳过可能有坏帧的部分继续解码),可能各人在编程上的不一样,这些代码完全可以自己尝试着查找帧信息相关文章写出来,有兴趣的可以完全可以根据这些原理,自己动手写C程序来实现调用这个解码器,或许当你写出来以后,听着从音箱里传出来的音乐的那个时间,会发现音乐播放的底层原来是这样的。