libmad 解码库用法

来源:互联网 发布:fileinput.js ie9 编辑:程序博客网 时间:2024/05/19 13:44
//初始化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

版权所有,禁止转载


原创粉丝点击