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