Mercurial > hg > jvamp
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; }