diff --git a/include/cameraserver_c.h b/include/cameraserver_c.h index 18ef78e34d..0d51f36312 100644 --- a/include/cameraserver_c.h +++ b/include/cameraserver_c.h @@ -69,12 +69,6 @@ void CS_SetEnumProperty(CS_Property property, int value, CS_Status* status); char** CS_GetEnumPropertyChoices(CS_Property property, int* count, CS_Status* status); -// -// Source/Sink Functions -// -CS_Property CS_GetSourceProperty(CS_Source handle, const char* name, - CS_Status* status); - // // Source Creation Functions // @@ -94,6 +88,8 @@ char* CS_GetSourceDescription(CS_Source source, CS_Status* status); uint64_t CS_GetSourceLastFrameTime(CS_Source source, CS_Status* status); int CS_GetSourceNumChannels(CS_Source source, CS_Status* status); CS_Bool CS_IsSourceConnected(CS_Source source, CS_Status* status); +CS_Property CS_GetSourceProperty(CS_Source source, const char* name, + CS_Status* status); CS_Property* CS_EnumerateSourceProperties(CS_Source source, int* count, CS_Status* status); CS_Source CS_CopySource(CS_Source source, CS_Status* status); @@ -137,6 +133,8 @@ CS_Sink CS_CreateCvSinkCallback(const char* name, void* data, char* CS_GetSinkName(CS_Sink sink, CS_Status* status); char* CS_GetSinkDescription(CS_Sink sink, CS_Status* status); void CS_SetSinkSource(CS_Sink sink, CS_Source source, CS_Status* status); +CS_Property CS_GetSinkSourceProperty(CS_Sink sink, const char* name, + CS_Status* status); CS_Source CS_GetSinkSource(CS_Sink sink, CS_Status* status); CS_Sink CS_CopySink(CS_Sink sink, CS_Status* status); void CS_ReleaseSink(CS_Sink sink, CS_Status* status); diff --git a/include/cameraserver_cpp.h b/include/cameraserver_cpp.h index 0a20eff418..7f077dd532 100644 --- a/include/cameraserver_cpp.h +++ b/include/cameraserver_cpp.h @@ -68,12 +68,6 @@ void SetEnumProperty(CS_Property property, int value, CS_Status* status); std::vector GetEnumPropertyChoices(CS_Property property, CS_Status* status); -// -// Source/Sink Functions -// -CS_Property GetSourceProperty(CS_Source handle, llvm::StringRef name, - CS_Status* status); - // // Source Creation Functions // @@ -97,6 +91,8 @@ void GetSourceDescription(CS_Source source, llvm::SmallVectorImpl& desc, uint64_t GetSourceLastFrameTime(CS_Source source, CS_Status* status); int GetSourceNumChannels(CS_Source source, CS_Status* status); bool IsSourceConnected(CS_Source source, CS_Status* status); +CS_Property GetSourceProperty(CS_Source source, llvm::StringRef name, + CS_Status* status); void EnumerateSourceProperties(CS_Source source, llvm::SmallVectorImpl& properties, CS_Status* status); @@ -143,6 +139,8 @@ std::string GetSinkDescription(CS_Sink sink, CS_Status* status); void GetSinkDescription(CS_Sink sink, llvm::SmallVectorImpl& desc, CS_Status* status); void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status* status); +CS_Property GetSinkSourceProperty(CS_Sink sink, llvm::StringRef name, + CS_Status* status); CS_Source GetSinkSource(CS_Sink sink, CS_Status* status); CS_Sink CopySink(CS_Sink sink, CS_Status* status); void ReleaseSink(CS_Sink sink, CS_Status* status); diff --git a/include/cameraserver_oo.inl b/include/cameraserver_oo.inl index 6cba9feec0..55a6c7fee2 100644 --- a/include/cameraserver_oo.inl +++ b/include/cameraserver_oo.inl @@ -256,7 +256,7 @@ inline VideoSource VideoSink::GetSource() const { inline VideoProperty VideoSink::GetSourceProperty(llvm::StringRef name) { m_status = 0; - return VideoProperty{::cs::GetSourceProperty(m_handle, name, &m_status)}; + return VideoProperty{GetSinkSourceProperty(m_handle, name, &m_status)}; } inline HTTPSink::HTTPSink(llvm::StringRef name, llvm::StringRef listenAddress, diff --git a/java/src/edu/wpi/cameraserver/CameraServerJNI.java b/java/src/edu/wpi/cameraserver/CameraServerJNI.java index 203c9763e4..87a6709c33 100644 --- a/java/src/edu/wpi/cameraserver/CameraServerJNI.java +++ b/java/src/edu/wpi/cameraserver/CameraServerJNI.java @@ -89,11 +89,6 @@ public class CameraServerJNI { public static native void setEnumProperty(int property, int value); public static native String[] getEnumPropertyChoices(int property); - // - // Source/Sink Functions - // - public static native int getSourceProperty(int handle, String name); - // // Source Creation Functions // @@ -110,6 +105,7 @@ public class CameraServerJNI { public static native long getSourceLastFrameTime(int source); public static native int getSourceNumChannels(int source); public static native boolean isSourceConnected(int source); + public static native int getSourceProperty(int source, String name); public static native int[] enumerateSourceProperties(int source); public static native int copySource(int source); public static native void releaseSource(int source); @@ -144,6 +140,7 @@ public class CameraServerJNI { public static native String getSinkName(int sink); public static native String getSinkDescription(int sink); public static native void setSinkSource(int sink, int source); + public static native int getSinkSourceProperty(int sink, String name); public static native int getSinkSource(int sink); public static native int copySink(int sink); public static native void releaseSink(int sink); diff --git a/java/src/edu/wpi/cameraserver/VideoSink.java b/java/src/edu/wpi/cameraserver/VideoSink.java index 0762a5599e..15618df1b6 100644 --- a/java/src/edu/wpi/cameraserver/VideoSink.java +++ b/java/src/edu/wpi/cameraserver/VideoSink.java @@ -58,7 +58,9 @@ public class VideoSink { /// @return Property (type Property::kNone if no property with /// the given name exists or no source connected) public VideoProperty getSourceProperty(String name) { - return new VideoProperty(CameraServerJNI.getSourceProperty(m_handle, name)); } + return new VideoProperty( + CameraServerJNI.getSinkSourceProperty(m_handle, name)); + } /// Enumerate all existing sinks. /// @return Vector of sinks. diff --git a/src/cameraserver_c.cpp b/src/cameraserver_c.cpp index ef472615b9..96093d3bbf 100644 --- a/src/cameraserver_c.cpp +++ b/src/cameraserver_c.cpp @@ -94,11 +94,6 @@ char** CS_GetEnumPropertyChoices(CS_Property property, int* count, return out; } -CS_Property CS_GetSourceProperty(CS_Source handle, const char* name, - CS_Status* status) { - return cs::GetSourceProperty(handle, name, status); -} - CS_Source CS_CreateUSBSourceDev(const char* name, int dev, CS_Status* status) { return cs::CreateUSBSourceDev(name, dev, status); } @@ -144,6 +139,11 @@ CS_Bool CS_IsSourceConnected(CS_Source source, CS_Status* status) { return cs::IsSourceConnected(source, status); } +CS_Property CS_GetSourceProperty(CS_Source source, const char* name, + CS_Status* status) { + return cs::GetSourceProperty(source, name, status); +} + CS_Property* CS_EnumerateSourceProperties(CS_Source source, int* count, CS_Status* status) { llvm::SmallVector vec; @@ -250,6 +250,11 @@ CS_Source CS_GetSinkSource(CS_Sink sink, CS_Status* status) { return cs::GetSinkSource(sink, status); } +CS_Property CS_GetSinkSourceProperty(CS_Sink sink, const char* name, + CS_Status* status) { + return cs::GetSinkSourceProperty(sink, name, status); +} + CS_Sink CS_CopySink(CS_Sink sink, CS_Status* status) { return cs::CopySink(sink, status); } diff --git a/src/cameraserver_cpp.cpp b/src/cameraserver_cpp.cpp index 6caf272c70..573e23c635 100644 --- a/src/cameraserver_cpp.cpp +++ b/src/cameraserver_cpp.cpp @@ -81,15 +81,6 @@ std::vector GetEnumPropertyChoices(CS_Property property, return std::vector{}; // TODO } -// -// Source/Sink Functions -// - -CS_Property GetSourceProperty(CS_Source handle, llvm::StringRef name, - CS_Status* status) { - return 0; // TODO -} - // // Source Creation Functions // @@ -147,6 +138,11 @@ bool IsSourceConnected(CS_Source source, CS_Status* status) { return false; // TODO } +CS_Property GetSourceProperty(CS_Source source, llvm::StringRef name, + CS_Status* status) { + return 0; // TODO +} + void EnumerateSourceProperties(CS_Source source, llvm::SmallVectorImpl& properties, CS_Status* status) { @@ -256,6 +252,11 @@ CS_Source GetSinkSource(CS_Sink sink, CS_Status* status) { return 0; // TODO } +CS_Property GetSinkSourceProperty(CS_Sink sink, llvm::StringRef name, + CS_Status* status) { + return 0; // TODO +} + CS_Sink CopySink(CS_Sink sink, CS_Status* status) { return sink; // TODO }