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 SENSCameraConfigconfig () 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 SENSCameraConfigstart (std::string deviceId, const SENSCameraStreamConfig &streamConfig, bool provideIntrinsics=true)=0
 
virtual void stop ()=0
 Stop a started camera device. More...
 
virtual const SENSCapturePropscaptureProperties ()=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: