jmp123.decoder
类 BitStream

java.lang.Object
  继承者 jmp123.decoder.BitStream
直接已知子类:
BitStreamMainData

public class BitStream
extends java.lang.Object

从输入的字节流获得位流。

对于Layer3文件解码, BitStream 仅用于读取帧边信息,要读取Layer3文件的主数据,必须使用BitStreamMainData

对于Layer1和Layer2文件解码,用 BitStream 获得的位流,用于解码全部数据。

版本:
0.400

字段摘要
protected  int bitPos
           
protected  byte[] bitReservoir
           
protected  int bytePos
           
 
构造方法摘要
BitStream(int len, int extra)
          创建一个位流BitStream对象,位流的缓冲区大小len指定,位流的缓冲区尾部空出的长度由extra指定。
 
方法摘要
 int append(byte[] b, int off, int len)
          向缓冲区添加len字节。
 void feed(byte[] b, int off)
          将缓冲指定为b,缓冲区初始偏移量由off指定。
 int get1Bit()
          从缓冲区读取一位。
 int getBits17(int n)
          从缓冲区读取n位。
 int getBits9(int n)
          从缓冲区读取n位。
 int getBytePos()
          获取缓冲区字节指针。
protected  int getMark()
           
 int getSize()
          获取缓冲区已经填入的字节数。
protected  void mark()
           
 void skipBits(int n)
          缓冲区丢弃或回退指定比特。
 void skipBytes(int n)
          缓冲区丢弃n字节,缓冲区比特指针复位。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

bitPos

protected int bitPos

bytePos

protected int bytePos

bitReservoir

protected byte[] bitReservoir
构造方法详细信息

BitStream

public BitStream(int len,
                 int extra)
创建一个位流BitStream对象,位流的缓冲区大小len指定,位流的缓冲区尾部空出的长度由extra指定。

参数:
len - 缓冲区可访问长度。
缓冲区用于解码帧边信息时len为9、17或32。
缓冲区用于解码主数据(main_data)时长度不小于最大帧长512+1732。
extra - 缓冲区尾部空出的字节数,防止哈夫曼解码时位流有错误导致缓冲区溢出, 尾部空出512字节(part2_3_length长度,2^12位)。
方法详细信息

append

public int append(byte[] b,
                  int off,
                  int len)
向缓冲区添加len字节。

参数:
b - 源数据。
off - 源数据偏移量。
len - 源数据长度。
返回:
实际填充到缓冲区的字节数。

feed

public void feed(byte[] b,
                 int off)
将缓冲指定为b,缓冲区初始偏移量由off指定。与 append(byte[], int, int) 方法的区别是,本方法不会从源数据b复制数据。

参数:
b - 源数据。
off - 源数据偏移量。

get1Bit

public int get1Bit()
从缓冲区读取一位。

返回:
0或1。

getBits17

public int getBits17(int n)
从缓冲区读取n位。由于运行时速度方面的原因,若读取的位数不大于9,请考虑用getBits9(int)方法更高效。

参数:
n - 比特数,n=2..17时调用此方法。
返回:
n位的值。

getBits9

public int getBits9(int n)
从缓冲区读取n位。

参数:
n - 比特数,n=2..9时调用此方法。
返回:
n位的值。

getBytePos

public int getBytePos()
获取缓冲区字节指针。

返回:
缓冲区字节指针。

getSize

public int getSize()
获取缓冲区已经填入的字节数。

返回:
缓冲区已经填入的字节数。

skipBytes

public void skipBytes(int n)
缓冲区丢弃n字节,缓冲区比特指针复位。

参数:
n - 丢弃的字节数。

skipBits

public void skipBits(int n)
缓冲区丢弃或回退指定比特。

参数:
n - 若n>0丢弃n比特,若n<0则回退-n比特。

mark

protected void mark()

getMark

protected int getMark()