com.sun.media.jai.codec
Interface StreamSegmentMapper


public interface StreamSegmentMapper

An interface for use with the SegmentedSeekableStream class. An instance of the StreamSegmentMapper interface provides the location and length of a segment of a source SeekableStream corresponding to the initial portion of a desired segment of the output stream.

As an example, consider a mapping between a source SeekableStream src and a SegmentedSeekableStream dst comprising bytes 100-149 and 200-249 of the source stream. The dst stream has a reference to an instance mapper of StreamSegmentMapper.

A call to dst.seek(0); dst.read(buf, 0, 10) will result in a call to mapper.getStreamSegment(0, 10), returning a new StreamSegment with a starting position of 100 and a length of 10 (or less). This indicates that in order to read bytes 0-9 of the segmented stream, bytes 100-109 of the source stream should be read.

A call to dst.seek(10); int nbytes = dst.read(buf, 0, 100) is somewhat more complex, since it will require data from both segments of src. The method mapper.getStreamSegment(10, 100) will be called. This method will return a new StreamSegment with a starting position of 110 and a length of 40 (or less). The length is limited to 40 since a longer value would result in a read past the end of the first segment. The read will stop after the first 40 bytes and an addition read or reads will be required to obtain the data contained in the second segment.

This interface is not a committed part of the JAI API. It may be removed or changed in future releases of JAI.


Method Summary
 StreamSegment getStreamSegment(long pos, int length)
          Returns a StreamSegment object indicating the location of the initial portion of a desired segment in the source stream.
 void getStreamSegment(long pos, int length, StreamSegment seg)
          Sets the values of a StreamSegment object indicating the location of the initial portion of a desired segment in the source stream.
 

Method Detail

getStreamSegment

public StreamSegment getStreamSegment(long pos,
                                      int length)
Returns a StreamSegment object indicating the location of the initial portion of a desired segment in the source stream. The length of the returned StreamSegment may be smaller than the desired length.

Parameters:
pos - The desired starting position in the SegmentedSeekableStream, as a long.
length - The desired segment length.

getStreamSegment

public void getStreamSegment(long pos,
                             int length,
                             StreamSegment seg)
Sets the values of a StreamSegment object indicating the location of the initial portion of a desired segment in the source stream. The length of the returned StreamSegment may be smaller than the desired length.

Parameters:
pos - The desired starting position in the SegmentedSeekableStream, as a long.
length - The desired segment length.
seg - A StreamSegment object to be overwritten.