jj2000.j2k.entropy.decoder
Class ByteToBitInput

java.lang.Object
  |
  +--jj2000.j2k.entropy.decoder.ByteToBitInput

public class ByteToBitInput
extends java.lang.Object

This class provides an adapter to perform bit based input on byte based output obejcts that inherit from a 'ByteInputBuffer' class. This class also performs the bit unstuffing procedure specified for the 'selective arithmetic coding bypass' mode of the JPEG 2000 entropy coder.


Field Summary
(package private)  int bbuf
          The bit buffer
(package private)  int bpos
          The position of the next bit to get from the byte buffer.
(package private)  ByteInputBuffer in
          The byte based input
 
Constructor Summary
ByteToBitInput(ByteInputBuffer in)
          Instantiates a new 'ByteToBitInput' object that uses 'in' as the underlying byte based input.
 
Method Summary
 boolean checkBytePadding()
          Checks for past errors in the decoding process by verifying the byte padding with an alternating sequence of 0's and 1's.
(package private)  void flush()
          Flushes (i.e.
 int readBit()
          Reads from the bit stream one bit.
(package private)  void setByteArray(byte[] buf, int off, int len)
          Resets the underlying byte input to start a new segment.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

in

ByteInputBuffer in
The byte based input


bbuf

int bbuf
The bit buffer


bpos

int bpos
The position of the next bit to get from the byte buffer. When it is -1 the bit buffer is empty.

Constructor Detail

ByteToBitInput

public ByteToBitInput(ByteInputBuffer in)
Instantiates a new 'ByteToBitInput' object that uses 'in' as the underlying byte based input.

Parameters:
in - The underlying byte based input.
Method Detail

readBit

public final int readBit()
Reads from the bit stream one bit. If 'bpos' is -1 then a byte is read and loaded into the bit buffer, from where the bit is read. If necessary the bit unstuffing will be applied.

Returns:
The read bit (0 or 1).

checkBytePadding

public boolean checkBytePadding()
Checks for past errors in the decoding process by verifying the byte padding with an alternating sequence of 0's and 1's. If an error is detected it means that the raw bit stream has been wrongly decoded or that the raw terminated segment length is too long. If no errors are detected it does not necessarily mean that the raw bit stream has been correctly decoded.

Returns:
True if errors are found, false otherwise.

flush

final void flush()
Flushes (i.e. empties) the bit buffer, without loading any new bytes. This realigns the input at the next byte boundary, if not already at one.


setByteArray

final void setByteArray(byte[] buf,
                        int off,
                        int len)
Resets the underlying byte input to start a new segment. The bit buffer is flushed.

Parameters:
buf - The byte array containing the byte data. If null the current byte array is assumed.
off - The index of the first element in 'buf' to be decoded. If negative the byte just after the previous segment is assumed, only valid if 'buf' is null.
len - The number of bytes in 'buf' to be decoded. Any subsequent bytes are taken to be 0xFF.