changeset 20:cf6c69871f9c

Start on RealTime native bits -- incomplete
author Chris Cannam
date Wed, 08 Feb 2012 15:22:48 +0000
parents 5b0847d344c3
children 0a91d898acc3
files Makefile org/vamp_plugins/Plugin.java org/vamp_plugins/RealTime.java src/Plugin.cpp src/RealTime.cpp src/org_vamp_plugins_Plugin.h src/org_vamp_plugins_Plugin_Feature.h src/org_vamp_plugins_RealTime.h
diffstat 8 files changed, 231 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Tue Feb 07 15:53:21 2012 +0000
+++ b/Makefile	Wed Feb 08 15:22:48 2012 +0000
@@ -1,6 +1,6 @@
 
 LIBRARY := libvamp-jni.so
-OBJFILES := src/PluginLoader.o src/Plugin.o src/getset.o
+OBJFILES := src/PluginLoader.o src/Plugin.o src/RealTime.o src/getset.o
 INCLUDES := -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
 CXXFLAGS := $(INCLUDES) -g -fPIC
 
--- a/org/vamp_plugins/Plugin.java	Tue Feb 07 15:53:21 2012 +0000
+++ b/org/vamp_plugins/Plugin.java	Wed Feb 08 15:22:48 2012 +0000
@@ -9,6 +9,8 @@
     private long nativeHandle;
     protected Plugin(long handle) { nativeHandle = handle; }
 
+    public native void dispose();
+
     // PluginBase methods
 
     public native int getVampApiVersion();
--- a/org/vamp_plugins/RealTime.java	Tue Feb 07 15:53:21 2012 +0000
+++ b/org/vamp_plugins/RealTime.java	Wed Feb 08 15:22:48 2012 +0000
@@ -1,23 +1,32 @@
 
 package org.vamp_plugins;
 
