Implement & exercise getKeyFrameMap in JNI

This commit is contained in:
Chris Cannam
2023-12-14 14:31:08 +00:00
parent e54fd1fd95
commit dc745e3487
3 changed files with 70 additions and 2 deletions

View File

@@ -183,6 +183,14 @@ JNIEXPORT jint JNICALL Java_com_breakfastquay_rubberband_RubberBandStretcher_get
JNIEXPORT jint JNICALL Java_com_breakfastquay_rubberband_RubberBandStretcher_getSamplesRequired
(JNIEnv *, jobject);
/*
* Class: com_breakfastquay_rubberband_RubberBandStretcher
* Method: setKeyFrameMap
* Signature: ([J[J)V
*/
JNIEXPORT void JNICALL Java_com_breakfastquay_rubberband_RubberBandStretcher_setKeyFrameMap
(JNIEnv *, jobject, jlongArray, jlongArray);
/*
* Class: com_breakfastquay_rubberband_RubberBandStretcher
* Method: study
@@ -365,6 +373,22 @@ Java_com_breakfastquay_rubberband_RubberBandStretcher_getSamplesRequired(JNIEnv
return getStretcher(env, obj)->getSamplesRequired();
}
JNIEXPORT void JNICALL
Java_com_breakfastquay_rubberband_RubberBandStretcher_setKeyFrameMap(JNIEnv *env, jobject obj, jlongArray from, jlongArray to)
{
std::map<size_t, size_t> m;
int flen = env->GetArrayLength(from);
int tlen = env->GetArrayLength(to);
jlong *farr = env->GetLongArrayElements(from, 0);
jlong *tarr = env->GetLongArrayElements(to, 0);
for (int i = 0; i < flen && i < tlen; ++i) {
m[farr[i]] = tarr[i];
}
env->ReleaseLongArrayElements(from, farr, 0);
env->ReleaseLongArrayElements(to, tarr, 0);
getStretcher(env, obj)->setKeyFrameMap(m);
}
JNIEXPORT void JNICALL
Java_com_breakfastquay_rubberband_RubberBandStretcher_study(JNIEnv *env, jobject obj, jobjectArray data, jint offset, jint n, jboolean final)
{