LeiaSR SDK 720218b2 v1.32.7.6322 2025-02-13T14:55:38Z
Stable
camera.h
Go to the documentation of this file.
1
5#pragma once
6
8
9#include "videostream.h"
10#include "cameradescriptor.h"
13
14#ifdef WIN32
15# ifdef COMPILING_DLL_SimulatedRealityCameras
16# define DIMENCOSR_API __declspec(dllexport)
17# else
18# define DIMENCOSR_API __declspec(dllimport)
19# endif
20#else
21# define DIMENCOSR_API
22#endif
23
24namespace SR {
25
34typedef std::vector<SR_cameraDescriptor>(CameraListFunction)();
35
40
48DIMENCOSR_API std::vector<CameraListFunction*>& cameraListImplementationFunctions();
49
57DIMENCOSR_API std::map<std::string, CameraCreateImplementationFunction*>& cameraCreateImplementationFunctions();
58
66class DIMENCOSR_API Camera : public Sense {
67
68public:
73 public:
75
81 Descriptor(SR_cameraDescriptor info) : info{ info.serialNumber, info.cameraTypeLength, info.cameraType } {
82 }
83
88 return info;
89 }
90
94 operator std::string() {
95 return std::string(info.cameraType, info.cameraTypeLength) + std::to_string(info.serialNumber);
96 }
97 };
98
106 static void addImplementation(CameraListFunction* listFunction, CameraCreateImplementationFunction* createFunction, std::string cameraType);
107
113 static std::vector<SR_cameraDescriptor> listDescriptors();
114
122 static Camera* create(SRContext &context, Camera::Descriptor cameraDescriptor);
123
130 static Camera* create(SRContext &context);
131
132 //Destruct streams
133 virtual ~Camera();
134
141
150 virtual const unsigned int getStreamCount() = 0;
151
158 virtual std::shared_ptr<VideoStream> openVideoStream(VideoListener* listener) = 0;
159
165 virtual void streamClosed(VideoStream* stream) = 0;
166};
167
168}
169
170#undef DIMENCOSR_API
#define DIMENCOSR_API
Definition: camera.h:21
Class describing a physical camera.
Definition: camera.h:72
SR_cameraDescriptor info
Definition: camera.h:74
Descriptor(SR_cameraDescriptor info)
Construct a Camera::Descriptor with a struct combining a camera type and serial number.
Definition: camera.h:81
Class of Sense dealing with video data.
Definition: camera.h:66
virtual std::shared_ptr< VideoStream > openVideoStream(VideoListener *listener)=0
Creates a VideoStream for listener to be connected to.
static Camera * create(SRContext &context)
Create a camera.
static std::vector< SR_cameraDescriptor > listDescriptors()
List camera identifiers.
static Camera * create(SRContext &context, Camera::Descriptor cameraDescriptor)
Create a camera with a given identifier.
virtual ~Camera()
virtual const unsigned int getStreamCount()=0
Get the number of available streams.
static void addImplementation(CameraListFunction *listFunction, CameraCreateImplementationFunction *createFunction, std::string cameraType)
Static function to make a Camera implementation available through the Camera::listDescriptors and Cam...
virtual void streamClosed(VideoStream *stream)=0
Closes a specific VideoStream.
virtual Camera::Descriptor getDescriptor()=0
Get descriptor to identify physical Camera.
Maintains WorldObject and Sense objects during the application lifetime.
Definition: srcontext.h:75
Class of objects dealing with Streams of data.
Definition: sense.h:37
Interface for listening to SR_videoFrame updates.
Definition: videolistener.h:26
Stream of SR_videoFrame objects.
Definition: videostream.h:31
Namespace containing all C++ Simulated Reality classes.
Definition: srconfiguration.h:20
Camera *() CameraCreateImplementationFunction(SRContext &, SR_cameraDescriptor)
Definition: camera.h:39
DIMENCOSR_API std::vector< CameraListFunction * > & cameraListImplementationFunctions()
Vector of functions to list camera descriptors of a specific type.
DIMENCOSR_API std::map< std::string, CameraCreateImplementationFunction * > & cameraCreateImplementationFunctions()
Map of camera type to functions to create cameras of that type.
C-compatible descriptor of SR camera component.
Definition: cameradescriptor.h:10
uint64_t serialNumber
Definition: cameradescriptor.h:12
uint64_t cameraTypeLength
Definition: cameradescriptor.h:15
const char * cameraType
Definition: cameradescriptor.h:16