SLProject  4.3.020
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
SENSBaseCamera Class Reference

Implementation of common functionality and members. More...

#include <SENSCamera.h>

Inheritance diagram for SENSBaseCamera:
[legend]

Public Member Functions

SENSFrameBasePtr latestFrame () override
 Get the latest captured frame. If no frame was captured the frame will be empty (null). More...
 
const SENSCameraConfig & config () const override
 defines how the camera was configured during start More...
 
void registerListener (SENSCameraListener *listener) override
 
void unregisterListener (SENSCameraListener *listener) override
 
bool started () const override
 
bool permissionGranted () const override
 
void setPermissionGranted () override
 
- Public Member Functions inherited from SENSCamera
virtual ~SENSCamera ()
 
virtual const SENSCameraConfig & start (std::string deviceId, const SENSCameraStreamConfig &streamConfig, bool provideIntrinsics=true)=0
 
virtual void stop ()=0
 Stop a started camera device. More...
 
virtual const SENSCaptureProps & captureProperties ()=0
 Get SENSCaptureProps which contains necessary information about all available camera devices and their capabilities. More...
 

Protected Member Functions

void updateFrame (cv::Mat bgrImg, cv::Mat intrinsics, int width, int height, bool intrinsicsChanged)
 
void processStart ()
 call from start function to do startup preprocessing More...
 

Protected Attributes

SENSCaptureProps _captureProperties
 
std::atomic< bool > _started {false}
 flags if camera was started More...
 
SENSCameraConfig _config
 indicates what is currently running More...
 
std::atomic< bool > _permissionGranted {false}
 
std::vector< SENSCameraListener * > _listeners
 
std::mutex _listenerMutex
 
SENSFrameBasePtr _frame
 current frame More...
 
std::mutex _frameMutex
 

Detailed Description

Implementation of common functionality and members.

Definition at line 196 of file SENSCamera.h.

Member Function Documentation

◆ config()

const SENSCameraConfig& SENSBaseCamera::config ( ) const
inlineoverridevirtual

defines how the camera was configured during start

Implements SENSCamera.

Definition at line 200 of file SENSCamera.h.

200 { return _config; };
SENSCameraConfig _config
indicates what is currently running
Definition: SENSCamera.h:218

◆ latestFrame()

SENSFrameBasePtr SENSBaseCamera::latestFrame ( )
overridevirtual

Get the latest captured frame. If no frame was captured the frame will be empty (null).

Implements SENSCamera.

Definition at line 276 of file SENSCamera.cpp.

277 {
279 
280  if (!_started)
281  {
282  SENS_WARN("SENSBaseCamera latestFrame: Camera is not started!");
283  return latestFrame;
284  }
285 
286  {
287  std::lock_guard<std::mutex> lock(_frameMutex);
289  }
290 
291  return latestFrame;
292 }
#define SENS_WARN(...)
Definition: SENS.h:64
std::shared_ptr< SENSFrameBase > SENSFrameBasePtr
Definition: SENSFrame.h:27
SENSFrameBasePtr latestFrame() override
Get the latest captured frame. If no frame was captured the frame will be empty (null).
Definition: SENSCamera.cpp:276
SENSFrameBasePtr _frame
current frame
Definition: SENSCamera.h:222
std::atomic< bool > _started
flags if camera was started
Definition: SENSCamera.h:217
std::mutex _frameMutex
Definition: SENSCamera.h:223

◆ permissionGranted()

bool SENSBaseCamera::permissionGranted ( ) const
inlineoverridevirtual

Implements SENSCamera.

Definition at line 204 of file SENSCamera.h.

204 { return _permissionGranted; }
std::atomic< bool > _permissionGranted
Definition: SENSCamera.h:219

◆ processStart()

void SENSBaseCamera::processStart ( )
protected

call from start function to do startup preprocessing

Definition at line 294 of file SENSCamera.cpp.

