jmp123.decoder
类 Header

java.lang.Object
  继承者 jmp123.decoder.Header

public final class Header
extends java.lang.Object

帧同步及帧头信息解码。

源代码中解析帧头32位用到的变量及含义:

偏移量长度变量名含义
011帧同步时直接解析11位全设置为'1'的帧同步字
112verIDMPEG版本
132layerMPEG压缩层
151protection_bit是否CRC
164bitrate_index位率索引
202sampling_frequency采样率索引
221padding当前帧是否附加填充一槽数据
231未解析告知是否私有
242mode声道模式
262mode_extension声道扩展模式
281未解析告知是否有版权
291未解析告知是否为原版
302不常用,未解析预加重

版本:
0.400

字段摘要
static int MPEG1
          MPEG版本MPEG-1。
static int MPEG2
          MPEG版本MPEG-2。
static int MPEG25
          MPEG版本MPEG-2.5(非官方版本)。
 
构造方法摘要
Header()
           
 
方法摘要
protected  void decode(int h)
          帧头解码。
 int getBitrate()
          获取当前帧的位率。
 int getBitrateIndex()
          获取当前帧的位率的索引值。
 int getChannels()
          获取声道数。
 float getFrameDuration()
          获取当前文件一帧的播放时间长度。
 int getFrameSize()
          获取帧长度。
 int getLayer()
          获取MPEG编码层。
 int getMainDataSize()
          获取主数据长度。
 int getMode()
          获取声道模式。
 int getModeExtension()
          获取声道扩展模式。
 int getPcmSize()
          获取当前帧解码后得到的PCM样本长度。
 int getSamplingFrequency()
          获取PCM样本采样率的索引值。
 int getSamplingRate()
          获取PCM样本采样率。
 int getSideInfoSize()
          获取边信息长度。
 int getVersion()
          获取MPEG版本。
protected  void initialize()
          初始化。
 boolean isIntensityStereo()
          获取声道模式是否为强度立体声(Intensity Stereo)模式。
 boolean isMS()
          获取声道模式是否为中/侧立体声(Mid/Side stereo)模式。
 boolean isProtected()
          是否有循环冗余校验码。
 java.lang.String toString()
          获取帧头的简短信息。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

MPEG1

public static final int MPEG1
MPEG版本MPEG-1。

另请参见:
常量字段值

MPEG2

public static final int MPEG2
MPEG版本MPEG-2。

另请参见:
常量字段值

MPEG25

public static final int MPEG25
MPEG版本MPEG-2.5(非官方版本)。

另请参见:
常量字段值
构造方法详细信息

Header

public Header()
方法详细信息

initialize

protected void initialize()
初始化。


decode

protected void decode(int h)
帧头解码。

参数:
h - 帧头,大头在上的4字节(32位)整数。

isProtected

public boolean isProtected()
是否有循环冗余校验码。

返回:
返回true表示有循环冗余校验码,帧头之后邻接有2字节的数据用于CRC。

isMS

public boolean isMS()
获取声道模式是否为中/侧立体声(Mid/Side stereo)模式。

返回:
true表示是中/侧立体声模式。

isIntensityStereo

public boolean isIntensityStereo()
获取声道模式是否为强度立体声(Intensity Stereo)模式。

返回:
true表示是强度立体声模式。

getBitrate

public int getBitrate()
获取当前帧的位率。

返回:
当前帧的位率,单位为“千位每秒(Kbps)”。

getBitrateIndex

public int getBitrateIndex()
获取当前帧的位率的索引值。

返回:
当前帧的位率的索引值,位率的索引值范围是1至14的某一整数。

getChannels

public int getChannels()
获取声道数。

返回:
声道数:1或2。

getMode

public int getMode()
获取声道模式。

返回:
声道模式,其值表示的含义:
返回值声道模式
0立体声(stereo)
1联合立体声(joint stereo)
2双声道(dual channel)
3单声道(mono channel)
另请参见:
getModeExtension()

getModeExtension

public int getModeExtension()
获取声道扩展模式。

返回:
声道扩展模式,该值表示当前声道使用的立体声编码方式:
返回值强度立体声中/侧立体声
0offoff
1onoff
2offon
3onon
另请参见:
getMode()

getVersion

public int getVersion()
获取MPEG版本。

返回:
MPEG版本:MPEG1MPEG2MPEG25

getLayer

public int getLayer()
获取MPEG编码层。

返回:
MPEG编码层:返回值1表示LayerⅠ,2表示LayerⅡ,3表示LayerⅢ。

getSamplingFrequency

public int getSamplingFrequency()
获取PCM样本采样率的索引值。

返回:
PCM样本采样率的索引值。

getSamplingRate

public int getSamplingRate()
获取PCM样本采样率。

返回:
获取PCM样本采样率,单位“赫兹(Hz)”

getMainDataSize

public int getMainDataSize()
获取主数据长度。

返回:
当前帧的主数据长度,单位“字节”。

getSideInfoSize

public int getSideInfoSize()
获取边信息长度。

返回:
当前帧边信息长度,单位“字节”。

getFrameSize

public int getFrameSize()
获取帧长度。

帧的长度 = 4字节帧头 + CRC(如果有的话,2字节) + 音乐数据长度。
其中音乐数据长度 = 边信息长度 + 主数据长度。

无论是可变位率(VBR)编码的文件还是固定位率(CBR)编码的文件,每帧的长度不一定同。

返回:
当前帧的长度,单位“字节”。

getPcmSize

public int getPcmSize()
获取当前帧解码后得到的PCM样本长度。通常情况下同一文件每一帧解码后得到的PCM样本长度是相同的。

返回:
当前帧解码后得到的PCM样本长度,单位“字节”。

getFrameDuration

public float getFrameDuration()
获取当前文件一帧的播放时间长度。

返回:
当前文件一帧的播放时间长度,单位“秒”。

toString

public java.lang.String toString()
获取帧头的简短信息。

覆盖:
java.lang.Object 中的 toString
返回:
帧头的简短信息。