- V1: MPEG Version 1
- V2: MPEG Version 2 and Version 2.5
- L1: Layer I
- L2: Layer II
- L3: Layer III
- “free”:: free fromat. free bitrate必须保持恒定,并且必须小于允许的最大的比特率. 解码器不需要支持free bitrate的流
- “bad”: 意思是这个值是不被允许的.
bitrate单通道立体声intensity stereodual channefreeyesyesyesyes32yesnonono48yesnonono56yesnonono64yesyesyesyes80yesnonono96yesyesyesyes112yesyesyesyes128yesyesyesyes160yesyesyesyes192yesyesyesyes224noyesyesyes256noyesyesyes320noyesyesyes384noyesyesyes采样率抽样速率指定每秒钟有多少个样本被记录 。每个MPEG版本可以处理不同的samplingrates 。
采样率索引MPEG-1 (Hz)MPEG-2 (Hz)MPEG-2.5 (Hz)0044100220501102501480002400012000103200016000800011reservedreservedreservedPadding-bit【mpeg编码标准 MPEG标准制定方法】如果设置了,则用一个slot填充数据(slot对框架大小的计算很重要) Layer I的slot大小是4字节,其余情况是1字节 。
设置值描述0没有填充1使用一个额外的slot填充数据channel模式设置值描述00立体声01Joint stereo10Dual channel(2 mono channels)11Single channel(mono)注意:双通道文件由两个独立的单声道组成 。每一个都只使用了文件的一半比特率 。大多数解码器将其输出为立体声,但情况并非总是如此 。使用一个例子是在相同的比特流中承载了两个不同语言的语音,那么解码器需要仅解码所选择的语言进行播放
模式扩展扩展模式被用来增加了一些没有在立体声效果使用的信息,从而减少了所需的位 。这些位由在Joint stereo模式下的编码器动态的确定,每一个帧的Joint stereo都可以改变,甚至可以打开或者关闭
MPEG文件的整个的频率范围分为了多个子带,共有32个子带 。对于Layer I和Layer II来说两个位确定了当应用intensity stereo时的频率范围(频带) 。针对Layer III,这两个位决定了使用哪一种类型的joint stereo(intensity stereo或者m/s stereo). 频率范围由解压缩算法来确定
设置值Layer I & II00bands 4 to 3101bands 8 to 3110bands 12 to 3111bands 16 to 31Layer III:
Intensity stereoMS stereooffoffonoffoffonononEmphasis设置值描述00none0150/15 ms10reserved11CCIT J.17MP3边信息边信息紧接着帧头 。它包含了一些解码器会用到的一些信息,用于解码器控制音频流的播放,但不包含实际的音频数据 。下表显示了所有Layer III文件的边信息的大小
模式MPEG 1MPEG 2/2.5 (LSF)立体声,联合立体声,双通道3217Mono179对于Layer I的文件,你必须考虑到扩展模式(见表2.1.6) 。然后你可以以下公式计算出用于计算CRC的比特位的数量:
4 * ( 声道数 * bound of intensity stereo + (32 – bound of intensity stereo) );
这可以被读成两倍的立体声子带加上单子带的数量和结果乘以4 。对于简单的mono帧,这等于128,因为通道的数目是1,而强度立体声的边界是32,这意味着没有强度立体声 。对于立体帧,这是256 。有关更多信息,请查看类CMPAFrame中的rc代码 。
MP3解析的解析基于MPG123库
核心数据结构
typedef struct mpstr_tag {struct buf *head, *tail; /* buffer linked list pointers, tail points to oldest buffer */intvbr_header;/* 1 if valid Xing vbr header detected */intnum_frames;/* set if vbr header present */intenc_delay;/* set if vbr header present */intenc_padding;/* set if vbr header present *//* header_parsed, side_parsed and data_parsed must be all set 1before the full frame has been parsed */intheader_parsed;/* 1 = header of current frame has been parsed */intside_parsed;/* 1 = header of sideinfo of current frame has been parsed */intdata_parsed;intfree_format;/* 1 = free format frame */intold_free_format; /* 1 = last frame was free format */intbsize;intframesize;intssize;/* number of bytes used for side information, including 2 bytes for CRC-16 if present */intdsize;intfsizeold;/* size of previous frame, -1 for first */intfsizeold_nopadding;struct frame fr;/* holds the parameters decoded from the header */struct III_sideinfo sideinfo;unsigned char bsspace[2][MAXFRAMESIZE + 1024]; /* bit stream space used ???? */ /* MAXFRAMESIZE */realhybrid_block[2][2][SBLIMIT * SSLIMIT];inthybrid_blc[2];unsigned long header;intbsnum;realsynth_buffs[2][2][0x110];intsynth_bo;intsync_bitstream;/* 1 = bitstream is yet to be synchronized */intbitindex;unsigned char *wordpointer;plotting_data *pinfo;lame_report_function report_msg;lame_report_function report_dbg;lame_report_function report_err;} MPSTR, *PMPSTR;
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 商标侵权一般罚款多少 商标侵权赔偿标准
- 武则天死后皇位传给了谁 武则天选择男宠的标准是什么
- 七星级酒店什么标准 七星级酒店中国有几家
- 红酒醒多长时间是没有标准的
- 1个月新生儿奶量标准是多少呢
- 上海邮编200020 上海邮政编码是多少
- 酒驾吹气低于20怎么处理 酒驾标准是多少毫升
- 身份证怎么看邮政编码 邮政编码是多少
- 正常标准大气压是多少pa 大气压强是多少
- 2021年耕地被征用赔偿标准是多少 一亩地多少平方