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

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

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

  清单 4:struct mad_pcm

struct mad_frame {
 struct mad_header header;       /* MPEG audio header */
 int options;               /* decoding options (from stream) */
 mad_fixed_t sbsample[2][36][32];    /* synthesis subband filter samples */
 mad_fixed_t (*overlap)[2][32][18];   /* Layer III block overlap data */
};

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

  清单 5:mad_frame

enum mad_mode {
 MAD_MODE_SINGLE_CHANNEL = 0,     /* single channel */
 MAD_MODE_DUAL_CHANNEL   = 1,    /* dual channel */
 MAD_MODE_JOINT_STEREO   = 2,       /* joint (MS/intensity) stereo */
 MAD_MODE_STEREO   = 3         /* normal LR stereo */
};
struct mad_header {
 enum mad_layer layer;     /* audio layer (1, 2, or 3) */
 enum mad_mode mode;    /* channel mode */
 int mode_extension;      /* additional mode info */
 enum mad_emphasis emphasis; /* de-emphasis to use */
 unsigned long bitrate;     /* stream bitrate (bps) */
 unsigned int samplerate;    /* sampling frequency (Hz) */
 unsigned short crc_check;     /* frame CRC accumulator */
 unsigned short crc_target;     /* final target CRC checksum */
 int flags;           /* flags */
 int private_bits;      /* private bits */
 mad_timer_t duration;    /* audio playing time of frame */
};

责编:豆豆技术应用

正在加载评论...