⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rawlivedatasource.java

📁 It is Java for SIP phone
💻 JAVA
字号:
/* * RawLiveDataSource.java * * Created on March 20, 2003, 8:56 AM */package gov.nist.media.protocol.live;import javax.media.Time;import javax.media.protocol.*;import java.io.IOException;/** * A default data-source created directly from an array of byte * This Data source allow one to play or play back a buffer filled by RAW  * audio data *  * @author Jean Deruelle <jean.deruelle@nist.gov> * * <a href="{@docRoot}/uncopyright.html">This code is in the public domain.</a> */public class RawLiveDataSource extends PushBufferDataSource {    protected Object [] controls = new Object[0];     protected boolean started = false;        protected boolean connected = false;    protected Time duration = DURATION_UNKNOWN;    protected RawLiveStream [] streams = null;    protected RawLiveStream stream = null;        /**     * Constructs a new instance of RawLiveDataSource     *     */    public RawLiveDataSource() {    }    	/**	 * Get the current content type for this stream.	 *	 * @return The current <CODE>ContentDescriptor</CODE> for this stream.	 */    public String getContentType() {		if (!connected){	    	System.err.println("Error: DataSource not connected");	        return null;	    }	    return ContentDescriptor.RAW;		    }	/**	 * The <CODE>connect</CODE> method initiates communication with the source.	 *	 * @exception IOException Thrown if there are IO problems	 * when <CODE>connect</CODE> is called.	 */    public void connect() throws IOException {		 if (connected)	            return;		 connected = true;    }    	/**	 * The <CODE>disconnect</CODE> method frees resources used to maintain a	 * connection to the source.	 * If no resources are in use, <CODE>disconnect</CODE> is ignored.	 */    public void disconnect() {		try {            if (started)                stop();        } catch (IOException e) {}		connected = false;    }	/**	 * Initiate data-transfer. The <CODE>start</CODE> method must be	 * called before data is available.	 *(You must call <CODE>connect</CODE> before calling <CODE>start</CODE>.)	 *	 * @exception IOException Thrown if there are IO problems with the source	 * when <CODE>start</CODE> is called.	 */    public void start() throws IOException {	// we need to throw error if connect() has not been called        if (!connected)            throw new java.lang.Error("DataSource must be connected before it can be started");        if (started)            return;		started = true;		stream.start(true);    }	/**	 * Stop the data-transfer.	 * If the source has not been connected and started,	 * <CODE>stop</CODE> does nothing.	 */    public void stop() throws IOException {		if ((!connected) || (!started))		    return;		started = false;		stream.start(false);    }	/**	 * Obtain the collection of objects that	 * control the object that implements this interface.	 * <p>	 *	 * No controls are supported.	 * A zero length array is returned.	 *	 * @return A zero length array	 */    public Object [] getControls() {		return controls;    }	/**	 * Obtain the object that implements the specified	 * <code>Class</code> or <code>Interface</code>	 * The full class or interface name must be used.	 * <p>	 *	 * The control is not supported.	 * <code>null</code> is returned.	 *	 * @return <code>null</code>.	 */    public Object getControl(String controlType) {       try {          Class  cls = Class.forName(controlType);          Object cs[] = getControls();          for (int i = 0; i < cs.length; i++) {             if (cls.isInstance(cs[i]))                return cs[i];          }          return null;       } catch (Exception e) {   // no such controlType or such control         return null;       }    }	/**	 * Set the buffer of this <code>DataSource</code>	 * @param buffer	 */	public void setBuffer(byte[] buffer){		if (streams == null) {			streams = new RawLiveStream[1];			stream = streams[0] = new RawLiveStream();		}		stream.data=buffer;	}	/**	 * @see javax.media.Duration#getDuration()	 */    public Time getDuration() {		return duration;    }	/**	 * Get the collection of streams that this source	 * manages. The collection of streams is entirely	 * content dependent. The  MIME type of this	 * <CODE>DataSource</CODE> provides the only indication of	 * what streams can be available on this connection.	 *	 * @return The collection of streams for this source.	 */    public PushBufferStream [] getStreams() {		if (streams == null) {		    streams = new RawLiveStream[1];		    stream = streams[0] = new RawLiveStream();		}		return streams;    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -