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> 48 kUnknown = CS_PIXFMT_UNKNOWN,
49 kMJPEG = CS_PIXFMT_MJPEG,
50 kYUYV = CS_PIXFMT_YUYV,
51 kRGB565 = CS_PIXFMT_RGB565,
53 kGray = CS_PIXFMT_GRAY
61 VideoMode(PixelFormat pixelFormat_,
int width_,
int height_,
int fps_) {
62 pixelFormat = pixelFormat_;
67 explicit operator bool()
const {
return pixelFormat == kUnknown; }
73 kSourceCreated = CS_SOURCE_CREATED,
74 kSourceDestroyed = CS_SOURCE_DESTROYED,
75 kSourceConnected = CS_SOURCE_CONNECTED,
76 kSourceDisconnected = CS_SOURCE_DISCONNECTED,
77 kSourceVideoModesUpdated = CS_SOURCE_VIDEOMODES_UPDATED,
78 kSourceVideoModeChanged = CS_SOURCE_VIDEOMODE_CHANGED,
79 kSourcePropertyCreated = CS_SOURCE_PROPERTY_CREATED,
80 kSourcePropertyValueUpdated = CS_SOURCE_PROPERTY_VALUE_UPDATED,
81 kSourcePropertyChoicesUpdated = CS_SOURCE_PROPERTY_CHOICES_UPDATED,
82 kSinkSourceChanged = CS_SINK_SOURCE_CHANGED,
83 kSinkCreated = CS_SINK_CREATED,
84 kSinkDestroyed = CS_SINK_DESTROYED,
85 kSinkEnabled = CS_SINK_ENABLED,
86 kSinkDisabled = CS_SINK_DISABLED,
87 kNetworkInterfacesChanged = CS_NETWORK_INTERFACES_CHANGED,
88 kTelemetryUpdated = CS_TELEMETRY_UPDATED
92 explicit RawEvent(RawEvent::Kind kind_) : kind{kind_} {}
94 : kind{kind_}, name{name_} {
95 if (kind_ == kSinkCreated || kind_ == kSinkDestroyed ||
96 kind_ == kSinkEnabled || kind_ == kSinkDisabled)
99 sourceHandle = handle_;
102 : kind{kSourceVideoModeChanged},
103 sourceHandle{source_},
107 CS_Property property_, CS_PropertyKind propertyKind_,
int value_,
110 sourceHandle{source_},
112 propertyHandle{property_},
113 propertyKind{propertyKind_},
115 valueStr{valueStr_} {}
120 CS_Source sourceHandle = CS_INVALID_HANDLE;
121 CS_Sink sinkHandle = CS_INVALID_HANDLE;
130 CS_Property propertyHandle;
131 CS_PropertyKind propertyKind;
133 std::string valueStr;
139 CS_PropertyKind GetPropertyKind(CS_Property property, CS_Status* status);
140 std::string GetPropertyName(CS_Property property, CS_Status* status);
144 int GetProperty(CS_Property property, CS_Status* status);
145 void SetProperty(CS_Property property,
int value, CS_Status* status);
146 int GetPropertyMin(CS_Property property, CS_Status* status);
147 int GetPropertyMax(CS_Property property, CS_Status* status);
148 int GetPropertyStep(CS_Property property, CS_Status* status);
149 int GetPropertyDefault(CS_Property property, CS_Status* status);
150 std::string GetStringProperty(CS_Property property, CS_Status* status);
154 void SetStringProperty(CS_Property property,
wpi::StringRef value,
156 std::vector<std::string> GetEnumPropertyChoices(CS_Property property,
162 CS_Source CreateUsbCameraDev(
wpi::StringRef name,
int dev, CS_Status* status);
166 CS_HttpCameraKind kind, CS_Status* status);
168 CS_HttpCameraKind kind, CS_Status* status);
175 CS_SourceKind GetSourceKind(CS_Source source, CS_Status* status);
176 std::string GetSourceName(CS_Source source, CS_Status* status);
179 std::string GetSourceDescription(CS_Source source, CS_Status* status);
183 uint64_t GetSourceLastFrameTime(CS_Source source, CS_Status* status);
184 bool IsSourceConnected(CS_Source source, CS_Status* status);
185 CS_Property GetSourceProperty(CS_Source source,
wpi::StringRef name,
190 VideoMode GetSourceVideoMode(CS_Source source, CS_Status* status);
191 bool SetSourceVideoMode(CS_Source source,
const VideoMode& mode,
193 bool SetSourcePixelFormat(CS_Source source, VideoMode::PixelFormat pixelFormat,
195 bool SetSourceResolution(CS_Source source,
int width,
int height,
197 bool SetSourceFPS(CS_Source source,
int fps, CS_Status* status);
198 std::vector<VideoMode> EnumerateSourceVideoModes(CS_Source source,
203 CS_Source CopySource(CS_Source source, CS_Status* status);
204 void ReleaseSource(CS_Source source, CS_Status* status);
209 void SetCameraBrightness(CS_Source source,
int brightness, CS_Status* status);
210 int GetCameraBrightness(CS_Source source, CS_Status* status);
211 void SetCameraWhiteBalanceAuto(CS_Source source, CS_Status* status);
212 void SetCameraWhiteBalanceHoldCurrent(CS_Source source, CS_Status* status);
213 void SetCameraWhiteBalanceManual(CS_Source source,
int value,
215 void SetCameraExposureAuto(CS_Source source, CS_Status* status);
216 void SetCameraExposureHoldCurrent(CS_Source source, CS_Status* status);
217 void SetCameraExposureManual(CS_Source source,
int value, CS_Status* status);
222 std::string GetUsbCameraPath(CS_Source source, CS_Status* status);
227 CS_HttpCameraKind GetHttpCameraKind(CS_Source source, CS_Status* status);
230 std::vector<std::string> GetHttpCameraUrls(CS_Source source, CS_Status* status);
235 void PutSourceFrame(CS_Source source, cv::Mat& image, CS_Status* status);
236 void NotifySourceError(CS_Source source,
wpi::StringRef msg, CS_Status* status);
237 void SetSourceConnected(CS_Source source,
bool connected, CS_Status* status);
238 void SetSourceDescription(CS_Source source,
wpi::StringRef description,
240 CS_Property CreateSourceProperty(CS_Source source,
wpi::StringRef name,
241 CS_PropertyKind kind,
int minimum,
int maximum,
242 int step,
int defaultValue,
int value,
244 void SetSourceEnumPropertyChoices(CS_Source source, CS_Property property,
252 int port, CS_Status* status);
255 std::function<
void(uint64_t time)> processFrame,
261 CS_SinkKind GetSinkKind(CS_Sink sink, CS_Status* status);
262 std::string GetSinkName(CS_Sink sink, CS_Status* status);
265 std::string GetSinkDescription(CS_Sink sink, CS_Status* status);
268 void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status* status);
269 CS_Property GetSinkSourceProperty(CS_Sink sink,
wpi::StringRef name,
271 CS_Source GetSinkSource(CS_Sink sink, CS_Status* status);
272 CS_Sink CopySink(CS_Sink sink, CS_Status* status);
273 void ReleaseSink(CS_Sink sink, CS_Status* status);
278 std::string GetMjpegServerListenAddress(CS_Sink sink, CS_Status* status);
279 int GetMjpegServerPort(CS_Sink sink, CS_Status* status);
286 uint64_t GrabSinkFrame(CS_Sink sink, cv::Mat& image, CS_Status* status);
287 uint64_t GrabSinkFrameTimeout(CS_Sink sink, cv::Mat& image,
double timeout,
289 std::string GetSinkError(CS_Sink sink, CS_Status* status);
292 void SetSinkEnabled(CS_Sink sink,
bool enabled, CS_Status* status);
297 void SetListenerOnStart(std::function<
void()> onStart);
298 void SetListenerOnExit(std::function<
void()> onExit);
300 CS_Listener AddListener(std::function<
void(
const RawEvent& event)> callback,
301 int eventMask,
bool immediateNotify, CS_Status* status);
303 void RemoveListener(CS_Listener handle, CS_Status* status);
305 bool NotifierDestroyed();
310 void SetTelemetryPeriod(
double seconds);
311 double GetTelemetryElapsedTime();
312 int64_t GetTelemetryValue(CS_Handle handle, CS_TelemetryKind kind,
314 double GetTelemetryAverageValue(CS_Handle handle, CS_TelemetryKind kind,
320 typedef std::function<void(
unsigned int level,
const char* file,
321 unsigned int line,
const char* msg)>
323 void SetLogger(LogFunc func,
unsigned int min_level);
324 void SetDefaultLogger(
unsigned int min_level);
329 std::vector<UsbCameraInfo> EnumerateUsbCameras(CS_Status* status);
336 std::string GetHostname();
338 std::vector<std::string> GetNetworkInterfaces();
344 uint64_t CS_GrabSinkFrameCpp(CS_Sink sink, cv::Mat* image, CS_Status* status);
345 uint64_t CS_GrabSinkFrameTimeoutCpp(CS_Sink sink, cv::Mat* image,
346 double timeout, CS_Status* status);
347 void CS_PutSourceFrameCpp(CS_Source source, cv::Mat* image, CS_Status* status);
350 #endif // CSCORE_CSCORE_CPP_H_ Definition: CvSourceImpl.h:19
std::function< void(unsigned int level, const char *file, unsigned int line, const char *msg)> LogFunc
Log function.
Definition: ntcore_cpp.h:1379
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:71
Definition: cscore_cpp.h:23
void SetLogger(LogFunc func, unsigned int min_level)
Set logger callback function.
Definition: ntcore_cpp.cpp:958
USB camera information.
Definition: cscore_cpp.h:36
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
int dev
Device number (e.g. N in '/dev/videoN' on Linux)
Definition: cscore_cpp.h:38
std::string path
Path to device if available (e.g. '/dev/video0' on Linux)
Definition: cscore_cpp.h:40
std::string name
Vendor/model name of the camera as provided by the USB driver.
Definition: cscore_cpp.h:42
Video mode.
Definition: cscore_cpp.h:46
Definition: cscore_c.h:95