8 #ifndef CSCORE_SOURCEIMPL_H_ 9 #define CSCORE_SOURCEIMPL_H_ 17 #include <wpi/ArrayRef.h> 18 #include <wpi/StringMap.h> 19 #include <wpi/StringRef.h> 20 #include <wpi/condition_variable.h> 21 #include <wpi/mutex.h> 25 #include "PropertyImpl.h" 26 #include "cscore_cpp.h" 44 void SetConnected(
bool connected);
50 int GetNumSinks()
const {
return m_numSinks; }
64 int GetNumSinksEnabled()
const {
return m_numSinksEnabled; }
68 NumSinksEnabledChanged();
73 NumSinksEnabledChanged();
77 uint64_t GetCurFrameTime();
87 Frame GetNextFrame(
double timeout);
95 CS_Status* status)
const;
96 CS_PropertyKind GetPropertyKind(
int property)
const;
98 CS_Status* status)
const;
99 int GetProperty(
int property, CS_Status* status)
const;
100 virtual void SetProperty(
int property,
int value, CS_Status* status) = 0;
101 int GetPropertyMin(
int property, CS_Status* status)
const;
102 int GetPropertyMax(
int property, CS_Status* status)
const;
103 int GetPropertyStep(
int property, CS_Status* status)
const;
104 int GetPropertyDefault(
int property, CS_Status* status)
const;
107 CS_Status* status)
const;
108 virtual void SetStringProperty(
int property,
wpi::StringRef value,
109 CS_Status* status) = 0;
110 std::vector<std::string> GetEnumPropertyChoices(
int property,
111 CS_Status* status)
const;
114 virtual void SetBrightness(
int brightness, CS_Status* status) = 0;
115 virtual int GetBrightness(CS_Status* status)
const = 0;
116 virtual void SetWhiteBalanceAuto(CS_Status* status) = 0;
117 virtual void SetWhiteBalanceHoldCurrent(CS_Status* status) = 0;
118 virtual void SetWhiteBalanceManual(
int value, CS_Status* status) = 0;
119 virtual void SetExposureAuto(CS_Status* status) = 0;
120 virtual void SetExposureHoldCurrent(CS_Status* status) = 0;
121 virtual void SetExposureManual(
int value, CS_Status* status) = 0;
124 VideoMode GetVideoMode(CS_Status* status)
const;
125 virtual bool SetVideoMode(
const VideoMode& mode, CS_Status* status) = 0;
129 virtual bool SetPixelFormat(VideoMode::PixelFormat pixelFormat,
131 virtual bool SetResolution(
int width,
int height, CS_Status* status);
132 virtual bool SetFPS(
int fps, CS_Status* status);
134 std::vector<VideoMode> EnumerateVideoModes(CS_Status* status)
const;
136 std::unique_ptr<Image> AllocImage(VideoMode::PixelFormat pixelFormat,
137 int width,
int height,
size_t size);
140 void PutFrame(VideoMode::PixelFormat pixelFormat,
int width,
int height,
142 void PutFrame(std::unique_ptr<Image> image, Frame::Time time);
146 virtual void NumSinksChanged() = 0;
147 virtual void NumSinksEnabledChanged() = 0;
149 std::atomic_int m_numSinks{0};
150 std::atomic_int m_numSinksEnabled{0};
155 if (property <= 0 || static_cast<size_t>(property) > m_propertyData.size())
157 return m_propertyData[
property - 1].get();
160 if (property <= 0 || static_cast<size_t>(property) > m_propertyData.size())
162 return m_propertyData[
property - 1].get();
168 virtual std::unique_ptr<PropertyImpl> CreateEmptyProperty(
173 virtual bool CacheProperties(CS_Status* status)
const = 0;
175 void NotifyPropertyCreated(
int propIndex,
PropertyImpl& prop);
178 void UpdatePropertyValue(
int property,
bool setString,
int value,
182 mutable std::vector<std::unique_ptr<PropertyImpl>> m_propertyData;
184 mutable std::vector<VideoMode> m_videoModes;
189 mutable std::atomic_bool m_properties_cached{
false};
191 mutable wpi::mutex m_mutex;
194 void ReleaseImage(std::unique_ptr<Image> image);
195 std::unique_ptr<Frame::Impl> AllocFrameImpl();
196 void ReleaseFrameImpl(std::unique_ptr<Frame::Impl> data);
199 std::string m_description;
201 wpi::mutex m_frameMutex;
202 wpi::condition_variable m_frameCv;
204 bool m_destroyFrames{
false};
207 wpi::mutex m_poolMutex;
208 std::vector<std::unique_ptr<Frame::Impl>> m_framesAvail;
209 std::vector<std::unique_ptr<Image>> m_imagesAvail;
211 std::atomic_bool m_connected{
false};
222 #endif // CSCORE_SOURCEIMPL_H_ Definition: CvSourceImpl.h:19
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:41
Definition: SourceImpl.h:30
Definition: PropertyImpl.h:21
bool IsConnected(NT_Inst inst)
Return whether or not the instance is connected to another node.
Definition: ntcore_cpp.cpp:904
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
Video mode.
Definition: cscore_cpp.h:46