de.jarnbjo.util.io
Interface BitInputStream

All Known Implementing Classes:
ByteArrayBitInputStream

public interface BitInputStream

An interface with methods allowing bit-wise reading from an input stream. All methods in this interface are optional and an implementation not support a method or a specific state (e.g. endian) will throw an UnspportedOperationException if such a method is being called. This should be speicified in the implementation documentation.


Field Summary
static int BIG_ENDIAN
          constant for setting this stream's mode to big endian
static int LITTLE_ENDIAN
          constant for setting this stream's mode to little endian
 
Method Summary
 void align()
          causes the read pointer to be moved to the beginning of the next byte, remaining bits in the current byte are discarded
 boolean getBit()
          reads one bit (as a boolean) from the input stream
 int getInt(HuffmanNode root)
          reads a huffman codeword based on the root parameter and returns the decoded value
 int getInt(int bits)
          reads bits number of bits from the input stream
 long getLong(int bits)
          reads bits number of bits from the input stream
 int getSignedInt(int bits)
          reads bits number of bits from the input stream
 int readSignedRice(int order)
          reads an integer encoded as "signed rice" as described in the FLAC audio format specification
 void readSignedRice(int order, int[] buffer, int offset, int len)
          fills the array from offset with len integers encoded as "signed rice" as described in the FLAC audio format specification
 void setEndian(int endian)
          changes the endian mode used when reading bit-wise from the stream, changing the mode mid-stream will cause the read cursor to move to the beginning of the next byte (as if calling the allign method
 

Field Detail

LITTLE_ENDIAN

public static final int LITTLE_ENDIAN
constant for setting this stream's mode to little endian

See Also:
setEndian(int), Constant Field Values

BIG_ENDIAN

public static final int BIG_ENDIAN
constant for setting this stream's mode to big endian

See Also:
setEndian(int), Constant Field Values
Method Detail

getBit

public boolean getBit()
               throws java.io.IOException
reads one bit (as a boolean) from the input stream

Returns:
true if the next bit is 1, false otherwise
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

getInt

public int getInt(int bits)
           throws java.io.IOException
reads bits number of bits from the input stream

Returns:
the unsigned integer value read from the stream
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

getSignedInt

public int getSignedInt(int bits)
                 throws java.io.IOException
reads bits number of bits from the input stream

Returns:
the signed integer value read from the stream
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

getInt

public int getInt(HuffmanNode root)
           throws java.io.IOException
reads a huffman codeword based on the root parameter and returns the decoded value

Parameters:
root - the root of the Huffman tree used to decode the codeword
Returns:
the decoded unsigned integer value read from the stream
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

readSignedRice

public int readSignedRice(int order)
                   throws java.io.IOException
reads an integer encoded as "signed rice" as described in the FLAC audio format specification

Parameters:
order -
Returns:
the decoded integer value read from the stream
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

readSignedRice

public void readSignedRice(int order,
                           int[] buffer,
                           int offset,
                           int len)
                    throws java.io.IOException
fills the array from offset with len integers encoded as "signed rice" as described in the FLAC audio format specification

Parameters:
order -
buffer -
offset -
len -
Returns:
the decoded integer value read from the stream
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

getLong

public long getLong(int bits)
             throws java.io.IOException
reads bits number of bits from the input stream

Returns:
the unsigned long value read from the stream
Throws:
java.io.IOException - if an I/O error occurs
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

align

public void align()
causes the read pointer to be moved to the beginning of the next byte, remaining bits in the current byte are discarded

Throws:
java.lang.UnsupportedOperationException - if the method is not supported by the implementation

setEndian

public void setEndian(int endian)
changes the endian mode used when reading bit-wise from the stream, changing the mode mid-stream will cause the read cursor to move to the beginning of the next byte (as if calling the allign method

Throws:
java.lang.UnsupportedOperationException - if the method is not supported by the implementation
See Also:
align()