package org.jboss.media.engine;
import java.util.Vector;
import javax.media.Buffer;
import javax.media.Control;
import javax.media.Effect;
import javax.media.Format;
import javax.media.ResourceUnavailableException;
public abstract class JmfAbstractMediaPlugin implements Effect
{
Vector m_mediaPlugins = new Vector();
public Format[] getSupportedInputFormats()
{
return getSupportedFormats();
}
public Format[] getSupportedOutputFormats(Format in)
{
if (in == null)
return getSupportedFormats();
else
{
Format outs[] = new Format[1];
outs[0] = in;
return outs;
}
}
public int process(Buffer input, Buffer output)
{
output.setData(input.getData());
output.setFormat(input.getFormat());
output.setLength(input.getLength());
output.setOffset(input.getOffset());
for (int i = 0; i < m_mediaPlugins.size(); i++)
{
((MediaPlugin) m_mediaPlugins.elementAt(i)).process(output);
}
return BUFFER_PROCESSED_OK;
}
public Format setInputFormat(Format format)
{
return format;
}
public Format setOutputFormat(Format format)
{
return format;
}
public void close()
{
}
public String getName()
{
return getClass().getName();
}
public void open() throws ResourceUnavailableException
{
}
public void reset()
{
}
public Object getControl(String arg0)
{
return null;
}
public Object[] getControls()
{
return (Object[]) (new Control[0]);
}
public abstract Format[] getSupportedFormats();
public void setPluginGraph(MediaPluginGraph graph)
{
m_mediaPlugins = graph.getPluginVector();
}
public Vector getPluginGraph()
{
return m_mediaPlugins;
}
}