Add method to get source/sink type.

Also provide convenience method to enumerate all sinks connected to a source.
This commit is contained in:
Peter Johnson
2016-11-15 22:18:32 -08:00
parent 6446b9ef10
commit 3381340eb5
17 changed files with 253 additions and 34 deletions

View File

@@ -110,6 +110,7 @@ public class CameraServerJNI {
//
// Source Functions
//
public static native int getSourceType(int source);
public static native String getSourceName(int source);
public static native String getSourceDescription(int source);
public static native long getSourceLastFrameTime(int source);
@@ -122,6 +123,7 @@ public class CameraServerJNI {
public static native boolean setSourceResolution(int source, int width, int height);
public static native boolean setSourceFPS(int source, int fps);
public static native VideoMode[] enumerateSourceVideoModes(int source);
public static native int[] enumerateSourceSinks(int source);
public static native int copySource(int source);
public static native void releaseSource(int source);
@@ -146,6 +148,7 @@ public class CameraServerJNI {
//
// Sink Functions
//
public static native int getSinkType(int sink);
public static native String getSinkName(int sink);
public static native String getSinkDescription(int sink);
public static native void setSinkSource(int sink, int source);

View File

@@ -11,6 +11,20 @@ package edu.wpi.cscore;
/// consist of multiple images (e.g. from a stereo or depth camera); these
/// are called channels.
public class VideoSink {
public enum Type {
kUnknown(0), kMJPEG(2), kCv(4);
private int value;
private Type(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
static final Type[] m_typeValues = Type.values();
protected VideoSink(int handle) {
m_handle = handle;
}
@@ -42,6 +56,11 @@ public class VideoSink {
return m_handle;
}
/// Get the type of the sink.
public Type getType() {
return m_typeValues[CameraServerJNI.getSinkType(m_handle)];
}
/// Get the name of the sink. The name is an arbitrary identifier
/// provided when the sink is created, and should be unique.
public String getName() {

View File

@@ -11,6 +11,20 @@ package edu.wpi.cscore;
/// consist of multiple images (e.g. from a stereo or depth camera); these
/// are called channels.
public class VideoSource {
public enum Type {
kUnknown(0), kUSB(1), kHTTP(2), kCv(4);
private int value;
private Type(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
static final Type[] m_typeValues = Type.values();
protected VideoSource(int handle) {
m_handle = handle;
}
@@ -42,6 +56,11 @@ public class VideoSource {
return m_handle;
}
/// Get the type of the source.
public Type getType() {
return m_typeValues[CameraServerJNI.getSourceType(m_handle)];
}
/// Get the name of the source. The name is an arbitrary identifier
/// provided when the source is created, and should be unique.
public String getName() {
@@ -129,6 +148,17 @@ public class VideoSource {
return CameraServerJNI.enumerateSourceVideoModes(m_handle);
}
/// Enumerate all sinks connected to this source.
/// @return Vector of sinks.
public VideoSink[] enumerateSinks() {
int[] handles = CameraServerJNI.enumerateSourceSinks(m_handle);
VideoSink[] rv = new VideoSink[handles.length];
for (int i=0; i<handles.length; i++) {
rv[i] = new VideoSink(handles[i]);
}
return rv;
}
/// Enumerate all existing sources.
/// @return Vector of sources.
public static VideoSource[] enumerateSources() {