changeset 21:0a91d898acc3

Finish implementation of RealTime; add dispose() calls
author Chris Cannam
date Thu, 09 Feb 2012 16:18:33 +0000
parents cf6c69871f9c
children 6385a6caaa7c
files org/vamp_plugins/test.java src/Plugin.cpp src/RealTime.cpp
diffstat 3 files changed, 34 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/org/vamp_plugins/test.java	Wed Feb 08 15:22:48 2012 +0000
+++ b/org/vamp_plugins/test.java	Thu Feb 09 16:18:33 2012 +0000
@@ -80,6 +80,8 @@
 		TreeMap<Integer, ArrayList<Feature>>
 		    features = p.process(buffers, timestamp);
 
+		timestamp.dispose();
+
 		printFeatures(features);
 	    }
 
@@ -89,6 +91,7 @@
 	    System.out.println("Results from getRemainingFeatures:");
 
 	    printFeatures(features);
+	    p.dispose();
 
 	} catch (PluginLoader.LoadFailedException e) {
 	    System.out.println("Plugin load failed");
--- a/src/Plugin.cpp	Wed Feb 08 15:22:48 2012 +0000
+++ b/src/Plugin.cpp	Thu Feb 09 16:18:33 2012 +0000
@@ -334,9 +334,7 @@
 {
     Plugin *p = getHandle<Plugin>(env, obj);
 
-    Vamp::RealTime rt;
-    rt.sec = getIntField(env, timestamp, "sec");
-    rt.nsec = getIntField(env, timestamp, "nsec");
+    const Vamp::RealTime *const rt = getHandle<Vamp::RealTime>(env, timestamp);
     
     int channels = env->GetArrayLength(data);
     float **input = new float *[channels];
@@ -345,7 +343,7 @@
         input[c] = env->GetFloatArrayElements(cdata, 0);
     }
 
-    Plugin::FeatureSet features = p->process(input, rt);
+    Plugin::FeatureSet features = p->process(input, *rt);
 
     for (int c = 0; c < channels; ++c) {
         jfloatArray cdata = (jfloatArray)env->GetObjectArrayElement(data, c);
--- a/src/RealTime.cpp	Wed Feb 08 15:22:48 2012 +0000
+++ b/src/RealTime.cpp	Thu Feb 09 16:18:33 2012 +0000
@@ -60,21 +60,39 @@
 jobject
 Java_org_vamp_1plugins_RealTime_fromSeconds(JNIEnv *env, jclass cls, jdouble s)
 {
-    
+    jclass rtClass = env->FindClass("org/vamp_plugins/RealTime");
+    jmethodID rtCtor = env->GetMethodID(rtClass, "<init>", "(II)V");
+    RealTime rt = RealTime::fromSeconds(s);
+    return env->NewObject(rtClass, rtCtor, rt.sec, rt.nsec);
 }
 
-jobject Java_org_vamp_1plugins_RealTime_fromMilliseconds
-  (JNIEnv *env, jclass cls, jint);
-
-jobject Java_org_vamp_1plugins_RealTime_frame2RealTime
-  (JNIEnv *env, jclass cls, jlong, jint);
-
-jlong Java_org_vamp_1plugins_RealTime_realTime2Frame
-  (JNIEnv *env, jclass cls, jobject, jint);
-
-void Java_org_vamp_1plugins_RealTime_init(JNIEnv *env, jobject obj, jint sec, jint nsec)
+jobject Java_org_vamp_1plugins_RealTime_fromMilliseconds(JNIEnv *env, jclass cls, jint ms)
 {
+    jclass rtClass = env->FindClass("org/vamp_plugins/RealTime");
+    jmethodID rtCtor = env->GetMethodID(rtClass, "<init>", "(II)V");
+    RealTime rt = RealTime::fromMilliseconds(ms);
+    return env->NewObject(rtClass, rtCtor, rt.sec, rt.nsec);
 }
 
+jobject Java_org_vamp_1plugins_RealTime_frame2RealTime(JNIEnv *env, jclass cls, jlong frame, jint sampleRate)
+{
+    jclass rtClass = env->FindClass("org/vamp_plugins/RealTime");
+    jmethodID rtCtor = env->GetMethodID(rtClass, "<init>", "(II)V");
+    RealTime rt = RealTime::frame2RealTime(frame, sampleRate);
+    return env->NewObject(rtClass, rtCtor, rt.sec, rt.nsec);
+}
 
+jlong Java_org_vamp_1plugins_RealTime_realTime2Frame(JNIEnv *env, jclass cls, jobject obj, jint sampleRate)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return RealTime::realTime2Frame(*rt, sampleRate);
+}
 
+void Java_org_vamp_1plugins_RealTime_initialise(JNIEnv *env, jobject obj, jint sec, jint nsec)
+{
+    RealTime *rt = new RealTime(sec, nsec);
+    setHandle(env, obj, rt);
+}
+
+
+