18 #include "ErrorBase.h"
20 #include "llvm/DenseMap.h"
21 #include "llvm/StringMap.h"
22 #include "llvm/StringRef.h"
23 #include "networktables/NetworkTable.h"
33 static constexpr uint16_t kBasePort = 1181;
34 static constexpr
int kSize640x480 = 0;
35 static constexpr
int kSize320x240 = 1;
36 static constexpr
int kSize160x120 = 2;
82 llvm::StringRef path);
130 cs::AxisCamera
AddAxisCamera(llvm::ArrayRef<std::string> hosts);
140 template <
typename T>
141 cs::AxisCamera
AddAxisCamera(std::initializer_list<T> hosts);
149 cs::AxisCamera
AddAxisCamera(llvm::StringRef name, llvm::StringRef host);
157 cs::AxisCamera
AddAxisCamera(llvm::StringRef name,
const char* host);
165 cs::AxisCamera
AddAxisCamera(llvm::StringRef name,
const std::string& host);
174 llvm::ArrayRef<std::string> hosts);
182 template <
typename T>
184 std::initializer_list<T> hosts);
201 cs::CvSink
GetVideo(
const cs::VideoSource& camera);
209 cs::CvSink
GetVideo(llvm::StringRef name);
219 cs::CvSource
PutVideo(llvm::StringRef name,
int width,
int height);
226 cs::MjpegServer
AddServer(llvm::StringRef name);
233 cs::MjpegServer
AddServer(llvm::StringRef name,
int port);
240 void AddServer(
const cs::VideoSink& server);
262 cs::VideoSink
GetServer(llvm::StringRef name);
269 void AddCamera(
const cs::VideoSource& camera);
292 std::shared_ptr<ITable> GetSourceTable(CS_Source source);
293 std::vector<std::string> GetSinkStreamValues(CS_Sink sink);
294 std::vector<std::string> GetSourceStreamValues(CS_Source source);
295 void UpdateStreamValues();
297 static constexpr
char const* kPublishName =
"/CameraPublisher";
300 std::atomic<int> m_defaultUsbDevice;
301 std::string m_primarySourceName;
302 llvm::StringMap<cs::VideoSource> m_sources;
303 llvm::StringMap<cs::VideoSink> m_sinks;
304 llvm::DenseMap<CS_Source, std::shared_ptr<ITable>> m_tables;
305 std::shared_ptr<NetworkTable> m_publishTable;
306 cs::VideoListener m_videoListener;
309 std::vector<std::string> m_addresses;
314 #include "CameraServer.inc"
void SetSize(int size)
Sets the size of the image to use.
Definition: CameraServer.cpp:699
cs::AxisCamera AddAxisCamera(llvm::StringRef host)
Adds an Axis IP camera.
Definition: CameraServer.cpp:514
cs::UsbCamera StartAutomaticCapture()
Start automatically capturing images to send to the dashboard.
Definition: CameraServer.cpp:486
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:628
Base class for most objects.
Definition: ErrorBase.h:72
void RemoveCamera(llvm::StringRef name)
Removes a camera by name.
Definition: CameraServer.cpp:694
cs::MjpegServer AddServer(llvm::StringRef name)
Adds a MJPEG server at the next available port.
Definition: CameraServer.cpp:635
void AddCamera(const cs::VideoSource &camera)
Adds an already created camera.
Definition: CameraServer.cpp:687
Singleton class for creating and keeping camera servers.
Definition: CameraServer.h:31
void RemoveServer(llvm::StringRef name)
Removes a server by name.
Definition: CameraServer.cpp:655
cs::CvSink GetVideo()
Get OpenCV access to the primary camera feed.
Definition: CameraServer.cpp:567
cs::VideoSink GetServer()
Get server for the primary camera feed.
Definition: CameraServer.cpp:660