libmad音频解码库简介及其数据结构

libmad是一个开源的MPEG音频解码库,支持MPEG-1 Layer I, II, III(MP3)。它提供24-bit的PCM输出,适合无浮点支持的平台。主要数据结构包括mad_stream, mad_synth, mad_pcm和mad_frame。解码流程包括mad_decoder_init, mad_stream_buffer, mad_decoder_run和mad_decoder_finish。mad_pcm结构包含PCM数据,用于初始化音频。解码器以帧为单位工作,通过input和output回调函数处理输入和输出。" 119553551,10544404,win10系统远程服务器登录密码管理与安全,"['系统安全', '远程登录', '密码管理', 'Linux操作系统', 'Windows操作系统']
摘要由CSDN通过智能技术生成

1 简介

MAD(libmad)是一个开源的高精度MPEG音频解码库,支持MPEG-1(Layer I, Layer II 和LayerIII-也就是 MP3)。LIBMAD提供24-bit的PCM输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用libmad 提供的一系列API,就可以非常简单地实现 MP3数据解码工作。在libmad 的源代码文件目录下的 mad.h 文件中,可以看到绝大部分该库的数据结构和API等。

2 libmad中的主要数据结构

struct mad_stream                    存放解码前的Bitstream 数据

struct mad_synth                      存放解码合成滤波后的PCM数据

struct mad_pcm                         定义了音频的采样率,声道个数和PCM 采样数据, 用来初始化音频

struct mad_frame                      记录MPEG 帧解码后PCM 数据的数据结构,其中的mad_header 用来记录MPEG 帧的基本信息,比如MPEG 层数、声道模式、流比特率、采样比特率。声道模式包括单声道、双声道、联合立体混音道以及一般立体声

3 解码流程
MP3解码有同步方式和异步方式两种,libmad是以桢为单位对MP3进行解码的,所谓同步方式是指解码函数在解码完一帧后才返回并带回出错信息,异步方式是指解码函数在调用后立即返回,通过消息传递解码状态信息。 mad API的调用顺序:

  • 1)mad_decoder_init()【decoder.h】 Minimad.c中给出了一个函数调用过程的实例。首先定义一个mad_decoder变量(解码器对象),这时不需要对解码器对象进行任何
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值