基于libmad 的简单MP3流媒体播放器的实现

http://tech.ddvip.com   2007年03月10日    社区交流

本文详细介绍基于libmad 的简单MP3流媒体播放器的实现

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

  本文用到的 libmad 中的主要数据结构有:struct mad_stream, struct mad_synth, struct mad_frame。它们的定义如下:

  清单 1:libmad 中的主要数据结构struct mad_stream {
 unsigned char const *buffer;   /* input bitstream buffer */
 unsigned char const *bufend;  /* end of buffer */
 unsigned long skiplen;     /* bytes to skip before next frame */
 int sync;           /* stream sync found */
 unsigned long freerate;     /* free bitrate (fixed) */
 unsigned char const *this_frame;  /* start of current frame */
 unsigned char const *next_frame;  /* start of next frame */
 struct mad_bitptr ptr;      /* current processing bit pointer */
 struct mad_bitptr anc_ptr;    /* ancillary bits pointer */
 unsigned int anc_bitlen;     /* number of ancillary bits */
 unsigned char (*main_data)[MAD_BUFFER_MDLEN];
/* Layer III main_data() */
 unsigned int md_len;      /* bytes in main_data */
 int options;          /* decoding options (see below) */
 enum mad_error error;     /* error code (see above) */
};

责编:豆豆技术应用

正在加载评论...