295 {
296  {
297  std::lock_guard<std::mutex> lock(_listenerMutex);
298  // inform listeners about camera infos
299  for (SENSCameraListener* l : _listeners)
300  l->onCameraConfigChanged(_config);
301  }
302 }
std::vector< SENSCameraListener * > _listeners
Definition: SENSCamera.h:220
std::mutex _listenerMutex
Definition: SENSCamera.h:221

◆ registerListener()

void SENSBaseCamera::registerListener ( SENSCameraListener *  listener)
overridevirtual

Implements SENSCamera.

Definition at line 249 of file SENSCamera.cpp.

250 {
251  std::lock_guard<std::mutex> lock(_listenerMutex);
252  if (std::find(_listeners.begin(), _listeners.end(), listener) == _listeners.end())
253  _listeners.push_back(listener);
254 
255  if (_started)
256  {
257  // inform listeners about camera infos
258  for (SENSCameraListener* l : _listeners)
259  l->onCameraConfigChanged(_config);
260  }
261 }

◆ setPermissionGranted()

void SENSBaseCamera::setPermissionGranted ( )
inlineoverridevirtual

Implements SENSCamera.

Definition at line 205 of file SENSCamera.h.

205 { _permissionGranted = true; }

◆ started()

bool SENSBaseCamera::started ( ) const
inlineoverridevirtual

Implements SENSCamera.

Definition at line 203 of file SENSCamera.h.

203 { return _started; }

◆ unregisterListener()

void SENSBaseCamera::unregisterListener ( SENSCameraListener *  listener)
overridevirtual

Implements SENSCamera.

Definition at line 263 of file SENSCamera.cpp.

264 {
265  std::lock_guard<std::mutex> lock(_listenerMutex);
266  for (auto it = _listeners.begin(); it != _listeners.end(); ++it)
267  {
268  if (*it == listener)
269  {
270  _listeners.erase(it);
271  break;
272  }
273  }
274 }

◆ updateFrame()

void SENSBaseCamera::updateFrame ( cv::Mat  bgrImg,
cv::Mat  intrinsics,
int  width,
int  height,
bool  intrinsicsChanged 
)
protected

Definition at line 220 of file SENSCamera.cpp.

225 {
226  // estimate time before running into lock
227  SENSTimePt timePt = SENSClock::now();
228 
229  // inform listeners
230  {
231  std::lock_guard<std::mutex> lock(_listenerMutex);
232  if (_listeners.size())
233  {
234  for (SENSCameraListener* l : _listeners)
235  l->onFrame(timePt, bgrImg.clone());
236  }
237  }
238 
239  {
240  std::lock_guard<std::mutex> lock(_frameMutex);
241  _frame = std::make_shared<SENSFrameBase>(timePt,
242  bgrImg,
243  intrinsics,
244  width,
245  height);
246  }
247 }
std::chrono::high_resolution_clock::time_point SENSTimePt
Definition: SENS.h:57

Member Data Documentation

◆ _captureProperties

SENSCaptureProps SENSBaseCamera::_captureProperties
protected

Definition at line 216 of file SENSCamera.h.

◆ _config

SENSCameraConfig SENSBaseCamera::_config
protected

indicates what is currently running

Definition at line 218 of file SENSCamera.h.

◆ _frame

SENSFrameBasePtr SENSBaseCamera::_frame
protected

current frame

Definition at line 222 of file SENSCamera.h.

◆ _frameMutex

std::mutex SENSBaseCamera::_frameMutex
protected

Definition at line 223 of file SENSCamera.h.

◆ _listenerMutex

std::mutex SENSBaseCamera::_listenerMutex
protected

Definition at line 221 of file SENSCamera.h.

◆ _listeners

std::vector<SENSCameraListener*> SENSBaseCamera::_listeners
protected

Definition at line 220 of file SENSCamera.h.

◆ _permissionGranted

std::atomic<bool> SENSBaseCamera::_permissionGranted {false}
protected

Definition at line 219 of file SENSCamera.h.

◆ _started

std::atomic<bool> SENSBaseCamera::_started {false}
protected

flags if camera was started

Definition at line 217 of file SENSCamera.h.


The documentation for this class was generated from the following files: