com.flagstone.transform.coder
Class BigDecoder

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

public final class BigDecoder
extends Object

BigDecoder 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 values are read in Big-Endian format with the most significant byte decoded first.


Field Summary
static int BUFFER_SIZE
          The default size, in bytes, for the internal buffer.
 
Constructor Summary
BigDecoder(InputStream streamIn)
          Create a new BigDecoder for the underlying InputStream using the default buffer size.
BigDecoder(InputStream streamIn, int length)
          Create a new BigDecoder for the underlying InputStream with the specified buffer size.
 
Method Summary
 void alignToByte()
          Changes the location to the next byte boundary.
 int bytesRead()
          Get the number of bytes read from the last saved position.
 boolean eof()
          Is there any more data to read.
 void fill()
          Fill the internal buffer.
 int mark()
          Mark the current position.
 void move(int location)
          Change the position of the decoder within the internal buffer.
 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.
 byte[] readBytes(byte[] bytes, int start, int length)
          Reads an array of bytes.
 int readInt()
          Read an unsigned 32-bit integer.
 int readShort()
          Read a 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.
 int scanInt()
          Read an unsigned 32-bit integer.
 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

BigDecoder

public BigDecoder(InputStream streamIn,
                  int length)
Create a new BigDecoder 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.

BigDecoder

public BigDecoder(InputStream streamIn)
Create a new BigDecoder 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.

move

public void move(int location)
          throws IOException
Change the position of the decoder within the internal buffer.

Parameters:
location - the offset in bytes from the start of the internal buffer.
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.

eof

public boolean eof()
            throws IOException
Is there any more data to read.

Returns:
true there is no more data to read from the stream.
Throws:
IOException - if an error 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 an error occurs reading from the underlying input 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.

readBytes

public byte[] readBytes(byte[] bytes,
                        int start,
                        int length)
                 throws IOException
Reads an array of bytes.

Parameters:
bytes - the array that will contain the bytes read.
start - the offset from the start of the array of bytes where the data will be written.
length - the number of bytes to write to the array.
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 a signed 16-bit integer.

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

scanInt

public int scanInt()
            throws IOException
Read an unsigned 32-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.