WPILibC++ 2027.0.0-alpha-5
Loading...
Searching...
No Matches
cscore_cpp.hpp
Go to the documentation of this file.
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5#pragma once
6
7#include <stdint.h>
8
9#include <functional>
10#include <span>
11#include <string>
12#include <string_view>
13#include <vector>
14
15#include "wpi/cs/RawEvent.hpp"
17#include "wpi/cs/VideoMode.hpp"
18#include "wpi/cs/cscore_c.h"
20#include "wpi/util/SmallVector.hpp"
21
22#ifdef _WIN32
23// Disable uninitialized variable warnings
24#pragma warning(push)
25#pragma warning(disable : 26495)
26#endif
27
28namespace wpi::util {
29class json;
30} // namespace wpi::util
31
32/** CameraServer (cscore) namespace */
33namespace wpi::cs {
34
35/**
36 * @defgroup cscore_cpp_api cscore C++ function API
37 *
38 * Handle-based interface for C++. Users are encouraged to use the
39 * object oriented interface instead; this interface is intended for use
40 * in applications such as JNI which require handle-based access.
41 *
42 * @{
43 */
44
45/**
46 * @defgroup cscore_property_func Property Functions
47 * @{
48 */
50std::string GetPropertyName(CS_Property property, CS_Status* status);
51std::string_view GetPropertyName(CS_Property property,
53 CS_Status* status);
54int GetProperty(CS_Property property, CS_Status* status);
55void SetProperty(CS_Property property, int value, CS_Status* status);
56int GetPropertyMin(CS_Property property, CS_Status* status);
57int GetPropertyMax(CS_Property property, CS_Status* status);
58int GetPropertyStep(CS_Property property, CS_Status* status);
60std::string GetStringProperty(CS_Property property, CS_Status* status);
61std::string_view GetStringProperty(CS_Property property,
63 CS_Status* status);
64void SetStringProperty(CS_Property property, std::string_view value,
65 CS_Status* status);
66std::vector<std::string> GetEnumPropertyChoices(CS_Property property,
67 CS_Status* status);
68/** @} */
69
70/**
71 * @defgroup cscore_source_create_func Source Creation Functions
72 * @{
73 */
74CS_Source CreateUsbCameraDev(std::string_view name, int dev, CS_Status* status);
75CS_Source CreateUsbCameraPath(std::string_view name, std::string_view path,
76 CS_Status* status);
77CS_Source CreateHttpCamera(std::string_view name, std::string_view url,
78 CS_HttpCameraKind kind, CS_Status* status);
80 std::span<const std::string> urls,
81 CS_HttpCameraKind kind, CS_Status* status);
82CS_Source CreateCvSource(std::string_view name, const VideoMode& mode,
83 CS_Status* status);
84/** @} */
85
86/**
87 * @defgroup cscore_source_func Source Functions
88 * @{
89 */
94 CS_Status* status);
98 CS_Status* status);
101 CS_ConnectionStrategy strategy,
102 CS_Status* status);
106 CS_Status* status);
107std::span<CS_Property> EnumerateSourceProperties(
109 CS_Status* status);
112 CS_Status* status);
114 CS_Status* status);
115bool SetSourceResolution(CS_Source source, int width, int height,
116 CS_Status* status);
117bool SetSourceFPS(CS_Source source, int fps, CS_Status* status);
118bool SetSourceConfigJson(CS_Source source, std::string_view config,
119 CS_Status* status);
121 CS_Status* status);
125 CS_Status* status);
126std::span<CS_Sink> EnumerateSourceSinks(
128 CS_Status* status);
131/** @} */
132
133/**
134 * @defgroup cscore_camera_property_func Camera Source Common Property Functions
135 * @{
136 */
137void SetCameraBrightness(CS_Source source, int brightness, CS_Status* status);
142 CS_Status* status);
146/** @} */
147
148/**
149 * @defgroup cscore_usbcamera_func UsbCamera Source Functions
150 * @{
151 */
152void SetUsbCameraPath(CS_Source, std::string_view path, CS_Status* status);
155/** @} */
156
157/**
158 * @defgroup cscore_httpcamera_func HttpCamera Source Functions
159 * @{
160 */
162void SetHttpCameraUrls(CS_Source source, std::span<const std::string> urls,
163 CS_Status* status);
164std::vector<std::string> GetHttpCameraUrls(CS_Source source, CS_Status* status);
165/** @} */
166
167/**
168 * @defgroup cscore_frame_source_func Frame Source Functions
169 * @{
170 */
171void NotifySourceError(CS_Source source, std::string_view msg,
172 CS_Status* status);
173void SetSourceConnected(CS_Source source, bool connected, CS_Status* status);
174void SetSourceDescription(CS_Source source, std::string_view description,
175 CS_Status* status);
177 CS_PropertyKind kind, int minimum, int maximum,
178 int step, int defaultValue, int value,
179 CS_Status* status);
181 std::span<const std::string> choices,
182 CS_Status* status);
183/** @} */
184
185/**
186 * @defgroup cscore_sink_create_func Sink Creation Functions
187 * @{
188 */
189CS_Sink CreateMjpegServer(std::string_view name, std::string_view listenAddress,
190 int port, CS_Status* status);
191CS_Sink CreateCvSink(std::string_view name, wpi::util::PixelFormat pixelFormat,
192 CS_Status* status);
194 wpi::util::PixelFormat pixelFormat,
195 std::function<void(uint64_t time)> processFrame,
196 CS_Status* status);
197
198/** @} */
199
200/**
201 * @defgroup cscore_sink_func Sink Functions
202 * @{
203 */
205std::string GetSinkName(CS_Sink sink, CS_Status* status);
206std::string_view GetSinkName(CS_Sink sink,
208 CS_Status* status);
209std::string GetSinkDescription(CS_Sink sink, CS_Status* status);
210std::string_view GetSinkDescription(CS_Sink sink,
212 CS_Status* status);
214 CS_Status* status);
215std::span<CS_Property> EnumerateSinkProperties(
217 CS_Status* status);
220 CS_Status* status);
221bool SetSinkConfigJson(CS_Sink sink, std::string_view config,
222 CS_Status* status);
224 CS_Status* status);
225std::string GetSinkConfigJson(CS_Sink sink, CS_Status* status);
229void ReleaseSink(CS_Sink sink, CS_Status* status);
230/** @} */
231
232/**
233 * @defgroup cscore_mjpegserver_func MjpegServer Sink Functions
234 * @{
235 */
238/** @} */
239
240/**
241 * @defgroup cscore_frame_sink_func Frame Sink Functions
242 * @{
243 */
244void SetSinkDescription(CS_Sink sink, std::string_view description,
245 CS_Status* status);
246std::string GetSinkError(CS_Sink sink, CS_Status* status);
247std::string_view GetSinkError(CS_Sink sink,
249 CS_Status* status);
250void SetSinkEnabled(CS_Sink sink, bool enabled, CS_Status* status);
251/** @} */
252
253/**
254 * @defgroup cscore_listener_func Listener Functions
255 * @{
256 */
257void SetListenerOnStart(std::function<void()> onStart);
258void SetListenerOnExit(std::function<void()> onExit);
259
260CS_Listener AddListener(std::function<void(const RawEvent& event)> callback,
261 int eventMask, bool immediateNotify, CS_Status* status);
262
264
268 bool immediateNotify, CS_Status* status);
269std::vector<RawEvent> PollListener(CS_ListenerPoller poller);
270std::vector<RawEvent> PollListener(CS_ListenerPoller poller, double timeout,
271 bool* timedOut);
273/** @} */
274
276
277/**
278 * @defgroup cscore_telemetry_func Telemetry Functions
279 * @{
280 */
281void SetTelemetryPeriod(double seconds);
284 CS_Status* status);
286 CS_Status* status);
287/** @} */
288
289/**
290 * @defgroup cscore_logging_func Logging Functions
291 * @{
292 */
293using LogFunc = std::function<void(unsigned int level, const char* file,
294 unsigned int line, const char* msg)>;
295void SetLogger(LogFunc func, unsigned int min_level);
296void SetDefaultLogger(unsigned int min_level);
297/** @} */
298
299/**
300 * @defgroup cscore_shutdown_func Library Shutdown Function
301 * @{
302 */
303void Shutdown();
304/** @} */
305
306/**
307 * @defgroup cscore_utility_func Utility Functions
308 * @{
309 */
310std::vector<UsbCameraInfo> EnumerateUsbCameras(CS_Status* status);
311
312std::span<CS_Source> EnumerateSourceHandles(
314std::span<CS_Sink> EnumerateSinkHandles(
316
317std::string GetHostname();
318
319std::vector<std::string> GetNetworkInterfaces();
320/** @} */
321
322/** @} */
323
324} // namespace wpi::cs
325
326#ifdef _WIN32
327// Disable uninitialized variable warnings
328#pragma warning(pop)
329#endif
then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file
Definition ThirdPartyNotices.txt:200
and restrictions which apply to each piece of software is included later in this file and or inside of the individual applicable source files The disclaimer of warranty in the WPILib license above applies to all code in and nothing in any of the other licenses gives permission to use the names of FIRST nor the names of the WPILib contributors to endorse or promote products derived from this software The following pieces of software have additional or alternate and or glfw and nanopb were modified for use in Google Inc All rights reserved Redistribution and use in source and binary with or without are permitted provided that the following conditions are this list of conditions and the following disclaimer *Redistributions in binary form must reproduce the above copyright this list of conditions and the following disclaimer in the documentation and or other materials provided with the distribution *Neither the name of Google Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY OR CONSEQUENTIAL WHETHER IN STRICT OR EVEN IF ADVISED OF THE POSSIBILITY OF SUCH January AND DISTRIBUTION Definitions License shall mean the terms and conditions for and distribution as defined by Sections through of this document Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License Legal Entity shall mean the union of the acting entity and all other entities that control are controlled by or are under common control with that entity For the purposes of this definition control direct or to cause the direction or management of such whether by contract or including but not limited to software source documentation source
Definition ThirdPartyNotices.txt:119
@ name
Definition base.h:690
Definition BooleanTopic.hpp:22
Definition json.hpp:85
CS_ConnectionStrategy
Connection strategy.
Definition cscore_c.h:170
CS_HttpCameraKind
HTTP Camera kinds.
Definition cscore_c.h:119
CS_PropertyKind
Property kinds.
Definition cscore_c.h:97
CS_TelemetryKind
Telemetry kinds.
Definition cscore_c.h:164
CS_SinkKind
Sink kinds.
Definition cscore_c.h:128
CS_SourceKind
Source kinds.
Definition cscore_c.h:108
void SetCameraWhiteBalanceManual(CS_Source source, int value, CS_Status *status)
int GetCameraBrightness(CS_Source source, CS_Status *status)
void SetCameraExposureAuto(CS_Source source, CS_Status *status)
void SetCameraWhiteBalanceHoldCurrent(CS_Source source, CS_Status *status)
void SetCameraBrightness(CS_Source source, int brightness, CS_Status *status)
void SetCameraExposureManual(CS_Source source, int value, CS_Status *status)
void SetCameraExposureHoldCurrent(CS_Source source, CS_Status *status)
void SetCameraWhiteBalanceAuto(CS_Source source, CS_Status *status)
bool NotifierDestroyed()
std::string GetSinkError(CS_Sink sink, CS_Status *status)
void SetSinkDescription(CS_Sink sink, std::string_view description, CS_Status *status)
void SetSinkEnabled(CS_Sink sink, bool enabled, CS_Status *status)
void SetSourceConnected(CS_Source source, bool connected, CS_Status *status)
CS_Property CreateSourceProperty(CS_Source source, std::string_view name, CS_PropertyKind kind, int minimum, int maximum, int step, int defaultValue, int value, CS_Status *status)
void SetSourceDescription(CS_Source source, std::string_view description, CS_Status *status)
void SetSourceEnumPropertyChoices(CS_Source source, CS_Property property, std::span< const std::string > choices, CS_Status *status)
void NotifySourceError(CS_Source source, std::string_view msg, CS_Status *status)
void SetHttpCameraUrls(CS_Source source, std::span< const std::string > urls, CS_Status *status)
CS_HttpCameraKind GetHttpCameraKind(CS_Source source, CS_Status *status)
std::vector< std::string > GetHttpCameraUrls(CS_Source source, CS_Status *status)
CS_ListenerPoller CreateListenerPoller()
void SetListenerOnStart(std::function< void()> onStart)
void RemoveListener(CS_Listener handle, CS_Status *status)
CS_Listener AddListener(std::function< void(const RawEvent &event)> callback, int eventMask, bool immediateNotify, CS_Status *status)
std::vector< RawEvent > PollListener(CS_ListenerPoller poller)
void SetListenerOnExit(std::function< void()> onExit)
void DestroyListenerPoller(CS_ListenerPoller poller)
void CancelPollListener(CS_ListenerPoller poller)
CS_Listener AddPolledListener(CS_ListenerPoller poller, int eventMask, bool immediateNotify, CS_Status *status)
void SetDefaultLogger(unsigned int min_level)
void SetLogger(LogFunc func, unsigned int min_level)
std::function< void(unsigned int level, const char *file, unsigned int line, const char *msg)> LogFunc
Definition cscore_cpp.hpp:293
std::string GetMjpegServerListenAddress(CS_Sink sink, CS_Status *status)
int GetMjpegServerPort(CS_Sink sink, CS_Status *status)
int GetPropertyMin(CS_Property property, CS_Status *status)
std::string GetPropertyName(CS_Property property, CS_Status *status)
int GetPropertyDefault(CS_Property property, CS_Status *status)
int GetPropertyMax(CS_Property property, CS_Status *status)
void SetStringProperty(CS_Property property, std::string_view value, CS_Status *status)
CS_PropertyKind GetPropertyKind(CS_Property property, CS_Status *status)
std::string GetStringProperty(CS_Property property, CS_Status *status)
void SetProperty(CS_Property property, int value, CS_Status *status)
int GetPropertyStep(CS_Property property, CS_Status *status)
std::vector< std::string > GetEnumPropertyChoices(CS_Property property, CS_Status *status)
int GetProperty(CS_Property property, CS_Status *status)
void Shutdown()
CS_Sink CreateMjpegServer(std::string_view name, std::string_view listenAddress, int port, CS_Status *status)
CS_Sink CreateCvSinkCallback(std::string_view name, wpi::util::PixelFormat pixelFormat, std::function< void(uint64_t time)> processFrame, CS_Status *status)
CS_Sink CreateCvSink(std::string_view name, wpi::util::PixelFormat pixelFormat, CS_Status *status)
CS_Property GetSinkSourceProperty(CS_Sink sink, std::string_view name, CS_Status *status)
CS_Property GetSinkProperty(CS_Sink sink, std::string_view name, CS_Status *status)
std::string GetSinkConfigJson(CS_Sink sink, CS_Status *status)
void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status *status)
std::span< CS_Property > EnumerateSinkProperties(CS_Sink sink, wpi::util::SmallVectorImpl< CS_Property > &vec, CS_Status *status)
CS_SinkKind GetSinkKind(CS_Sink sink, CS_Status *status)
std::string GetSinkDescription(CS_Sink sink, CS_Status *status)
bool SetSinkConfigJson(CS_Sink sink, std::string_view config, CS_Status *status)
wpi::util::json GetSinkConfigJsonObject(CS_Sink sink, CS_Status *status)
CS_Sink CopySink(CS_Sink sink, CS_Status *status)
std::string GetSinkName(CS_Sink sink, CS_Status *status)
void ReleaseSink(CS_Sink sink, CS_Status *status)
CS_Source GetSinkSource(CS_Sink sink, CS_Status *status)
CS_Source CreateHttpCamera(std::string_view name, std::string_view url, CS_HttpCameraKind kind, CS_Status *status)
CS_Source CreateCvSource(std::string_view name, const VideoMode &mode, CS_Status *status)
CS_Source CreateUsbCameraPath(std::string_view name, std::string_view path, CS_Status *status)
CS_Source CreateUsbCameraDev(std::string_view name, int dev, CS_Status *status)
VideoMode GetSourceVideoMode(CS_Source source, CS_Status *status)
bool SetSourceResolution(CS_Source source, int width, int height, CS_Status *status)
std::string GetSourceConfigJson(CS_Source source, CS_Status *status)
void SetSourceConnectionStrategy(CS_Source source, CS_ConnectionStrategy strategy, CS_Status *status)
std::span< CS_Sink > EnumerateSourceSinks(CS_Source source, wpi::util::SmallVectorImpl< CS_Sink > &vec, CS_Status *status)
bool SetSourceFPS(CS_Source source, int fps, CS_Status *status)
void ReleaseSource(CS_Source source, CS_Status *status)
std::string GetSourceDescription(CS_Source source, CS_Status *status)
std::vector< VideoMode > EnumerateSourceVideoModes(CS_Source source, CS_Status *status)
uint64_t GetSourceLastFrameTime(CS_Source source, CS_Status *status)
bool IsSourceEnabled(CS_Source source, CS_Status *status)
CS_Source CopySource(CS_Source source, CS_Status *status)
bool SetSourceConfigJson(CS_Source source, std::string_view config, CS_Status *status)
wpi::util::json GetSourceConfigJsonObject(CS_Source source, CS_Status *status)
CS_Property GetSourceProperty(CS_Source source, std::string_view name, CS_Status *status)
CS_SourceKind GetSourceKind(CS_Source source, CS_Status *status)
std::string GetSourceName(CS_Source source, CS_Status *status)
bool SetSourcePixelFormat(CS_Source source, wpi::util::PixelFormat pixelFormat, CS_Status *status)
bool SetSourceVideoMode(CS_Source source, const VideoMode &mode, CS_Status *status)
bool IsSourceConnected(CS_Source source, CS_Status *status)
std::span< CS_Property > EnumerateSourceProperties(CS_Source source, wpi::util::SmallVectorImpl< CS_Property > &vec, CS_Status *status)
void SetTelemetryPeriod(double seconds)
double GetTelemetryAverageValue(CS_Handle handle, CS_TelemetryKind kind, CS_Status *status)
int64_t GetTelemetryValue(CS_Handle handle, CS_TelemetryKind kind, CS_Status *status)
double GetTelemetryElapsedTime()
CS_Handle CS_Source
Definition cscore_c.h:48
int CS_Status
Definition cscore_c.h:41
CS_Handle CS_ListenerPoller
Definition cscore_c.h:46
CS_Handle CS_Property
Definition cscore_c.h:44
CS_Handle CS_Sink
Definition cscore_c.h:47
int CS_Handle
Definition cscore_c.h:43
CS_Handle CS_Listener
Definition cscore_c.h:45
UsbCameraInfo GetUsbCameraInfo(CS_Source source, CS_Status *status)
void SetUsbCameraPath(CS_Source, std::string_view path, CS_Status *status)
std::string GetUsbCameraPath(CS_Source source, CS_Status *status)
std::vector< std::string > GetNetworkInterfaces()
std::string GetHostname()
std::vector< UsbCameraInfo > EnumerateUsbCameras(CS_Status *status)
std::span< CS_Source > EnumerateSourceHandles(wpi::util::SmallVectorImpl< CS_Source > &vec, CS_Status *status)
std::span< CS_Sink > EnumerateSinkHandles(wpi::util::SmallVectorImpl< CS_Sink > &vec, CS_Status *status)
CameraServer (cscore) namespace.
Definition CvSource.hpp:15
Definition raw_os_ostream.hpp:19
PixelFormat
Pixel formats.
Definition PixelFormat.hpp:14
Listener event.
Definition RawEvent.hpp:18
USB camera information.
Definition UsbCameraInfo.hpp:15
Video mode.
Definition VideoMode.hpp:15