| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.io.InputStream
java.io.FilterInputStream
org.monte.media.jpeg.JFIFInputStream
public class JFIFInputStream
JFIFInputStream.
This InputStream uses two special marker values which do not exist in the JFIF stream:
The junk data at the beginning of the file can be accessed by calling the read-methods immediately after opening the stream. Call nextSegment() immediately after opening the stream if you are not interested into this junk data.
Junk data at the end of the file is delivered as part of the EOI_MARKER segment. Finish reading after encountering the EOI_MARKER segment if you are not interested in this junk data.
 References:
 JPEG File Interchange Format Version 1.02
 http://www.jpeg.org/public/jfif.pdf 
 Pennebaker, W., Mitchell, J. (1993).
 JPEG Still Image Data Compression Standard.
 Chapmann
 & Hall, New York.
 ISBN 0-442-01272-1
| Nested Class Summary | |
|---|---|
| static class | JFIFInputStream.SegmentRepresents a segment within a JFIF File. | 
| Field Summary | |
|---|---|
| static int | APP1_MARKERAPP1_MARKER Reserved for application use | 
| static int | APP2_MARKERAPP2_MARKER Reserved for application use | 
| static int | EOI_MARKEREnd of image | 
| static int | JPG0_MARKERReserved for JPEG extensions | 
| static int | JPG1_MARKER | 
| static int | JPG2_MARKER | 
| static int | JPG3_MARKER | 
| static int | JPG4_MARKER | 
| static int | JPG5_MARKER | 
| static int | JPG6_MARKER | 
| static int | JPG7_MARKER | 
| static int | JPG8_MARKER | 
| static int | JPG9_MARKER | 
| static int | JPGA_MARKER | 
| static int | JPGB_MARKER | 
| static int | JPGC_MARKER | 
| static int | JPGD_MARKER | 
| static int | JUNK_MARKERJUNK_MARKER Marker (for data which is not part of the JFIF stream. | 
| static int | RST0_MARKER | 
| static int | RST1_MARKER | 
| static int | RST2_MARKER | 
| static int | RST3_MARKER | 
| static int | RST4_MARKER | 
| static int | RST5_MARKER | 
| static int | RST6_MARKER | 
| static int | RST7_MARKER | 
| static int | SOF0_MARKERStart of frame markers | 
| static int | SOF1_MARKER | 
| static int | SOF2_MARKER | 
| static int | SOF3_MARKER | 
| static int | SOF5_MARKER | 
| static int | SOF6_MARKER | 
| static int | SOF7_MARKER | 
| static int | SOF9_MARKER | 
| static int | SOFA_MARKER | 
| static int | SOFB_MARKER | 
| static int | SOFD_MARKER | 
| static int | SOFE_MARKER | 
| static int | SOFF_MARKER | 
| static int | SOI_MARKERStart of image | 
| static int | SOS_MARKERStart of scan | 
| static int | TEM_MARKERTemporary private use in arithmetic coding | 
| Fields inherited from class java.io.FilterInputStream | 
|---|
| in | 
| Constructor Summary | |
|---|---|
| JFIFInputStream(File f) | |
| JFIFInputStream(InputStream in) | |
| Method Summary | |
|---|---|
|  JFIFInputStream.Segment | getNextSegment()Gets the next segment from the input stream. | 
|  JFIFInputStream.Segment | getSegment()Gets the current segment from the input stream. | 
|  long | getStreamPosition() | 
|  void | mark(int readlimit)Marks the current position in this input stream. | 
|  boolean | markSupported()Tests if this input stream supports the markandresetmethods. | 
|  int | read()Reads the next byte of data from this input stream. | 
|  int | read(byte[] b,
     int off,
     int len)Reads up to lenb of data from this input stream into an array of b. | 
|  void | reset()Repositions this stream to the position at the time the markmethod was last called on this input stream. | 
|  long | skip(long n)Skips over and discards nb of data from the input stream. | 
|  void | skipFully(long n)Fully skips the specified number of bytes. | 
| Methods inherited from class java.io.FilterInputStream | 
|---|
| available, close, read | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
public static final int JUNK_MARKER
public static final int SOI_MARKER
public static final int EOI_MARKER
public static final int TEM_MARKER
public static final int SOS_MARKER
public static final int APP1_MARKER
public static final int APP2_MARKER
public static final int JPG0_MARKER
public static final int JPG1_MARKER
public static final int JPG2_MARKER
public static final int JPG3_MARKER
public static final int JPG4_MARKER
public static final int JPG5_MARKER
public static final int JPG6_MARKER
public static final int JPG7_MARKER
public static final int JPG8_MARKER
public static final int JPG9_MARKER
public static final int JPGA_MARKER
public static final int JPGB_MARKER
public static final int JPGC_MARKER
public static final int JPGD_MARKER
public static final int SOF0_MARKER
public static final int SOF1_MARKER
public static final int SOF2_MARKER
public static final int SOF3_MARKER
public static final int SOF5_MARKER
public static final int SOF6_MARKER
public static final int SOF7_MARKER
public static final int SOF9_MARKER
public static final int SOFA_MARKER
public static final int SOFB_MARKER
public static final int SOFD_MARKER
public static final int SOFE_MARKER
public static final int SOFF_MARKER
public static final int RST0_MARKER
public static final int RST1_MARKER
public static final int RST2_MARKER
public static final int RST3_MARKER
public static final int RST4_MARKER
public static final int RST5_MARKER
public static final int RST6_MARKER
public static final int RST7_MARKER
| Constructor Detail | 
|---|
public JFIFInputStream(File f)
                throws IOException
IOExceptionpublic JFIFInputStream(InputStream in)
| Method Detail | 
|---|
public JFIFInputStream.Segment getSegment()
                                   throws IOException
IOException
public JFIFInputStream.Segment getNextSegment()
                                       throws IOException
IOExceptionpublic long getStreamPosition()
public int read()
         throws IOException
int in the range
 0 to
 255. If no byte is available because the end of the stream has been reached, the
 value
 -1 is returned. This method blocks until input data is available, the end of the
 stream is detected, or an exception is thrown.  This method simply performs
 in.read() and returns the result.
read in class FilterInputStream-1 if the end of the stream is reached.
IOException - if an I/O error occurs.FilterInputStream.in
public int read(byte[] b,
                int off,
                int len)
         throws IOException
len b of data from this input stream into an array of b. This method blocks until
 some input is available.  This method simply performs
 in.read(b, off, len) and returns the result.
read in class FilterInputStreamb - the buffer into which the data is read.off - the start offset of the data.len - the maximum number of b read.
-1 if there is no more data because the end of the stream has been reached.
IOException - if an I/O error occurs.FilterInputStream.in
public final void skipFully(long n)
                     throws IOException
IOException
public long skip(long n)
          throws IOException
n b of data from the input stream. The
 skip method may, for a variety of reasons, end up skipping over some smaller
 number of b, possibly
 0. The actual number of b skipped is returned.  This method simply performs
 in.skip(n).
skip in class FilterInputStreamn - the number of b to be skipped.
IOException - if an I/O error occurs.public void mark(int readlimit)
reset method repositions this stream at the last marked position so that
 subsequent reads re-read the same b.  The
 readlimit argument tells this input stream to allow that many b to be read before
 the mark position gets invalidated. 
 This method simply performs
 in.mark(readlimit).
mark in class FilterInputStreamreadlimit - the maximum limit of b that can be read before the mark position becomes
 invalid.FilterInputStream.in, 
FilterInputStream.reset()
public void reset()
           throws IOException
mark method was last called on this input stream.  This method simply performs
 in.reset(). 
Stream marks are intended to be used in situations where you need to read ahead a little to see what's in the stream. Often this is most easily done by invoking some general parser. If the stream is of the type handled by the parse, it just chugs along happily. If the stream is not of that type, the parser should toss an exception when it fails. If this happens within readlimit b, it allows the outer code to reset the stream and try another parser.
reset in class FilterInputStreamIOException - if the stream has not been marked or if the mark has been invalidated.FilterInputStream.in, 
FilterInputStream.mark(int)public boolean markSupported()
mark and
 reset methods. This method simply performs
 in.markSupported().
markSupported in class FilterInputStreamtrue if this stream type supports the
 mark and
 reset method;
 false otherwise.FilterInputStream.in, 
InputStream.mark(int), 
InputStream.reset()| 
 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||