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

📄 datasource.java

📁 是一个用java实现的
💻 JAVA
字号:
/*
 * DataSource.java
 *
 * Created on March 20, 2003, 8:56 AM
 */
package gov.nist.media.protocol.live;

import javax.media.Time;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.FileTypeDescriptor;
import javax.media.protocol.PullDataSource;

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 MPEG_AUDIO
 * or GSM audio data
 * 
 * @author Jean Deruelle <jean.deruelle@nist.gov>
 *
 * <a href="{@docRoot}/uncopyright.html">This code is in the public domain.</a>
 */
public class DataSource extends PullDataSource {

	protected ContentDescriptor contentType;
	protected ByteStream[] sources; 
	protected boolean connected;
	protected byte[] buffer;
    
    /**
     * Construct a <CODE>DataSource</CODE> unconnected containing nothing
     * The <CODE>setBuffer</CODE> method need to be called to process data
     */
	public DataSource(){
		connected=false;
	}
     
	 /**
	 * Construct a <CODE>DataSource</CODE> from a byte array.
	 * @param input - the array of byte used to construct the DataSource
	 * @param contentType - the content Type of the Data Source
	 * @throws IOException - if there is an I/O problem
	 */
	public DataSource(byte[] input, String contentType) throws IOException {
		buffer = input;
		this.contentType = new ContentDescriptor(contentType);
		connected = false;
	}
    
	/**
	 * 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 java.io.IOException {
		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() {
		if(connected) {									
			sources[0].close();
			sources=null;
			buffer=null;			
			connected = false;
		}
	}
    
	/**
	 * Get a string that describes the content-type of the media
	 * that the source is providing.
	 * <p>
	 * It is an error to call <CODE>getContentType</CODE> if the source is
	 * not connected.
	 *
	 * @return The name that describes the media content.
	 */
	public String getContentType() {
		if( !connected) {
	   		throw new java.lang.Error("Source is unconnected.");
		}
		if(contentType!=null)
			return contentType.getContentType();
		else
			//return new ContentDescriptor(FileTypeDescriptor.MPEG_AUDIO).getContentType();
			return new ContentDescriptor(FileTypeDescriptor.GSM).getContentType();
	}
	
	/**
	 * @see javax.media.Controls#getControl(java.lang.String)
	 */
    public Object getControl(String str) {
		return null;
	}
    /**
     * @see javax.media.Controls#getControls()
     */
	public Object[] getControls() {
		return new Object[0];
	}
    /**
     * @see javax.media.Duration#getDuration()
     */
	public Time getDuration() {
		return new Time(5.0);
	}
    
	/**
	 * 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 javax.media.protocol.PullSourceStream[] getStreams() {
		if( !connected) {
	   		throw new java.lang.Error("Source is unconnected.");
		}
		return sources;
	}
    
	/**
	 * 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 {
	}
    
	/**
	 * Stop the data-transfer.
	 * If the source has not been connected and started,
	 * <CODE>stop</CODE> does nothing.
	 */
	public void stop() throws IOException {		
	}
	
	/**
	 * Set the buffer of this <code>DataSource</code>
	 * @param buffer
	 */
	public void setBuffer(byte[] buffer){
		this.buffer=buffer;
		sources = new ByteStream [1];
		sources[0] = new ByteStream(buffer);
	}
}

⌨️ 快捷键说明

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