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

📄 pluginutility.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
字号:
package net.sf.fmj.utility;import java.util.logging.Logger;import javax.media.Codec;import javax.media.Demultiplexer;import javax.media.Effect;import javax.media.Format;import javax.media.Multiplexer;import javax.media.PlugInManager;import javax.media.Renderer;import javax.media.protocol.ContentDescriptor;/** * Helper class to register plugins with the PlugInManager, but only requiring the class name. * The rest is done by reflection/instantiation/querying. * @author Ken Larson * */public class PlugInUtility{	private static final Logger logger = LoggerSingleton.logger;	private static final boolean TRACE = false;		public static boolean registerPlugIn(String className)	{				final Object o;		try		{			final Class clazz = Class.forName(className);			o = clazz.newInstance();			if (o instanceof Demultiplexer)			{				if (TRACE) logger.fine("PlugInUtility: Registering demultiplexer: " + className);				final Demultiplexer oCast = (Demultiplexer) o;				final ContentDescriptor[] contentDescriptors = oCast.getSupportedInputContentDescriptors();				final Format[] formats = new Format[contentDescriptors.length];				for (int i = 0; i < contentDescriptors.length; ++i)				{					if (TRACE) logger.fine("\t" + contentDescriptors[i]);					formats[i] = contentDescriptors[i];				}								return PlugInManager.addPlugIn(className, formats, new Format[] {}, PlugInManager.DEMULTIPLEXER);							}			else if (o instanceof Codec)			{				if (TRACE) logger.fine("PlugInUtility: Registering codec: " + className);				final Codec oCast = (Codec) o;				final Format[] inputFormats = oCast.getSupportedInputFormats();					final Format[] outputFormats = oCast.getSupportedOutputFormats(null);	// this is what JMRegistry does								return PlugInManager.addPlugIn(className, inputFormats, outputFormats, (o instanceof Effect) ? PlugInManager.EFFECT : PlugInManager.CODEC);					}			else if (o instanceof Renderer)			{				if (TRACE) logger.fine("PlugInUtility: Registering renderer: " + className);				final Renderer oCast = (Renderer) o;				final Format[] inputFormats = oCast.getSupportedInputFormats();				return PlugInManager.addPlugIn(className, inputFormats, new Format[] {}, PlugInManager.RENDERER);			}			else if (o instanceof Multiplexer)			{					if (TRACE) logger.fine("PlugInUtility: Registering Multiplexer: " + className);				final Multiplexer oCast = (Multiplexer) o;				// JMF Multiplexers always have nothing for the input formats.				return PlugInManager.addPlugIn(className, new Format[] {}, oCast.getSupportedOutputContentDescriptors(null), PlugInManager.MULTIPLEXER);			}			else			{				logger.warning("PlugInUtility: Unknown or unsupported plug-in: " + o.getClass());				return false;			}				}		catch (Throwable e)	// catch Throwable instead of Exception because some plug-ins load native libraries, and if the native libraries are missing, we can get exceptions not caught by Exception		{			logger.fine("PlugInUtility: Unable to register plugin " + className + ": " + e);			return false;		}			}}

⌨️ 快捷键说明

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