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

📄 filtergraphnode.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
字号:
/** *  */package net.sf.fmj.filtergraph;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.logging.Logger;import javax.media.Buffer;import javax.media.Format;import javax.media.PlugIn;import javax.media.ResourceUnavailableException;import net.sf.fmj.utility.LoggerSingleton;/** * Base class for all filter graph nodes. * @author Ken Larson * */public abstract class FilterGraphNode{	protected static final Logger logger = LoggerSingleton.logger;	/**	 * Destination nodes.	 */	private List/*<FilterGraphLink>*/ destLinks = new ArrayList/*<FilterGraphLink>*/();		// processing state:	/**	 * Output buffer n is for destination node n.	 * For a node which is a renderer node, the corresponding buffer will be null.	 * Also, if a particular track/dest is not being processed at all by a graph,	 * the corresponding buffer will be null.	 */	private List/*<Buffer>*/ outputBuffers = new ArrayList();		private final PlugIn plugIn;		public FilterGraphNode(final PlugIn plugIn)	{		super();		this.plugIn = plugIn;	}	public int getNumDestLinks()	{	return destLinks.size();	}		public FilterGraphLink getDestLink(int i)	{		try {			return (FilterGraphLink) destLinks.get(i);		}		catch (IndexOutOfBoundsException e) {			return null;		}	}		public Buffer getOutputBuffer(int i)	{		try {			return (Buffer) outputBuffers.get(i);		}		catch (IndexOutOfBoundsException e) {			return null;		}	}		public void setOutputBuffer(int i, Buffer b)	{		outputBuffers.set(i, b);	}		public void addDestLink(FilterGraphLink n)	{		destLinks.add(n);		outputBuffers.add(null);	}		public abstract FilterGraphNode duplicate();	public abstract void open() throws ResourceUnavailableException;	// TODO: close() method	/** sourceTrackNumber only used for demux, and destTrackNumber only used for mux. */	public abstract int process(Buffer input, int sourceTrackNumber, int destTrackNumber, int flags);		/**	 * Intended to be called by subclass implementations of duplicate, to duplicate the destinations.	 * @param result FilterGraphNode that is to be returned by duplicate();	 */	protected FilterGraphNode propagateDuplicate(FilterGraphNode result)	{		for (int i = 0; i < getNumDestLinks(); ++i)		{			FilterGraphLink link = getDestLink(i);			if (link != null) {				result.addDestLink(new FilterGraphLink(link.getDestNode().duplicate(), link.getDestTrack()));			}		}		return result;	}		public void print(Logger logger, String prefix)	{		final String inputFormatStr = getInputFormat() == null ? "" : (getInputFormat().getClass().getSimpleName() + " [" + getInputFormat() + "]");		logger.info(prefix + inputFormatStr);		logger.info(prefix + getPlugIn().getClass().getName());	}	public abstract Format getInputFormat();	public PlugIn getPlugIn()	{	return plugIn;	}	public void start() throws IOException	{	// do nothing by default	}		public void stop()	{	// do nothing by default	}	}

⌨️ 快捷键说明

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