com.flagstone.transform.coder
Class LittleDecoder

java.lang.Object
  extended by com.flagstone.transform.coder.LittleDecoder

public final class LittleDecoder
extends Object

LittleDecoder wraps an InputStream with a buffer to reduce the amount of memory required to decode an image or sound and to improve efficiency by reading data from a file or external source in blocks. Word data - shorts and ints - are read in Little-Endian format with the least significant byte decoded first.


Field Summary
static int BUFFER_SIZE
          The default size, in bytes, for the internal buffer.
 
Constructor Summary
LittleDecoder(InputStream streamIn)
          Create a new LittleDecoder for the underlying InputStream using the default buffer size.
LittleDecoder(InputStream streamIn, int length)
          Create a new LittleDecoder for the underlying InputStream with the specified buffer size.
 
Method Summary
 void alignToByte()
          Changes the location to the next byte boundary.
 void alignToWord()
          Checks the number of bytes read since the last mark and moves to the next word (32-bit) aligned boundary.
 int bytesRead()
          Get the number of bytes read from the last saved position.
 void fill()
          Fill the internal buffer.
 int mark()
          Mark the current position.
 int readBits(int numberOfBits, boolean signed)
          Read a bit field.
 int readByte()
          Read an unsigned byte.
 byte[] readBytes(byte[] bytes)
          Reads an array of bytes.
 int readInt()
          Read an unsigned 32-bit integer.
 int readShort()
          Read an signed 16-bit integer.
 int readUnsignedShort()
          Read an unsigned 16-bit integer.
 void reset()
          Reposition the decoder to the point recorded by the last call to the mark() method.
 void skip(int count)
          Skips over and discards n bytes of data.
 void unmark()
          Discard the last saved position.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BUFFER_SIZE

public static final int BUFFER_SIZE
The default size, in bytes, for the internal buffer.

See Also:
Constant Field Values
Constructor Detail

LittleDecoder

public LittleDecoder(InputStream streamIn,
                     int length)
Create a new LittleDecoder for the underlying InputStream with the specified buffer size.

Parameters:
streamIn - the stream from which data will be read.
length - the size in bytes of the buffer.

LittleDecoder

public LittleDecoder(InputStream streamIn)
Create a new LittleDecoder for the underlying InputStream using the default buffer size.

Parameters:
streamIn - the stream from which data will be read.
Method Detail

fill

public void fill()
          throws IOException
Fill the internal buffer. Any unread bytes are copied to the start of the buffer and the remaining space is filled with data from the underlying stream.

Throws:
IOException - if an error occurs reading from the underlying input stream.

mark

public int mark()
Mark the current position.

Returns:
the current position.

unmark

public void unmark()
Discard the last saved position.


reset

public void reset()
           throws IOException
Reposition the decoder to the point recorded by the last call to the mark() method.

Throws:
IOException - if the internal buffer was filled after mark() was called.

bytesRead

public int bytesRead()
Get the number of bytes read from the last saved position.

Returns:
the number of bytes read since the mark() method was last called.

alignToByte

public void alignToByte()
Changes the location to the next byte boundary.


skip

public void skip(int count)
          throws IOException
Skips over and discards n bytes of data.

Parameters:
count - the number of bytes to skip.
Throws:
IOException - if an error occurs reading from the underlying input stream.

alignToWord

public void alignToWord()
                 throws IOException
Checks the number of bytes read since the last mark and moves to the next word (32-bit) aligned boundary.

Throws:
IOException - if an error occurs reading from the underlying input stream.

readBits

public int readBits(int numberOfBits,
                    boolean signed)
             throws IOException
Read a bit field.

Parameters:
numberOfBits - the number of bits to read.
signed - indicates whether the integer value read is signed.
Returns:
the value read.
Throws:
IOException - if there is an error reading data from the underlying stream.

readByte

public int readByte()
             throws IOException
Read an unsigned byte.

Returns:
an 8-bit unsigned value.
Throws:
IOException - if an error occurs reading from the underlying input stream.

readBytes

public byte[] readBytes(byte[] bytes)
                 throws IOException
Reads an array of bytes.

Parameters:
bytes - the array that will contain the bytes read.
Returns:
the array of bytes.
Throws:
IOException - if an error occurs reading from the underlying input stream.

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
Read an unsigned 16-bit integer.

Returns:
the value read.
Throws:
IOException - if an error occurs reading from the underlying input stream.

readShort

public int readShort()
              throws IOException
Read an signed 16-bit integer.

Returns:
the value read.
Throws:
IOException - if an error occurs reading from the underlying input stream.

readInt

public int readInt()
            throws IOException
Read an unsigned 32-bit integer.

Returns:
the value read.
Throws:
IOException - if an error occurs reading from the underlying input stream.


Copyright © 2002-2010 Flagstone Software Ltd.. All Rights Reserved.