/
CameraSystem.h
executable file
·77 lines (52 loc) · 2.06 KB
/
CameraSystem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
* TI Voxel Lib component.
*
* Copyright (c) 2014 Texas Instruments Inc.
*/
#ifndef VOXEL_CAMERASYSTEM_H
#define VOXEL_CAMERASYSTEM_H
#include <DepthCameraLibrary.h>
#include "DownloaderFactory.h"
namespace Voxel
{
/**
* \defgroup CamSys Camera System Components
* @{
* \brief This group of classes provide the higher level API for cameras
* @}
*/
/**
* \ingroup CamSys
*
* \brief This class provides ways to instantiate individual cameras and components like filters.
*/
class VOXEL_EXPORT CameraSystem
{
protected:
Vector<DepthCameraLibraryPtr> _libraries;
Map<String, DepthCameraFactoryPtr> _factories; // Key = device ID as returned by Device::id()
Map<String, DepthCameraPtr> _depthCameras; // Key = device ID as returned by Device::id()
Map<String, FilterFactoryPtr> _filterFactories; // Key = filter name
Map<String, DownloaderFactoryPtr> _downloaderFactories;// Key = device ID as returned by Device::id()
Map<GeneratorIDType, DepthCameraFactoryPtr> _factoryForGeneratorID; // Key = frame generator ID
void _init();
void _loadLibraries(const Vector<String> &paths);
public:
CameraSystem();
bool addDepthCameraFactory(DepthCameraFactoryPtr factory);
Vector<DevicePtr> scan();
DepthCameraPtr connect(const DevicePtr &device);
// Remove local reference. Outside calling function should remove reference to its DepthCamera as well
bool disconnect(const DepthCameraPtr &depthCamera, bool reset = false);
bool addFilterFactory(FilterFactoryPtr filterFactory);
Vector<String> getSupportedFilters();
bool getFilterDescription(const String &filterName, FilterDescription &description);
FilterPtr createFilter(const String &name, DepthCamera::FrameType type);
Vector<DevicePtr> getProgrammableDevices();
bool addDownloaderFactory(DownloaderFactoryPtr downloaderFactory);
DownloaderPtr getDownloader(const DevicePtr &device);
bool getFrameGenerator(uint8_t frameType, GeneratorIDType generatorID, FrameGeneratorPtr &frameGenerator);
virtual ~CameraSystem();
};
}
#endif // VOXEL_CAMERASYSTEM_H