libmad 解码库用法
//初始化 mad_stream_init(&pDecoder->stream); mad_frame_init(&pDecoder->frame); mad_timer_reset(&(pDecoder->timer)); mad_synth_init(&pDecoder->synth); mad_stream_options(&pDecoder->stream, MAD_OPTION_IGNORECRC); //解码过程 mad_stream_buffer(stream, pBuffer, mlength); while(1){ if(pMad->nMadFlag&MAD_HEADER_FLAG) { if(-1==mad_header_decode(&pMad->frame.header,&pMad->stream)){ if(!MAD_RECOVERABLE(pMad->stream.error)) break; } mResult=wzMadReadHeader(pBuffer,ulSize,&pMad->stream); MADDECODER_ERROR(mResult,nResult); } if(-1==mad_frame_decode(&pMad->frame,&pMad->stream)) { if (!MAD_RECOVERABLE(pMad->stream.error)) break; } else pMad->nBadLastFrame=0; if(pMad->nMadFlag&MAD_FILTER_FLAG) { mResult=wzMadFilter(pBuffer,ulSize, &pMad->stream,&pMad->frame); MADDECODER_ERROR(mResult,nResult); } mad_timer_add(&pMad->timer,pMad->frame.header.duration); mad_synth_frame(&pMad->synth,&pMad->frame); if(pMad->push_buffer) { //write file MADDECODER_ERROR(mResult,nResult); } } //释放资源 mad_synth_finish(&pMad->synth); mad_frame_finish(&pMad->frame); mad_stream_finish(&pMad->stream);
以上代码摘自官方例子,自己只是做了一些简单的修改。
以上代码兼容所有平台。
from:http://blog.csdn.net/weinyzhou/article/details/7657958
版权所有,禁止转载