-public class RealTime {
-    public int sec;
-    public int nsec;
+public class RealTime
+{
+    public RealTime(int s, int n) { initialise(s, n); }
 
-    public RealTime(int s, int n) { sec = s; nsec = n; }
+    public native void dispose();
 
-    static RealTime frame2RealTime(int frame, int sampleRate) {
-	//!!! warning! doesn't support -ve frame [unlike Vamp SDK version]
-	int sec = frame / sampleRate;
-	frame -= sec * sampleRate;
-	int nsec = (int)((((double)frame * 1000000.0) / sampleRate) * 1000.0);
-	return new RealTime(sec, nsec);
-    }
+    public native int sec();
+    public native int nsec();
 
-    public String toString() {
-	return sec + ":" + nsec;
-    }
+    public native int usec();
+    public native int msec();
+
+    /// Return a debug-type string to full precision
+    public native String toString();
+
+    /// Return a user-readable formatted string to the nearest millisecond
+    public native String toText();
+
+    public native static RealTime fromSeconds(double sec);
+    public native static RealTime fromMilliseconds(int msec);
+    
+    public native static RealTime frame2RealTime(long frame, int sampleRate);
+    public native static long realTime2Frame(RealTime r, int sampleRate);
+
+    private native void initialise(int s, int n);
+    private long nativeHandle;
 }
 
 
--- a/src/Plugin.cpp	Tue Feb 07 15:53:21 2012 +0000
+++ b/src/Plugin.cpp	Wed Feb 08 15:22:48 2012 +0000
@@ -11,6 +11,14 @@
 using Vamp::PluginBase;
 using std::string;
 
+void
+Java_org_vamp_1plugins_Plugin_dispose(JNIEnv *env, jobject obj)
+{
+    Plugin *p = getHandle<Plugin>(env, obj);
+    setHandle<Plugin>(env, obj, 0);
+    delete p;
+}
+
 jint
 Java_org_vamp_1plugins_Plugin_getVampApiVersion(JNIEnv *env, jobject obj)
 {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/RealTime.cpp	Wed Feb 08 15:22:48 2012 +0000
@@ -0,0 +1,80 @@
+#include "org_vamp_plugins_RealTime.h"
+
+#include <vamp-hostsdk/RealTime.h>
+
+#include "handle.h"
+
+using Vamp::RealTime;
+using std::string;
+
+void
+Java_org_vamp_1plugins_RealTime_dispose(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    setHandle<RealTime>(env, obj, 0);
+    delete rt;
+}
+
+jint
+Java_org_vamp_1plugins_RealTime_sec(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return rt->sec;
+}
+
+jint
+Java_org_vamp_1plugins_RealTime_nsec(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return rt->nsec;
+}    
+
+jint
+Java_org_vamp_1plugins_RealTime_usec(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return rt->usec();
+}
+
+jint
+Java_org_vamp_1plugins_RealTime_msec(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return rt->msec();
+}
+
+jstring
+Java_org_vamp_1plugins_RealTime_toString(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return env->NewStringUTF(rt->toString().c_str());
+}
+
+jstring
+Java_org_vamp_1plugins_RealTime_toText(JNIEnv *env, jobject obj)
+{
+    RealTime *rt = getHandle<RealTime>(env, obj);
+    return env->NewStringUTF(rt->toText().c_str());
+}    
+
+jobject
+Java_org_vamp_1plugins_RealTime_fromSeconds(JNIEnv *env, jclass cls, jdouble s)
+{
+    
+}
+
+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)
+{
+}
+
+
+
--- a/src/org_vamp_plugins_Plugin.h	Tue Feb 07 15:53:21 2012 +0000
+++ b/src/org_vamp_plugins_Plugin.h	Wed Feb 08 15:22:48 2012 +0000
@@ -9,6 +9,14 @@
 #endif
 /*
  * Class:     org_vamp_plugins_Plugin
+ * Method:    dispose
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_org_vamp_1plugins_Plugin_dispose
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_Plugin
  * Method:    getVampApiVersion
  * Signature: ()I
  */
--- a/src/org_vamp_plugins_Plugin_Feature.h	Tue Feb 07 15:53:21 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_vamp_plugins_Plugin_Feature */
-
-#ifndef _Included_org_vamp_plugins_Plugin_Feature
-#define _Included_org_vamp_plugins_Plugin_Feature
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org_vamp_plugins_RealTime.h	Wed Feb 08 15:22:48 2012 +0000
@@ -0,0 +1,109 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_vamp_plugins_RealTime */
+
+#ifndef _Included_org_vamp_plugins_RealTime
+#define _Included_org_vamp_plugins_RealTime
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    dispose
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_org_vamp_1plugins_RealTime_dispose
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    sec
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_org_vamp_1plugins_RealTime_sec
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    nsec
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_org_vamp_1plugins_RealTime_nsec
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    usec
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_org_vamp_1plugins_RealTime_usec
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    msec
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_org_vamp_1plugins_RealTime_msec
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    toString
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_vamp_1plugins_RealTime_toString
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    toText
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_org_vamp_1plugins_RealTime_toText
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    fromSeconds
+ * Signature: (D)Lorg/vamp_plugins/RealTime;
+ */
+JNIEXPORT jobject JNICALL Java_org_vamp_1plugins_RealTime_fromSeconds
+  (JNIEnv *, jclass, jdouble);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    fromMilliseconds
+ * Signature: (I)Lorg/vamp_plugins/RealTime;
+ */
+JNIEXPORT jobject JNICALL Java_org_vamp_1plugins_RealTime_fromMilliseconds
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    frame2RealTime
+ * Signature: (JI)Lorg/vamp_plugins/RealTime;
+ */
+JNIEXPORT jobject JNICALL Java_org_vamp_1plugins_RealTime_frame2RealTime
+  (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    realTime2Frame
+ * Signature: (Lorg/vamp_plugins/RealTime;I)J
+ */
+JNIEXPORT jlong JNICALL Java_org_vamp_1plugins_RealTime_realTime2Frame
+  (JNIEnv *, jclass, jobject, jint);
+
+/*
+ * Class:     org_vamp_plugins_RealTime
+ * Method:    initialise
+ * Signature: (II)V
+ */
+JNIEXPORT void JNICALL Java_org_vamp_1plugins_RealTime_initialise
+  (JNIEnv *, jobject, jint, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif