8 #ifndef CSCORE_HTTPCAMERAIMPL_H_ 9 #define CSCORE_HTTPCAMERAIMPL_H_ 13 #include <initializer_list> 19 #include <wpi/HttpUtil.h> 20 #include <wpi/SmallString.h> 21 #include <wpi/StringMap.h> 22 #include <wpi/condition_variable.h> 23 #include <wpi/raw_istream.h> 25 #include "SourceImpl.h" 26 #include "cscore_cpp.h" 38 void SetProperty(
int property,
int value, CS_Status* status)
override;
40 CS_Status* status)
override;
43 void SetBrightness(
int brightness, CS_Status* status)
override;
44 int GetBrightness(CS_Status* status)
const override;
45 void SetWhiteBalanceAuto(CS_Status* status)
override;
46 void SetWhiteBalanceHoldCurrent(CS_Status* status)
override;
47 void SetWhiteBalanceManual(
int value, CS_Status* status)
override;
48 void SetExposureAuto(CS_Status* status)
override;
49 void SetExposureHoldCurrent(CS_Status* status)
override;
50 void SetExposureManual(
int value, CS_Status* status)
override;
52 bool SetVideoMode(
const VideoMode& mode, CS_Status* status)
override;
54 void NumSinksChanged()
override;
55 void NumSinksEnabledChanged()
override;
57 CS_HttpCameraKind GetKind()
const;
59 std::vector<std::string> GetUrls()
const;
67 bool viaSettings_, CS_PropertyKind kind_,
int minimum_,
68 int maximum_,
int step_,
int defaultValue_,
int value_)
69 :
PropertyImpl(name_, kind_, step_, defaultValue_, value_),
70 viaSettings(viaSettings_),
71 httpParam(httpParam_) {
79 bool viaSettings{
false};
80 std::string httpParam;
84 std::unique_ptr<PropertyImpl> CreateEmptyProperty(
87 bool CacheProperties(CS_Status* status)
const override;
90 bool viaSettings, CS_PropertyKind kind,
int minimum,
91 int maximum,
int step,
int defaultValue,
int value)
const;
95 bool viaSettings,
int defaultValue,
int value,
96 std::initializer_list<T> choices)
const;
100 void StreamThreadMain();
109 void SettingsThreadMain();
112 std::atomic_bool m_connected{
false};
113 std::atomic_bool m_active{
true};
114 std::thread m_streamThread;
115 std::thread m_settingsThread;
122 std::unique_ptr<wpi::HttpConnection> m_streamConn;
123 std::unique_ptr<wpi::HttpConnection> m_settingsConn;
125 CS_HttpCameraKind m_kind;
127 std::vector<wpi::HttpLocation> m_locations;
128 size_t m_nextLocation{0};
129 int m_prefLocation{-1};
131 wpi::condition_variable m_sinkEnabledCond;
134 wpi::condition_variable m_settingsCond;
137 std::atomic_bool m_streamSettingsUpdated{
false};
145 void SetProperty(
int property,
int value, CS_Status* status)
override;
147 CS_Status* status)
override;
150 bool CacheProperties(CS_Status* status)
const override;
155 #endif // CSCORE_HTTPCAMERAIMPL_H_ Definition: HttpUtil.h:77
Definition: CvSourceImpl.h:19
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:41
Definition: HttpCameraImpl.h:140
Definition: HttpCameraImpl.h:30
Definition: SourceImpl.h:30
Definition: raw_istream.h:26
Definition: PropertyImpl.h:21
Definition: HttpUtil.h:126
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
StringMap - This is an unconventional map that is specialized for handling keys that are "strings"...
Definition: StringMap.h:205
Definition: HttpCameraImpl.h:62
Video mode.
Definition: cscore_cpp.h:46