/*
* @(#)SourceStream.java 1.5 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package javax.media.protocol;
import java.io.IOException;
/**
* Abstracts a single stream of media data.
*
* <h2>Stream Controls</h2>
*
* A <code>SourceStream</code> might support an operation that
* is not part of the <code>SourceStream</code> definition.
* For example a stream might support seeking to a particular byte
* in the stream. In that case, it should implement the
* <code>Seekable</code> interface. Some streams allow its output
* format to be changed. It should then implement the
* <code>Formattable</code> interface.
* <p>
* Many operations are dependent on the stream
* data, and support cannot be determined until the stream is in
* use.
* <p>
*
* To obtain all of the objects that provide control over a stream
* use <code>getControls</code>. To determine if a particular
* kind of control is available, and obtain the object that
* implements the control use <code>getControl</code>.
*
*
* @see DataSource
* @see PushSourceStream
* @see PullSourceStream
* @see Seekable
*
* @version 1.5, 02/08/21.
*/
public interface SourceStream extends Controls {
public static final long LENGTH_UNKNOWN = -1;
/**
* Get the current content type for this stream.
*
* @return The current <CODE>ContentDescriptor</CODE> for this stream.
*/
public ContentDescriptor getContentDescriptor();
/**
* Get the size, in bytes, of the content on this stream.
* LENGTH_UNKNOWN is returned if the length is not known.
*
* @return The content length in bytes.
*/
public long getContentLength();
/**
* Find out if the end of the stream has been reached.
*
* @return Returns <CODE>true</CODE> if there is no more data.
*/
public boolean endOfStream();
}
|