2016-08-26 09:31:42 -07:00
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
/* Copyright (c) FIRST 2016. All Rights Reserved. */
|
|
|
|
|
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
|
|
|
|
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
|
|
|
|
/* the project. */
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
#include "edu_wpi_cameraserver_CameraServerJNI.h"
|
|
|
|
|
|
|
|
|
|
#include "llvm/SmallString.h"
|
2016-08-28 21:20:40 -07:00
|
|
|
#include "support/jni_util.h"
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
#include "cameraserver_cpp.h"
|
|
|
|
|
|
2016-08-28 21:20:40 -07:00
|
|
|
using namespace wpi::java;
|
|
|
|
|
|
2016-08-26 09:31:42 -07:00
|
|
|
//
|
|
|
|
|
// Globals and load/unload
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
// Used for callback.
|
|
|
|
|
static JavaVM *jvm = nullptr;
|
2016-08-26 10:46:10 -07:00
|
|
|
static jclass usbCameraInfoCls = nullptr;
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
|
|
|
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|
|
|
|
jvm = vm;
|
|
|
|
|
|
|
|
|
|
JNIEnv *env;
|
|
|
|
|
if (vm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_6) != JNI_OK)
|
|
|
|
|
return JNI_ERR;
|
|
|
|
|
|
2016-08-26 10:46:10 -07:00
|
|
|
// Cache references to classes
|
|
|
|
|
jclass local;
|
|
|
|
|
|
|
|
|
|
local = env->FindClass("edu/wpi/cameraserver/USBCameraInfo");
|
|
|
|
|
if (!local) return JNI_ERR;
|
|
|
|
|
usbCameraInfoCls = static_cast<jclass>(env->NewGlobalRef(local));
|
|
|
|
|
if (!usbCameraInfoCls) return JNI_ERR;
|
|
|
|
|
env->DeleteLocalRef(local);
|
|
|
|
|
|
2016-08-26 09:31:42 -07:00
|
|
|
return JNI_VERSION_1_6;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) {
|
|
|
|
|
JNIEnv *env;
|
|
|
|
|
if (vm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_6) != JNI_OK)
|
|
|
|
|
return;
|
2016-08-26 10:46:10 -07:00
|
|
|
// Delete global references
|
|
|
|
|
if (usbCameraInfoCls) env->DeleteGlobalRef(usbCameraInfoCls);
|
2016-08-26 09:31:42 -07:00
|
|
|
jvm = nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // extern "C"
|
|
|
|
|
|
2016-08-26 10:46:10 -07:00
|
|
|
static void ReportError(JNIEnv *env, CS_Status status, bool do_throw = true) {
|
|
|
|
|
// TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline bool CheckStatus(JNIEnv *env, CS_Status status,
|
|
|
|
|
bool do_throw = true) {
|
|
|
|
|
if (status != 0) ReportError(env, status, do_throw);
|
|
|
|
|
return status == 0;
|
|
|
|
|
}
|
|
|
|
|
|
2016-08-28 21:20:40 -07:00
|
|
|
static jobject MakeJObject(JNIEnv *env, const cs::USBCameraInfo &info) {
|
2016-08-26 10:46:10 -07:00
|
|
|
static jmethodID constructor = env->GetMethodID(
|
|
|
|
|
usbCameraInfoCls, "<init>", "(ILjava/lang/String;Ljava/lang/String;I)V");
|
2016-08-28 21:20:40 -07:00
|
|
|
JLocal<jstring> path(env, MakeJString(env, info.path));
|
|
|
|
|
JLocal<jstring> name(env, MakeJString(env, info.name));
|
2016-08-26 10:46:10 -07:00
|
|
|
return env->NewObject(usbCameraInfoCls, constructor,
|
|
|
|
|
static_cast<jint>(info.dev), path.obj(), name.obj(),
|
|
|
|
|
static_cast<jint>(info.channels));
|
|
|
|
|
}
|
|
|
|
|
|
2016-08-26 09:31:42 -07:00
|
|
|
extern "C" {
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getPropertyType
|
|
|
|
|
* Signature: (I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getPropertyType
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetPropertyType(property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getPropertyName
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getPropertyName
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetPropertyName(property, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getBooleanProperty
|
|
|
|
|
* Signature: (I)Z
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jboolean JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getBooleanProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetBooleanProperty(property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setBooleanProperty
|
|
|
|
|
* Signature: (IZ)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setBooleanProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property, jboolean value)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetBooleanProperty(property, value, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getDoubleProperty
|
|
|
|
|
* Signature: (I)D
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jdouble JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getDoubleProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetDoubleProperty(property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setDoubleProperty
|
|
|
|
|
* Signature: (ID)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setDoubleProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property, jdouble value)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetDoubleProperty(property, value, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getDoublePropertyMin
|
|
|
|
|
* Signature: (I)D
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jdouble JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getDoublePropertyMin
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetDoublePropertyMin(property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getDoublePropertyMax
|
|
|
|
|
* Signature: (I)D
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jdouble JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getDoublePropertyMax
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetDoublePropertyMax(property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getStringProperty
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getStringProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetStringProperty(property, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setStringProperty
|
|
|
|
|
* Signature: (ILjava/lang/String;)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setStringProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property, jstring value)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
cs::SetStringProperty(property, JStringRef{env, value}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getEnumProperty
|
|
|
|
|
* Signature: (I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getEnumProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetEnumProperty(property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setEnumProperty
|
|
|
|
|
* Signature: (II)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setEnumProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property, jint value)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetEnumProperty(property, value, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getEnumPropertyChoices
|
|
|
|
|
* Signature: (I)[Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jobjectArray JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getEnumPropertyChoices
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto arr = cs::GetEnumPropertyChoices(property, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJStringArray(env, arr);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createUSBSourceDev
|
|
|
|
|
* Signature: (Ljava/lang/String;I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createUSBSourceDev
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jstring name, jint dev)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::CreateUSBSourceDev(JStringRef{env, name}, dev, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createUSBSourcePath
|
|
|
|
|
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createUSBSourcePath
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jstring name, jstring path)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::CreateUSBSourcePath(JStringRef{env, name},
|
|
|
|
|
JStringRef{env, path}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createHTTPSource
|
|
|
|
|
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createHTTPSource
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jstring name, jstring url)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::CreateHTTPSource(JStringRef{env, name},
|
|
|
|
|
JStringRef{env, url}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createCvSource
|
|
|
|
|
* Signature: (Ljava/lang/String;I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createCvSource
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jstring name, jint numChannels)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::CreateCvSource(JStringRef{env, name}, numChannels, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSourceName
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSourceName
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetSourceName(source, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSourceDescription
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSourceDescription
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetSourceDescription(source, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSourceLastFrameTime
|
|
|
|
|
* Signature: (I)J
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jlong JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSourceLastFrameTime
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetSourceLastFrameTime(source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSourceNumChannels
|
|
|
|
|
* Signature: (I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSourceNumChannels
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetSourceNumChannels(source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: isSourceConnected
|
|
|
|
|
* Signature: (I)Z
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jboolean JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_isSourceConnected
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::IsSourceConnected(source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSourceProperty
|
|
|
|
|
* Signature: (ILjava/lang/String;)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSourceProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source, jstring name)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::GetSourceProperty(source, JStringRef{env, name}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: enumerateSourceProperties
|
|
|
|
|
* Signature: (I)[I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jintArray JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_enumerateSourceProperties
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallVector<CS_Property, 32> arr;
|
|
|
|
|
cs::EnumerateSourceProperties(source, arr, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJIntArray(env, arr);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: copySource
|
|
|
|
|
* Signature: (I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_copySource
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::CopySource(source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: releaseSource
|
|
|
|
|
* Signature: (I)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_releaseSource
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::ReleaseSource(source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: notifySourceFrame
|
|
|
|
|
* Signature: (I)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_notifySourceFrame
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::NotifySourceFrame(source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: notifySourceError
|
|
|
|
|
* Signature: (ILjava/lang/String;)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_notifySourceError
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source, jstring msg)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
cs::NotifySourceError(source, JStringRef{env, msg}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setSourceConnected
|
|
|
|
|
* Signature: (IZ)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setSourceConnected
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source, jboolean connected)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetSourceConnected(source, connected, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createSourceProperty
|
|
|
|
|
* Signature: (ILjava/lang/String;I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createSourceProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source, jstring name, jint type)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val =
|
2016-08-28 21:20:40 -07:00
|
|
|
cs::CreateSourceProperty(source, JStringRef{env, name},
|
2016-08-26 10:46:10 -07:00
|
|
|
static_cast<CS_PropertyType>(type), &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: removeSourceProperty
|
|
|
|
|
* Signature: (II)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_removeSourceProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source, jint property)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::RemoveSourceProperty(source, property, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: removeSourcePropertyByName
|
|
|
|
|
* Signature: (ILjava/lang/String;)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_removeSourcePropertyByName
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint source, jstring name)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
cs::RemoveSourceProperty(source, JStringRef{env, name}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createHTTPSink
|
|
|
|
|
* Signature: (Ljava/lang/String;Ljava/lang/String;I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createHTTPSink
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jstring name, jstring listenAddress, jint port)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val =
|
2016-08-28 21:20:40 -07:00
|
|
|
cs::CreateHTTPSink(JStringRef{env, name},
|
|
|
|
|
JStringRef{env, listenAddress}, port, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: createCvSink
|
|
|
|
|
* Signature: (Ljava/lang/String;)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_createCvSink
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jstring name)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::CreateCvSink(JStringRef{env, name}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSinkName
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSinkName
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetSinkName(sink, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSinkDescription
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSinkDescription
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetSinkDescription(sink, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setSinkSource
|
|
|
|
|
* Signature: (II)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setSinkSource
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink, jint source)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetSinkSource(sink, source, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSinkSourceProperty
|
|
|
|
|
* Signature: (ILjava/lang/String;)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSinkSourceProperty
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink, jstring name)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
2016-08-28 21:20:40 -07:00
|
|
|
auto val = cs::GetSinkSourceProperty(sink, JStringRef{env, name}, &status);
|
2016-08-26 10:46:10 -07:00
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSinkSource
|
|
|
|
|
* Signature: (I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSinkSource
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::GetSinkSource(sink, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: copySink
|
|
|
|
|
* Signature: (I)I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jint JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_copySink
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::CopySink(sink, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: releaseSink
|
|
|
|
|
* Signature: (I)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_releaseSink
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::ReleaseSink(sink, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setSinkSourceChannel
|
|
|
|
|
* Signature: (II)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setSinkSourceChannel
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink, jint channel)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetSinkSourceChannel(sink, channel, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: sinkWaitForFrame
|
|
|
|
|
* Signature: (I)J
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jlong JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_sinkWaitForFrame
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto val = cs::SinkWaitForFrame(sink, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: getSinkError
|
|
|
|
|
* Signature: (I)Ljava/lang/String;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jstring JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_getSinkError
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallString<128> str;
|
|
|
|
|
cs::GetSinkError(sink, str, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJString(env, str);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: setSinkEnabled
|
|
|
|
|
* Signature: (IZ)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_setSinkEnabled
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint sink, jboolean enabled)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::SetSinkEnabled(sink, enabled, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: removeSourceListener
|
|
|
|
|
* Signature: (I)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_removeSourceListener
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint handle)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::RemoveSourceListener(handle, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: removeSinkListener
|
|
|
|
|
* Signature: (I)V
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT void JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_removeSinkListener
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass, jint handle)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
cs::RemoveSinkListener(handle, &status);
|
|
|
|
|
CheckStatus(env, status);
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: enumerateUSBCameras
|
|
|
|
|
* Signature: ()[Ledu/wpi/cameraserver/USBCameraInfo;
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jobjectArray JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_enumerateUSBCameras
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
auto arr = cs::EnumerateUSBCameras(&status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
|
|
|
|
jobjectArray jarr =
|
|
|
|
|
env->NewObjectArray(arr.size(), usbCameraInfoCls, nullptr);
|
|
|
|
|
if (!jarr) return nullptr;
|
|
|
|
|
for (size_t i = 0; i < arr.size(); ++i) {
|
2016-08-28 21:20:40 -07:00
|
|
|
JLocal<jobject> jelem{env, MakeJObject(env, arr[i])};
|
2016-08-26 10:46:10 -07:00
|
|
|
env->SetObjectArrayElement(jarr, i, jelem);
|
|
|
|
|
}
|
|
|
|
|
return jarr;
|
|
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: enumerateSources
|
|
|
|
|
* Signature: ()[I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jintArray JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_enumerateSources
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallVector<CS_Source, 16> arr;
|
|
|
|
|
cs::EnumerateSources(arr, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJIntArray(env, arr);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Class: edu_wpi_cameraserver_CameraServerJNI
|
|
|
|
|
* Method: enumerateSinks
|
|
|
|
|
* Signature: ()[I
|
|
|
|
|
*/
|
|
|
|
|
JNIEXPORT jintArray JNICALL Java_edu_wpi_cameraserver_CameraServerJNI_enumerateSinks
|
2016-08-26 10:46:10 -07:00
|
|
|
(JNIEnv *env, jclass)
|
|
|
|
|
{
|
|
|
|
|
CS_Status status;
|
|
|
|
|
llvm::SmallVector<CS_Sink, 16> arr;
|
|
|
|
|
cs::EnumerateSinks(arr, &status);
|
|
|
|
|
if (!CheckStatus(env, status)) return nullptr;
|
2016-08-28 21:20:40 -07:00
|
|
|
return MakeJIntArray(env, arr);
|
2016-08-26 10:46:10 -07:00
|
|
|
}
|
2016-08-26 09:31:42 -07:00
|
|
|
|
|
|
|
|
} // extern "C"
|