/*
* @(#)AudioCodec.java 1.8 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package com.ibm.media.codec.audio;
import javax.media.format.*;
import javax.media.format.*;
import javax.media.*;
import com.sun.media.*;
public abstract class AudioCodec extends BasicCodec {
protected String PLUGIN_NAME;
protected AudioFormat defaultOutputFormats[];
protected AudioFormat supportedInputFormats[];
protected AudioFormat supportedOutputFormats[];
protected AudioFormat inputFormat;
protected AudioFormat outputFormat;
protected final boolean DEBUG = true;
public String getName() {
return PLUGIN_NAME;
}
public Format [] getSupportedInputFormats() {
return supportedInputFormats;
}
public Format setInputFormat(Format format) {
if ( !(format instanceof AudioFormat) ||
(null == matches(format, supportedInputFormats)) )
return null;
inputFormat = (AudioFormat)format;
return format;
}
public Format setOutputFormat(Format format) {
// This methods assumes setInputFormat has already been called.
if ( !(format instanceof AudioFormat) ||
(null == matches(format, getMatchingOutputFormats(inputFormat))) )
return null;
outputFormat = (AudioFormat)format;
return format;
}
protected Format getInputFormat() {
return inputFormat;
}
protected Format getOutputFormat() {
return outputFormat;
}
protected Format[] getMatchingOutputFormats(Format in) {
return new Format[0];
}
public Format [] getSupportedOutputFormats(Format in) {
// null input format
if (in==null) {
return defaultOutputFormats;
}
// mismatch input format
if ( !(in instanceof AudioFormat ) ||
(matches(in,supportedInputFormats)==null) ) {
return new Format[0];
}
// match input format
return getMatchingOutputFormats(in);
}
/**
* Checks the header of the compressed audio packet and detects any format
* changes. Does not modify the buffer in any way.
* TBD: how to select spesific output format
*/
public boolean checkFormat(Format format) {
return true;
}
}
|