Chris@0: Chris@0: package org.vamp_plugins; Chris@0: Chris@2: import java.util.TreeMap; Chris@2: import java.util.ArrayList; Chris@2: Chris@0: public class Plugin Chris@0: { Chris@0: private long nativeHandle; Chris@0: protected Plugin(long handle) { nativeHandle = handle; } Chris@0: Chris@3: // PluginBase methods Chris@3: Chris@3: public native int getVampApiVersion(); Chris@0: public native String getIdentifier(); Chris@0: public native String getName(); Chris@0: public native String getDescription(); Chris@3: public native String getMaker(); Chris@3: public native String getCopyright(); Chris@0: public native int getPluginVersion(); Chris@2: Chris@3: public native ParameterDescriptor[] getParameterDescriptors(); Chris@3: public native float getParameter(String identifier); Chris@3: public native void setParameter(String identifier, float value); Chris@3: Chris@3: public native String[] getPrograms(); Chris@3: public native String getCurrentProgram(); Chris@3: public native void selectProgram(String program); Chris@3: Chris@3: // Plugin methods Chris@3: Chris@2: public native boolean initialise(int inputChannels, Chris@2: int stepSize, Chris@2: int blockSize); Chris@2: Chris@2: public native void reset(); Chris@2: Chris@2: public static enum InputDomain { TimeDomain, FrequencyDomain }; Chris@2: public native InputDomain getInputDomain(); Chris@2: Chris@2: public native int getPreferredBlockSize(); Chris@2: public native int getPreferredStepSize(); Chris@2: public native int getMinChannelCount(); Chris@2: public native int getMaxChannelCount(); Chris@2: Chris@2: public native OutputDescriptor[] getOutputDescriptors(); Chris@2: Chris@2: public class Feature { Chris@2: public boolean hasTimestamp; Chris@2: public RealTime timestamp; Chris@2: public boolean hasDuration; Chris@2: public RealTime duration; Chris@2: public float[] values; Chris@2: public String label; Chris@2: Feature() { Chris@2: hasTimestamp = false; hasDuration = false; Chris@2: } Chris@2: }; Chris@2: Chris@2: // "Pseudo-typedef antipattern - don't do this": http://www.ibm.com/developerworks/java/library/j-jtp02216/index.html Chris@2: // (I would like to!) Chris@2: // public class FeatureList extends ArrayList; Chris@2: // public class FeatureSet extends TreeMap; Chris@2: Chris@2: public native TreeMap> Chris@2: process(float[][] inputBuffers, Chris@2: RealTime timestamp); Chris@2: Chris@2: public native TreeMap> Chris@2: getRemainingFeatures(); Chris@0: } Chris@0: