changeset 6:3dd55efc53ca

Implement getPrograms, start on getOutputDescriptors
author Chris Cannam
date Wed, 25 Jan 2012 15:30:12 +0000
parents 8a0ac3d6903d
children 93dfb83c6f82
files org/vamp_plugins/test.java src/Plugin.cpp
diffstat 2 files changed, 32 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/org/vamp_plugins/test.java	Mon Jan 23 23:00:33 2012 +0000
+++ b/org/vamp_plugins/test.java	Wed Jan 25 15:30:12 2012 +0000
@@ -6,7 +6,8 @@
     public static void main(String[] args) {
 	
 	// This is a plugin we know we have installed
-	String key = "vamp-example-plugins:percussiononsets";
+//	String key = "vamp-example-plugins:percussiononsets";
+	String key = "qm-vamp-plugins:qm-onsets";
 
 	PluginLoader loader = PluginLoader.getInstance();
 	
@@ -22,6 +23,11 @@
 	    } else {
 		System.out.println("This is a frequency-domain plugin");
 	    }
+	    String[] progs = p.getPrograms();
+	    System.out.println("Plugin has " + progs.length + " program(s)");
+	    for (int i = 0; i < progs.length; ++i) {
+		System.out.println(i + ": " + progs[i]);
+	    }
 	} catch (PluginLoader.LoadFailedException e) {
 	    System.out.println("Plugin load failed");
 	}
--- a/src/Plugin.cpp	Mon Jan 23 23:00:33 2012 +0000
+++ b/src/Plugin.cpp	Wed Jan 25 15:30:12 2012 +0000
@@ -5,6 +5,7 @@
 #include "handle.h"
 
 using Vamp::Plugin;
+using Vamp::PluginBase;
 using std::string;
 
 jint
@@ -76,13 +77,21 @@
     p->setParameter(s, f);
     env->ReleaseStringUTFChars(param, s);
 }
-/*
+
 jobjectArray
 Java_org_vamp_1plugins_Plugin_getPrograms(JNIEnv *env, jobject obj)
 {
-//!!!
+    Plugin *p = getHandle<Plugin>(env, obj);
+    PluginBase::ProgramList programs = p->getPrograms();
+    jobjectArray result = env->NewObjectArray
+	(programs.size(), env->FindClass("java/lang/String"), 0);
+    for (int i = 0; i < programs.size(); ++i) {
+	env->SetObjectArrayElement(result, i,
+				   env->NewStringUTF(programs[i].c_str()));
+    }
+    return result;
 }
-*/
+
 jstring
 Java_org_vamp_1plugins_Plugin_getCurrentProgram(JNIEnv *env, jobject obj)
 {
@@ -170,7 +179,19 @@
 Java_org_vamp_1plugins_Plugin_getOutputDescriptors(JNIEnv *env, jobject obj)
 {
     Plugin *p = getHandle<Plugin>(env, obj);
-    //!!!
+    Plugin::OutputList outputs = p->getOutputDescriptors();
+    jclass descClass = env->FindClass("org/vamp_plugins/OutputDescriptor");
+    jobjectArray result = env->NewObjectArray(outputs.size(), descClass, 0);
+    for (int i = 0; i < outputs.size(); ++i) {
+	jmethodID ctor = env->GetMethodID(descClass, "<init>", "(V)V");
+	jobject descriptor = env->NewObject(descClass, ctor);
+	env->SetObjectField(descriptor, env->GetFieldID(descClass, "identifier", "Ljava/lang/String;"), env->NewStringUTF(outputs[i].identifier.c_str()));
+
+	//!!!
+
+
+	env->SetObjectArrayElement(result, i, descriptor);
+    }
     return 0;
 }