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

📄 trackinputstream.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
字号:
package net.sf.fmj.media;import java.io.IOException;import java.io.InputStream;import java.util.logging.Logger;import javax.media.Buffer;import javax.media.Track;import net.sf.fmj.utility.LoggerSingleton;/** * Implements InputStream by wrapping a Track. * @author Ken Larson * */public class TrackInputStream extends InputStream{	private static final Logger logger = LoggerSingleton.logger;	private final Track track;	private Buffer buffer;		public TrackInputStream(Track track)	{		super();		this.track = track;	}	public Buffer getBuffer()	{	return buffer;	}		private void fillBuffer()	{		if (buffer == null)		{				buffer = new Buffer();			buffer.setFormat(track.getFormat());					}						do		{			if (buffer.isEOM())				return;						if (buffer.getLength() > 0)				return;	 // still have data in buffer			// TODO: any fields to set?			track.readFrame(buffer);			logger.fine("Read buffer from track: " + buffer.getLength());					}		while (buffer.isDiscard());	}		//@Override	public int read() throws IOException	{		// TODO: how do we detect IOException? 		fillBuffer();		if (buffer.getLength() == 0 && buffer.isEOM()) // TODO: will always be EOM if length is 0			return -1;		final byte[] data = (byte[]) buffer.getData();		final int result = data[buffer.getOffset()] & 0xff;		buffer.setOffset(buffer.getOffset() + 1);		buffer.setLength(buffer.getLength() - 1);				return result;			}	//@Override	public int read(byte[] b, int off, int len) throws IOException	{				// TODO: how do we detect IOException? 		fillBuffer();		if (buffer.getLength() == 0 && buffer.isEOM()) // TODO: will always be EOM if length is 0			return -1;		final byte[] data = (byte[]) buffer.getData();		int lengthToCopy = buffer.getLength() < len ? buffer.getLength() : len;		System.arraycopy(data, buffer.getOffset(), b, off, lengthToCopy);		buffer.setOffset(buffer.getOffset() + lengthToCopy);		buffer.setLength(buffer.getLength() - lengthToCopy);		return lengthToCopy;	}}

⌨️ 快捷键说明

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