/**
* @(#)BufferControl.java 1.5 02/08/21
*
* The BufferControl is used to exercise user level control over the
* buffering done by a particular object. The object exporting this control
* is responsible for buffering data, and users may change the length of
* the buffer and the minimum threshold of the buffer based on their needs.
* By default, the buffer length and minimum threshold will be set to certain
* default values. These default values can be retrieved and changed by the
* user if desired.
* A buffer length is always set by this object. A minimum threshold for
* jitter buffering may or may not be set depending on the format. .e.g.
* in case of audio, a non-zero minimum threshold will be set (jitter
* buffering will be done), while in case of video, a zero minimum threshold
* will be set (no jitter buffering will be done).
* Each buffer control should have its own default and maximum buffer
* lengths, which are set using MAX_VALUE and DEFAULT_VALUE.
*/
package javax.media.control;
import javax.media.*;
public abstract interface BufferControl extends Control{
static final long DEFAULT_VALUE = -1;
static final long MAX_VALUE = -2;
/**
* Retrieves the buffer length set on the object exporting this control.
* The buffer length is in millisecs. The actual size of the buffer
* will be calculated depending on the format of the stream.
* @return the buffer length in millisecs.
*/
public long getBufferLength();
/**
* Sets the buffer length of the buffer maintained by this
* object in milliseconds. Returns the actual buffer length set. A value of
* MAX_VALUE indicates that the buffer length should be set to a large
* enough value so as not to drop any packets. i.e. the limit is only
* to prevent abnormal usage of memory, but would indicate buffering
* of all data is to be done and no packet dropping is to be implemented.
* DEFAULT_VALUE indicates that the buffer length should be restored to its
* default value.
* @return the actual buffer length set on this control
*/
public long setBufferLength(long time);
/**
* Retrieve the minimum threshold value in milliseconds of the buffer
* maintained by this control. The minimum threshold is used to siginify
* the minimum amount of data that is to be buffered by the control before pushing
* data out or allowing data to be pulled out (jitter buffer). Data will
* only be available from this object when this minimum threshold has been
* reached. In case the amount of data in the buffer reduces below this
* value, data will again be buffered until this minimum threshold
* is reached.
* @return The minimum threshold set on this control
*/
public long getMinimumThreshold();
/**
* Sets the minimum threshold value in milliseconds for the buffer
* maintained by this control. Returns the actual minimum threshold
* value set.A value of MAX_VALUE indicates the minimum threshold
* should be set to the maximum value as maintained by this cotrol. A
* value of DEFAULT_VALUE indicates that the threshold should be
* restored to its original length.
* @return the actual minimum threshold set on this control
*/
public long setMinimumThreshold(long time);
/**
* If false, the set minimum threshold value will not be used by this control
* in any of its buffer calculations. If true, data is not available
* until the threshold condition is satisifed.
* The default is that the threshold is enabled.
*/
public void setEnabledThreshold(boolean b);
/**
* Returns true if threshold calculations are enabled, false otherwise
* @return true if threshold is enabled, false otherwise
*/
public boolean getEnabledThreshold();
}
|