package net.sourceforge.jffmpeg;
import javax.media.ResourceUnavailableException;
import javax.media.Codec;
import javax.media.Format;
import javax.media.Buffer;
import net.sourceforge.jffmpeg.ffmpegnative.NativeEncoder;
/**
* This class manages all jffmpeg video encoders
*/
public class VideoEncoder implements Codec {
private NativeEncoder peer = new NativeEncoder();
/**
* Retrieve the supported input formats.
*
* @return Format[] the supported input formats
*/
public Format[] getSupportedInputFormats() {
return peer.getSupportedInputFormats();
}
/**
* Retrieve the supported output formats. Currently RGBVideo
*
* @return Format[] the supported output formats
*/
public Format[] getSupportedOutputFormats(Format format) {
return peer.getSupportedOutputFormats( format );
}
/**
* Negotiate the format for the input data.
*
* Only the width and height entries are used
*
* @return Format the negotiated input format
*/
public Format setInputFormat( Format format ) {
return peer.setInputFormat( format );
}
/**
* Negotiate the format for screen display renderer.
*
* Only the frame rate entry is used. All the other
* values are populated using the negotiated input formnat.
*
* @return Format RGBFormat to supply to display renderer.
*/
public Format setOutputFormat( Format format ) {
return peer.setOutputFormat( format );
}
/**
* Convert data using this codec
*
* @return BUFFER_PROCESSED_OK The output buffer contains a valid frame
* @return BUFFER_PROCESSED_FAILED A decoding problem was encountered
*/
public int process( Buffer in, Buffer out ) {
return peer.process( in, out );
}
/**
* Initialise the video codec for use.
*/
public void open() throws ResourceUnavailableException {
peer.open();
}
/**
* Deallocate resources, and shutdown.
*/
public void close() {
peer.close();
}
/**
* Reset the internal state of the video codec.
*/
public void reset() {
peer.reset();
}
/**
* Retrives the name of this video codec: "FFMPEG video encoder"
* @return Codec name
*/
public String getName() {
return "FFMPEG video encoder";
}
/**
* This method returns the interfaces that can be used
* to control this codec. Currently no interfaces are defined.
*/
public Object[] getControls() {
return peer.getControls();
}
/**
* This method returns an interface that can be used
* to control this codec. Currently no interfaces are defined.
*/
public Object getControl( String type ) {
return peer.getControl( type );
}
}