16 #include "ErrorBase.h"
18 #include "llvm/DenseMap.h"
19 #include "llvm/StringMap.h"
20 #include "llvm/StringRef.h"
21 #include "networktables/NetworkTable.h"
31 static constexpr uint16_t kBasePort = 1181;
32 static constexpr
int kSize640x480 = 0;
33 static constexpr
int kSize320x240 = 1;
34 static constexpr
int kSize160x120 = 2;
80 llvm::StringRef path);
128 cs::AxisCamera
AddAxisCamera(llvm::ArrayRef<std::string> hosts);
138 template <
typename T>
139 cs::AxisCamera
AddAxisCamera(std::initializer_list<T> hosts);
147 cs::AxisCamera
AddAxisCamera(llvm::StringRef name, llvm::StringRef host);
155 cs::AxisCamera
AddAxisCamera(llvm::StringRef name,
const char* host);
163 cs::AxisCamera
AddAxisCamera(llvm::StringRef name,
const std::string& host);
172 llvm::ArrayRef<std::string> hosts);
180 template <
typename T>
182 std::initializer_list<T> hosts);
199 cs::CvSink
GetVideo(
const cs::VideoSource& camera);
207 cs::CvSink
GetVideo(llvm::StringRef name);
217 cs::CvSource
PutVideo(llvm::StringRef name,
int width,
int height);
224 cs::MjpegServer
AddServer(llvm::StringRef name);
231 cs::MjpegServer
AddServer(llvm::StringRef name,
int port);
238 void AddServer(
const cs::VideoSink& server);
260 cs::VideoSink
GetServer(llvm::StringRef name);
267 void AddCamera(
const cs::VideoSource& camera);
290 std::shared_ptr<ITable> GetSourceTable(CS_Source source);
291 std::vector<std::string> GetSinkStreamValues(CS_Sink sink);
292 std::vector<std::string> GetSourceStreamValues(CS_Source source);
293 void UpdateStreamValues();
295 static constexpr
char const* kPublishName =
"/CameraPublisher";
298 std::atomic<int> m_defaultUsbDevice;
299 std::string m_primarySourceName;
300 llvm::StringMap<cs::VideoSource> m_sources;
301 llvm::StringMap<cs::VideoSink> m_sinks;
302 llvm::DenseMap<CS_Source, std::shared_ptr<ITable>> m_tables;
303 std::shared_ptr<NetworkTable> m_publishTable;
304 cs::VideoListener m_videoListener;
307 std::vector<std::string> m_addresses;
312 #include "CameraServer.inc"
void SetSize(int size)
Sets the size of the image to use.
Definition: CameraServer.cpp:701
cs::AxisCamera AddAxisCamera(llvm::StringRef host)
Adds an Axis IP camera.
Definition: CameraServer.cpp:516
cs::UsbCamera StartAutomaticCapture()
Start automatically capturing images to send to the dashboard.
Definition: CameraServer.cpp:488
static CameraServer * GetInstance()
Get the CameraServer instance.
Definition: CameraServer.cpp:18
cs::CvSource PutVideo(llvm::StringRef name, int width, int height)
Create a MJPEG stream with OpenCV input.
Definition: CameraServer.cpp:630
Base class for most objects.
Definition: ErrorBase.h:72
void RemoveCamera(llvm::StringRef name)
Removes a camera by name.
Definition: CameraServer.cpp:696
cs::MjpegServer AddServer(llvm::StringRef name)
Adds a MJPEG server at the next available port.
Definition: CameraServer.cpp:637
void AddCamera(const cs::VideoSource &camera)
Adds an already created camera.
Definition: CameraServer.cpp:689
Singleton class for creating and keeping camera servers.
Definition: CameraServer.h:29
void RemoveServer(llvm::StringRef name)
Removes a server by name.
Definition: CameraServer.cpp:657
cs::CvSink GetVideo()
Get OpenCV access to the primary camera feed.
Definition: CameraServer.cpp:569
cs::VideoSink GetServer()
Get server for the primary camera feed.
Definition: CameraServer.cpp:662