8 #ifndef CSCORE_CSCORE_CPP_H_
9 #define CSCORE_CSCORE_CPP_H_
17 #include <wpi/ArrayRef.h>
18 #include <wpi/SmallVector.h>
19 #include <wpi/StringRef.h>
56 kUnknown = CS_PIXFMT_UNKNOWN,
57 kMJPEG = CS_PIXFMT_MJPEG,
58 kYUYV = CS_PIXFMT_YUYV,
59 kRGB565 = CS_PIXFMT_RGB565,
61 kGray = CS_PIXFMT_GRAY
69 VideoMode(PixelFormat pixelFormat_,
int width_,
int height_,
int fps_) {
70 pixelFormat = pixelFormat_;
75 explicit operator bool()
const {
return pixelFormat == kUnknown; }
83 kSourceCreated = CS_SOURCE_CREATED,
84 kSourceDestroyed = CS_SOURCE_DESTROYED,
85 kSourceConnected = CS_SOURCE_CONNECTED,
86 kSourceDisconnected = CS_SOURCE_DISCONNECTED,
87 kSourceVideoModesUpdated = CS_SOURCE_VIDEOMODES_UPDATED,
88 kSourceVideoModeChanged = CS_SOURCE_VIDEOMODE_CHANGED,
89 kSourcePropertyCreated = CS_SOURCE_PROPERTY_CREATED,
90 kSourcePropertyValueUpdated = CS_SOURCE_PROPERTY_VALUE_UPDATED,
91 kSourcePropertyChoicesUpdated = CS_SOURCE_PROPERTY_CHOICES_UPDATED,
92 kSinkSourceChanged = CS_SINK_SOURCE_CHANGED,
93 kSinkCreated = CS_SINK_CREATED,
94 kSinkDestroyed = CS_SINK_DESTROYED,
95 kSinkEnabled = CS_SINK_ENABLED,
96 kSinkDisabled = CS_SINK_DISABLED,
97 kNetworkInterfacesChanged = CS_NETWORK_INTERFACES_CHANGED,
98 kTelemetryUpdated = CS_TELEMETRY_UPDATED,
99 kSinkPropertyCreated = CS_SINK_PROPERTY_CREATED,
100 kSinkPropertyValueUpdated = CS_SINK_PROPERTY_VALUE_UPDATED,
101 kSinkPropertyChoicesUpdated = CS_SINK_PROPERTY_CHOICES_UPDATED
105 explicit RawEvent(RawEvent::Kind kind_) : kind{kind_} {}
107 : kind{kind_}, name{name_} {
108 if (kind_ == kSinkCreated || kind_ == kSinkDestroyed ||
109 kind_ == kSinkEnabled || kind_ == kSinkDisabled)
110 sinkHandle = handle_;
112 sourceHandle = handle_;
115 : kind{kSourceVideoModeChanged},
116 sourceHandle{source_},
123 sourceHandle{source_},
125 propertyHandle{property_},
126 propertyKind{propertyKind_},
128 valueStr{valueStr_} {}
133 CS_Source sourceHandle = CS_INVALID_HANDLE;
134 CS_Sink sinkHandle = CS_INVALID_HANDLE;
143 CS_Property propertyHandle;
146 std::string valueStr;
153 CS_PropertyKind GetPropertyKind(CS_Property property, CS_Status* status);
154 std::string GetPropertyName(CS_Property property, CS_Status* status);
158 int GetProperty(CS_Property property, CS_Status* status);
159 void SetProperty(CS_Property property,
int value, CS_Status* status);
160 int GetPropertyMin(CS_Property property, CS_Status* status);
161 int GetPropertyMax(CS_Property property, CS_Status* status);
162 int GetPropertyStep(CS_Property property, CS_Status* status);
163 int GetPropertyDefault(CS_Property property, CS_Status* status);
164 std::string GetStringProperty(CS_Property property, CS_Status* status);
168 void SetStringProperty(CS_Property property,
wpi::StringRef value,
170 std::vector<std::string> GetEnumPropertyChoices(CS_Property property,
178 CS_Source CreateUsbCameraDev(
wpi::StringRef name,
int dev, CS_Status* status);
193 CS_SourceKind GetSourceKind(CS_Source source, CS_Status* status);
194 std::string GetSourceName(CS_Source source, CS_Status* status);
197 std::string GetSourceDescription(CS_Source source, CS_Status* status);
201 uint64_t GetSourceLastFrameTime(CS_Source source, CS_Status* status);
202 bool IsSourceConnected(CS_Source source, CS_Status* status);
203 CS_Property GetSourceProperty(CS_Source source,
wpi::StringRef name,
208 VideoMode GetSourceVideoMode(CS_Source source, CS_Status* status);
209 bool SetSourceVideoMode(CS_Source source,
const VideoMode& mode,
211 bool SetSourcePixelFormat(CS_Source source, VideoMode::PixelFormat pixelFormat,
213 bool SetSourceResolution(CS_Source source,
int width,
int height,
215 bool SetSourceFPS(CS_Source source,
int fps, CS_Status* status);
216 std::vector<VideoMode> EnumerateSourceVideoModes(CS_Source source,
221 CS_Source CopySource(CS_Source source, CS_Status* status);
222 void ReleaseSource(CS_Source source, CS_Status* status);
229 void SetCameraBrightness(CS_Source source,
int brightness, CS_Status* status);
230 int GetCameraBrightness(CS_Source source, CS_Status* status);
231 void SetCameraWhiteBalanceAuto(CS_Source source, CS_Status* status);
232 void SetCameraWhiteBalanceHoldCurrent(CS_Source source, CS_Status* status);
233 void SetCameraWhiteBalanceManual(CS_Source source,
int value,
235 void SetCameraExposureAuto(CS_Source source, CS_Status* status);
236 void SetCameraExposureHoldCurrent(CS_Source source, CS_Status* status);
237 void SetCameraExposureManual(CS_Source source,
int value, CS_Status* status);
244 std::string GetUsbCameraPath(CS_Source source, CS_Status* status);
254 std::vector<std::string> GetHttpCameraUrls(CS_Source source, CS_Status* status);
261 void PutSourceFrame(CS_Source source, cv::Mat& image, CS_Status* status);
262 void NotifySourceError(CS_Source source,
wpi::StringRef msg, CS_Status* status);
263 void SetSourceConnected(CS_Source source,
bool connected, CS_Status* status);
264 void SetSourceDescription(CS_Source source,
wpi::StringRef description,
266 CS_Property CreateSourceProperty(CS_Source source,
wpi::StringRef name,
268 int step,
int defaultValue,
int value,
270 void SetSourceEnumPropertyChoices(CS_Source source, CS_Property property,
280 int port, CS_Status* status);
283 std::function<
void(uint64_t time)> processFrame,
291 CS_SinkKind GetSinkKind(CS_Sink sink, CS_Status* status);
292 std::string GetSinkName(CS_Sink sink, CS_Status* status);
295 std::string GetSinkDescription(CS_Sink sink, CS_Status* status);
302 void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status* status);
303 CS_Property GetSinkSourceProperty(CS_Sink sink,
wpi::StringRef name,
305 CS_Source GetSinkSource(CS_Sink sink, CS_Status* status);
306 CS_Sink CopySink(CS_Sink sink, CS_Status* status);
307 void ReleaseSink(CS_Sink sink, CS_Status* status);
314 std::string GetMjpegServerListenAddress(CS_Sink sink, CS_Status* status);
315 int GetMjpegServerPort(CS_Sink sink, CS_Status* status);
324 uint64_t GrabSinkFrame(CS_Sink sink, cv::Mat& image, CS_Status* status);
325 uint64_t GrabSinkFrameTimeout(CS_Sink sink, cv::Mat& image,
double timeout,
327 std::string GetSinkError(CS_Sink sink, CS_Status* status);
330 void SetSinkEnabled(CS_Sink sink,
bool enabled, CS_Status* status);
337 void SetListenerOnStart(std::function<
void()> onStart);
338 void SetListenerOnExit(std::function<
void()> onExit);
340 CS_Listener AddListener(std::function<
void(
const RawEvent& event)> callback,
341 int eventMask,
bool immediateNotify, CS_Status* status);
343 void RemoveListener(CS_Listener handle, CS_Status* status);
346 bool NotifierDestroyed();
352 void SetTelemetryPeriod(
double seconds);
353 double GetTelemetryElapsedTime();
364 typedef std::function<void(
unsigned int level,
const char* file,
365 unsigned int line,
const char* msg)>
367 void SetLogger(LogFunc func,
unsigned int min_level);
368 void SetDefaultLogger(
unsigned int min_level);
375 std::vector<UsbCameraInfo> EnumerateUsbCameras(CS_Status* status);
382 std::string GetHostname();
384 std::vector<std::string> GetNetworkInterfaces();
398 uint64_t CS_GrabSinkFrameCpp(CS_Sink sink, cv::Mat* image, CS_Status* status);
399 uint64_t CS_GrabSinkFrameTimeoutCpp(CS_Sink sink, cv::Mat* image,
400 double timeout, CS_Status* status);
401 void CS_PutSourceFrameCpp(CS_Source source, cv::Mat* image, CS_Status* status);
405 #endif // CSCORE_CSCORE_CPP_H_
CS_TelemetryKind
Telemetry kinds.
Definition: cscore_c.h:176
Definition: cscore_oo.inl:11
CS_HttpCameraKind
HTTP Camera kinds.
Definition: cscore_c.h:136
CS_SinkKind
Sink kinds.
Definition: cscore_c.h:146
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:41
Listener event.
Definition: cscore_cpp.h:81
Definition: cscore_cpp.h:23
CS_SourceKind
Source kinds.
Definition: cscore_c.h:126
USB camera information.
Definition: cscore_cpp.h:42
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
int dev
Device number (e.g.
Definition: cscore_cpp.h:44
CS_PropertyKind
Property kinds.
Definition: cscore_c.h:115
std::string path
Path to device if available (e.g.
Definition: cscore_cpp.h:46
std::string name
Vendor/model name of the camera as provided by the USB driver.
Definition: cscore_cpp.h:48
Video mode.
Definition: cscore_cpp.h:54
Video mode.
Definition: cscore_c.h:105