Ocean
Loading...
Searching...
No Matches
SerializerDevicePlayer.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_DEVICES_SERIALIZATION_SERIALIZER_DEVICE_PLAYER_H
9#define META_OCEAN_DEVICES_SERIALIZATION_SERIALIZER_DEVICE_PLAYER_H
10
12
14#include "ocean/base/Thread.h"
15
19
22
24
25#include <deque>
26
27namespace Ocean
28{
29
30namespace Devices
31{
32
33namespace Serialization
34{
35
36/**
37 * This class implements a player for device objects based on Ocean's DataSerializer.
38 * Serialized recordings containing sensor and media information can be used for replay and debugging purposes.
39 * Beware: Do not run two individual instances of the SerializerDevicePlayer at the same time.
40 * @ingroup devicesserialization
41 */
42class OCEAN_DEVICES_SERIALIZATION_EXPORT SerializerDevicePlayer :
43 public DevicePlayer,
44 protected Thread
45{
46 protected:
47
48 /**
49 * This class implements a simple helper to ensure that there cannot be more than one active DevicePlayer at the same time.
50 */
51 class UsageManager : public Singleton<UsageManager>
52 {
53 friend class Singleton<UsageManager>;
54
55 public:
56
57 /**
58 * Informs the manager that the player will be used.
59 * @return True, if the player can be used
60 */
62
63 /**
64 * Informs the manager that the player is not longer used.
65 */
67
68 protected:
69
70 /**
71 * Default constructor.
72 */
73 UsageManager() = default;
74
75 protected:
76
77 /// True, if the player is currently used.
78 bool isUsed_ = false;
79
80 /// The manager's lock.
82 };
83
84 /**
85 * Alias for DeviceRef.
86 */
88
89 /**
90 * Definition of a map mapping channel ids to device objects.
91 */
92 using ChannelDeviceMap = std::unordered_map<IO::Serialization::DataSerializer::ChannelId, DeviceRef>;
93
94 /**
95 * Definition of a map mapping channel ids to PixelImage objects.
96 */
97 using ChannelPixelImageMap = std::unordered_map<IO::Serialization::DataSerializer::ChannelId, Media::PixelImageRef>;
98
99 /**
100 * Definition of a function pointer for specialized sample processing functions.
101 */
102 using SampleProcessorFunction = void (SerializerDevicePlayer::*)(const IO::Serialization::DataSerializer::ChannelId, IO::Serialization::UniqueDataSample&&);
103
104 /**
105 * Definition of a map mapping sample type strings to specialized processing functions.
106 */
107 using SampleTypeMap = std::unordered_map<std::string, SampleProcessorFunction>;
108
109 /**
110 * Definition of a map mapping channel ids to specialized processing functions.
111 */
112 using ChannelProcessorMap = std::unordered_map<IO::Serialization::DataSerializer::ChannelId, SampleProcessorFunction>;
113
114 /**
115 * This class holds data associated with a frame medium channel.
116 */
118 {
119 public:
120
121 FrameMediumData() = default;
122
123 /**
124 * Creates a new frame medium data object.
125 * @param pixelImage The pixel image to be used, must be valid
126 */
127 explicit inline FrameMediumData(const Media::PixelImageRef& pixelImage);
128
129 /**
130 * Updates the frame medium data with a new frame sample.
131 * @param frameSample The frame sample to update from
132 * @return True, if succeeded
133 */
135
136 public:
137
138 /// The pixel image object.
140
141 /// The camera profile.
143
144 /// The transformation between device and camera.
145 HomogenousMatrixD4 device_T_camera_ = HomogenousMatrixD4(false);
146 };
147
148 /**
149 * Definition of a map mapping channel ids to FrameMediumData objects.
150 */
151 using ChannelFrameMediumDataMap = std::unordered_map<IO::Serialization::DataSerializer::ChannelId, FrameMediumData>;
152
153 /// Definition of a pair holding a channel id and a unique data sample.
154 using SamplePair = std::pair<IO::Serialization::DataSerializer::ChannelId, IO::Serialization::UniqueDataSample>;
155
156 /// Definition of a queue holding sample pairs.
157 using SampleQueue = std::deque<SamplePair>;
158
159 public:
160
161 /**
162 * Creates a new device player.
163 */
165
166 /**
167 * Destructs the device player.
168 */
170
171 /**
172 * Loads a new serialized file for replay.
173 * @param filename The serialized file to be loaded
174 * @return True, if succeeded
175 */
176 bool initialize(const std::string& filename) override;
177
178 /**
179 * Starts the replay.
180 * The recording can be played with individual speed, e.g., real-time, slower than real-time, faster than real-time.<br>
181 * Further, the player supports a stop-motion mode in which the player will play one frame by another.
182 * @param speed The speed at which the recording will be played, e.g., 2 means two times faster than normal, with range (0, infinity), 0 to play the recording in a stop-motion (frame by frame) mode
183 * @return True, if succeeded
184 * @see duration(), playNextFrame();
185 */
186 bool start(const float speed = 1.0f) override;
187
188 /**
189 * Stops the replay.
190 * @return True, if succeeded
191 */
192 bool stop() override;
193
194 /**
195 * Plays the next frame of the recording, the player must be started with stop-motion mode.
196 * In case the recording holds several media objects, the first media object is used to identify the next frame.<br>
197 * This function will read all samples which have been recorded before or at the same time as the next frame of the first media object.<br>
198 * If the recording does not have any media object nothing happens.
199 * @return The timestamp of the frame which has been played, invalid if no additional frame exists
200 * @see start(), frameMediums().
201 */
203
204 /**
205 * Returns the duration of the content when played with default speed.
206 * @return The recording's default duration, in seconds, with range [0, infinity)
207 */
208 inline double duration() const override;
209
210 /**
211 * Returns all media objects which have been created based on the recording.
212 * @return The media objects
213 */
214 inline Media::FrameMediumRefs frameMediums() override;
215
216 /**
217 * Returns a specific transformation which is expected to be part of the recording.
218 * This function is intended as a helper function to simplify access to important transformations which otherwise would be accessed through the player's tracking devices.
219 * @param name The name of the transformation, must be valid
220 * @param timestamp The timestamp for which the transformation is evaluated, must be valid
221 * @param matrix The resulting transformation matrix
222 * @return The transformation result
223 */
224 TransformationResult transformation(const std::string& name, const Timestamp& timestamp, HomogenousMatrixD4& matrix) override;
225
226 /**
227 * Returns whether this player is currently started.
228 * @return True, if so
229 */
230 inline bool isStarted() const override;
231
232 /**
233 * Returns whether this player is currently playing.
234 * @return True, if so
235 */
236 bool isPlaying() const;
237
238 /**
239 * Stops playback and releases the player.
240 */
241 void release();
242
243 /**
244 * Returns whether this player holds a valid recording.
245 * @return True, if so
246 */
247 bool isValid() const override;
248
249 protected:
250
251 /**
252 * Initializes the device factories by registering factory functions for all supported sample types.
253 * @return True, if succeeded
254 */
256
257 /**
258 * Processes a sample and forwards it to the appropriate device.
259 * @param channelId The channel id of the sample
260 * @param sample The sample to process, will be moved
261 */
263
264 /**
265 * Processes a DataSampleFrame sample.
266 * @param channelId The channel id of the sample
267 * @param sample The sample to process, will be moved
268 */
270
271 /**
272 * Processes a DataSampleOrientationTracker3DOF sample.
273 * @param channelId The channel id of the sample
274 * @param sample The sample to process, will be moved
275 */
277
278 /**
279 * Processes a DataSampleAccelerationSensor3DOF sample.
280 * @param channelId The channel id of the sample
281 * @param sample The sample to process, will be moved
282 */
284
285 /**
286 * Processes a DataSampleGyroSensor3DOF sample.
287 * @param channelId The channel id of the sample
288 * @param sample The sample to process, will be moved
289 */
291
292 /**
293 * Processes a DataSampleGravityTracker3DOF sample.
294 * @param channelId The channel id of the sample
295 * @param sample The sample to process, will be moved
296 */
298
299 /**
300 * Processes a DataSamplePositionTracker3DOF sample.
301 * @param channelId The channel id of the sample
302 * @param sample The sample to process, will be moved
303 */
305
306 /**
307 * Processes a DataSampleTracker6DOF sample.
308 * @param channelId The channel id of the sample
309 * @param sample The sample to process, will be moved
310 */
312
313 /**
314 * Processes a DataSampleGPSTracker sample.
315 * @param channelId The channel id of the sample
316 * @param sample The sample to process, will be moved
317 */
319
320 /**
321 * Processes samples within the lookahead window.
322 * This function processes queued samples and reads new samples from the input serializer that fall within the specified playback timestamp.
323 * @param dataTimestamp The data timestamp to process samples up to
324 * @param maxPlaybackTimestamp The maximum playback timestamp defining the lookahead window
325 */
326 void processLookaheadSamples(const IO::Serialization::DataTimestamp& dataTimestamp, const double maxPlaybackTimestamp);
327
328 /**
329 * Creates or retrieves a device for a specific channel.
330 * @param channelId The channel id
331 * @param deviceName The name of the device
332 * @param deviceType The type of the device
333 * @return The device reference, empty if creation failed
334 */
335 DeviceRef ensureDevice(const IO::Serialization::DataSerializer::ChannelId channelId, const std::string& deviceName, const Device::DeviceType& deviceType);
336
337 /**
338 * The thread's run function in which the samples are read.
339 * @see Thread::threadRun().
340 */
341 void threadRun() override;
342
343 /**
344 * Factory function for creating SerializationOrientationTracker3DOF devices.
345 * @param name The name of the new device, must be valid
346 * @param deviceType The device type of the device, must be valid
347 * @return The new device, nullptr if the device could not be created
348 */
349 static Device* createOrientationTracker3DOF(const std::string& name, const Device::DeviceType& deviceType);
350
351 /**
352 * Factory function for creating SerializationAccelerationSensor3DOF devices.
353 * @param name The name of the new device, must be valid
354 * @param deviceType The device type of the device, must be valid
355 * @return The new device, nullptr if the device could not be created
356 */
357 static Device* createAccelerationSensor3DOF(const std::string& name, const Device::DeviceType& deviceType);
358
359 /**
360 * Factory function for creating SerializationGyroSensor3DOF devices.
361 * @param name The name of the new device, must be valid
362 * @param deviceType The device type of the device, must be valid
363 * @return The new device, nullptr if the device could not be created
364 */
365 static Device* createGyroSensor3DOF(const std::string& name, const Device::DeviceType& deviceType);
366
367 /**
368 * Factory function for creating SerializationGravityTracker3DOF devices.
369 * @param name The name of the new device, must be valid
370 * @param deviceType The device type of the device, must be valid
371 * @return The new device, nullptr if the device could not be created
372 */
373 static Device* createGravityTracker3DOF(const std::string& name, const Device::DeviceType& deviceType);
374
375 /**
376 * Factory function for creating SerializationPositionTracker3DOF devices.
377 * @param name The name of the new device, must be valid
378 * @param deviceType The device type of the device, must be valid
379 * @return The new device, nullptr if the device could not be created
380 */
381 static Device* createPositionTracker3DOF(const std::string& name, const Device::DeviceType& deviceType);
382
383 /**
384 * Factory function for creating SerializationTracker6DOF devices.
385 * @param name The name of the new device, must be valid
386 * @param deviceType The device type of the device, must be valid
387 * @return The new device, nullptr if the device could not be created
388 */
389 static Device* createTracker6DOF(const std::string& name, const Device::DeviceType& deviceType);
390
391 /**
392 * Factory function for creating SerializationGPSTracker devices.
393 * @param name The name of the new device, must be valid
394 * @param deviceType The device type of the device, must be valid
395 * @return The new device, nullptr if the device could not be created
396 */
397 static Device* createGPSTracker(const std::string& name, const Device::DeviceType& deviceType);
398
399 /**
400 * Factory function for creating SampleFrame objects.
401 * @param sampleType The sample type
402 * @return The new sample object
403 */
404 static IO::Serialization::UniqueDataSample createDataSampleFrame(const std::string& sampleType);
405
406 /**
407 * Factory function for creating DataSampleOrientationTracker3DOF objects.
408 * @param sampleType The sample type
409 * @return The new sample object
410 */
412
413 /**
414 * Factory function for creating DataSampleAccelerationSensor3DOF objects.
415 * @param sampleType The sample type
416 * @return The new sample object
417 */
419
420 /**
421 * Factory function for creating DataSampleGyroSensor3DOF objects.
422 * @param sampleType The sample type
423 * @return The new sample object
424 */
426
427 /**
428 * Factory function for creating DataSampleGravityTracker3DOF objects.
429 * @param sampleType The sample type
430 * @return The new sample object
431 */
433
434 /**
435 * Factory function for creating DataSamplePositionTracker3DOF objects.
436 * @param sampleType The sample type
437 * @return The new sample object
438 */
440
441 /**
442 * Factory function for creating DataSampleTracker6DOF objects.
443 * @param sampleType The sample type
444 * @return The new sample object
445 */
447
448 /**
449 * Factory function for creating DataSampleGPSTracker objects.
450 * @param sampleType The sample type
451 * @return The new sample object
452 */
454
455 protected:
456
457 /// The input data serializer for reading the content.
458 std::unique_ptr<IO::Serialization::FileInputDataSerializer> inputSerializer_;
459
460 /// The id of the channel which is the first channel with media content.
461 IO::Serialization::DataSerializer::ChannelId firstMediaFrameChannelId_ = IO::Serialization::DataSerializer::invalidChannelId();
462
463 /// The map associating channel ids with device objects.
465
466 /// The map associating channel ids with FrameMediumData objects.
468
469 /// The FrameMedium objects receiving image content from the recording.
471
472 /// The map associating channel ids with specialized processing functions.
474
475 /// True, if the player is started.
476 std::atomic_bool isStarted_ = false;
477
478 /// The speed at which the recording will be played, with range (0, infinity), 0 to play the recording with stop-motion.
479 float speed_ = 1.0f;
480
481 /// Map associating sample type strings with specialized processing functions.
483
484 /// The sample queue holding pending samples for the stop-motion mode.
485 SampleQueue stopMotionSampleQueue_;
486};
487
489 pixelImage_(pixelImage)
490{
491 ocean_assert(pixelImage_);
492}
493
495{
496 ocean_assert(false && "This function is not supported");
497 return -1.0;
498}
499
501{
502 const ScopedLock scopedLock(lock_);
503
504 return frameMediums_;
505}
506
508{
509 const ScopedLock scopedLock(lock_);
510
511 return isStarted_;
512}
513
514}
515
516}
517
518}
519
520#endif // META_OCEAN_DEVICES_SERIALIZATION_SERIALIZER_DEVICE_PLAYER_H
Definition of a class holding the major and minor device type.
Definition devices/Device.h:62
This class is the base class for all devices of any type.
Definition devices/Device.h:28
This class implements the abstract base class for all device players.
Definition DevicePlayer.h:41
TransformationResult
Definition of individual transformation results.
Definition DevicePlayer.h:53
Lock lock_
The player's lock.
Definition DevicePlayer.h:147
This class holds data associated with a frame medium channel.
Definition SerializerDevicePlayer.h:118
bool update(const IO::Serialization::MediaSerializer::DataSampleFrame &frameSample)
Updates the frame medium data with a new frame sample.
Media::PixelImageRef pixelImage_
The pixel image object.
Definition SerializerDevicePlayer.h:139
SharedAnyCamera camera_
The camera profile.
Definition SerializerDevicePlayer.h:142
This class implements a simple helper to ensure that there cannot be more than one active DevicePlaye...
Definition SerializerDevicePlayer.h:52
bool registerUsage()
Informs the manager that the player will be used.
Lock lock_
The manager's lock.
Definition SerializerDevicePlayer.h:81
void unregisterUsage()
Informs the manager that the player is not longer used.
This class implements a player for device objects based on Ocean's DataSerializer.
Definition SerializerDevicePlayer.h:45
bool start(const float speed=1.0f) override
Starts the replay.
bool isStarted() const override
Returns whether this player is currently started.
Definition SerializerDevicePlayer.h:507
void processDataSamplePositionTracker3DOF(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSamplePositionTracker3DOF sample.
~SerializerDevicePlayer() override
Destructs the device player.
static IO::Serialization::UniqueDataSample createDataSampleGPSTracker(const std::string &sampleType)
Factory function for creating DataSampleGPSTracker objects.
void processDataSampleGPSTracker(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleGPSTracker sample.
void processLookaheadSamples(const IO::Serialization::DataTimestamp &dataTimestamp, const double maxPlaybackTimestamp)
Processes samples within the lookahead window.
static Device * createPositionTracker3DOF(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationPositionTracker3DOF devices.
void processDataSampleGravityTracker3DOF(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleGravityTracker3DOF sample.
std::unordered_map< IO::Serialization::DataSerializer::ChannelId, DeviceRef > ChannelDeviceMap
Definition of a map mapping channel ids to device objects.
Definition SerializerDevicePlayer.h:92
DeviceRef ensureDevice(const IO::Serialization::DataSerializer::ChannelId channelId, const std::string &deviceName, const Device::DeviceType &deviceType)
Creates or retrieves a device for a specific channel.
Media::FrameMediumRefs frameMediums() override
Returns all media objects which have been created based on the recording.
Definition SerializerDevicePlayer.h:500
ChannelDeviceMap channelDeviceMap_
The map associating channel ids with device objects.
Definition SerializerDevicePlayer.h:464
static Device * createTracker6DOF(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationTracker6DOF devices.
std::unordered_map< IO::Serialization::DataSerializer::ChannelId, Media::PixelImageRef > ChannelPixelImageMap
Definition of a map mapping channel ids to PixelImage objects.
Definition SerializerDevicePlayer.h:97
bool isValid() const override
Returns whether this player holds a valid recording.
void processSample(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a sample and forwards it to the appropriate device.
void processDataSampleTracker6DOF(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleTracker6DOF sample.
static IO::Serialization::UniqueDataSample createDataSamplePositionTracker3DOF(const std::string &sampleType)
Factory function for creating DataSamplePositionTracker3DOF objects.
std::unique_ptr< IO::Serialization::FileInputDataSerializer > inputSerializer_
The input data serializer for reading the content.
Definition SerializerDevicePlayer.h:458
std::unordered_map< std::string, SampleProcessorFunction > SampleTypeMap
Definition of a map mapping sample type strings to specialized processing functions.
Definition SerializerDevicePlayer.h:107
double duration() const override
Returns the duration of the content when played with default speed.
Definition SerializerDevicePlayer.h:494
std::atomic_bool isStarted_
True, if the player is started.
Definition SerializerDevicePlayer.h:476
void processDataSampleOrientationTracker3DOF(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleOrientationTracker3DOF sample.
static IO::Serialization::UniqueDataSample createDataSampleTracker6DOF(const std::string &sampleType)
Factory function for creating DataSampleTracker6DOF objects.
static Device * createAccelerationSensor3DOF(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationAccelerationSensor3DOF devices.
static Device * createGyroSensor3DOF(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationGyroSensor3DOF devices.
SerializerDevicePlayer()=default
Creates a new device player.
Media::FrameMediumRefs frameMediums_
The FrameMedium objects receiving image content from the recording.
Definition SerializerDevicePlayer.h:470
void(SerializerDevicePlayer::*)(const IO::Serialization::DataSerializer::ChannelId, IO::Serialization::UniqueDataSample &&) SampleProcessorFunction
Definition of a function pointer for specialized sample processing functions.
Definition SerializerDevicePlayer.h:102
static IO::Serialization::UniqueDataSample createDataSampleFrame(const std::string &sampleType)
Factory function for creating SampleFrame objects.
void threadRun() override
The thread's run function in which the samples are read.
Timestamp playNextFrame() override
Plays the next frame of the recording, the player must be started with stop-motion mode.
static IO::Serialization::UniqueDataSample createDataSampleOrientationTracker3DOF(const std::string &sampleType)
Factory function for creating DataSampleOrientationTracker3DOF objects.
bool initializeDeviceFactories()
Initializes the device factories by registering factory functions for all supported sample types.
ChannelFrameMediumDataMap channelFrameMediumDataMap_
The map associating channel ids with FrameMediumData objects.
Definition SerializerDevicePlayer.h:467
std::deque< SamplePair > SampleQueue
Definition of a queue holding sample pairs.
Definition SerializerDevicePlayer.h:157
void processDataSampleGyroSensor3DOF(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleGyroSensor3DOF sample.
static IO::Serialization::UniqueDataSample createDataSampleAccelerationSensor3DOF(const std::string &sampleType)
Factory function for creating DataSampleAccelerationSensor3DOF objects.
void release()
Stops playback and releases the player.
SampleTypeMap sampleTypeMap_
Map associating sample type strings with specialized processing functions.
Definition SerializerDevicePlayer.h:482
static IO::Serialization::UniqueDataSample createDataSampleGravityTracker3DOF(const std::string &sampleType)
Factory function for creating DataSampleGravityTracker3DOF objects.
bool isPlaying() const
Returns whether this player is currently playing.
std::pair< IO::Serialization::DataSerializer::ChannelId, IO::Serialization::UniqueDataSample > SamplePair
Definition of a pair holding a channel id and a unique data sample.
Definition SerializerDevicePlayer.h:154
static IO::Serialization::UniqueDataSample createDataSampleGyroSensor3DOF(const std::string &sampleType)
Factory function for creating DataSampleGyroSensor3DOF objects.
bool initialize(const std::string &filename) override
Loads a new serialized file for replay.
static Device * createOrientationTracker3DOF(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationOrientationTracker3DOF devices.
std::unordered_map< IO::Serialization::DataSerializer::ChannelId, SampleProcessorFunction > ChannelProcessorMap
Definition of a map mapping channel ids to specialized processing functions.
Definition SerializerDevicePlayer.h:112
void processDataSampleFrame(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleFrame sample.
static Device * createGPSTracker(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationGPSTracker devices.
ChannelProcessorMap channelProcessorMap_
The map associating channel ids with specialized processing functions.
Definition SerializerDevicePlayer.h:473
TransformationResult transformation(const std::string &name, const Timestamp &timestamp, HomogenousMatrixD4 &matrix) override
Returns a specific transformation which is expected to be part of the recording.
std::unordered_map< IO::Serialization::DataSerializer::ChannelId, FrameMediumData > ChannelFrameMediumDataMap
Definition of a map mapping channel ids to FrameMediumData objects.
Definition SerializerDevicePlayer.h:151
void processDataSampleAccelerationSensor3DOF(const IO::Serialization::DataSerializer::ChannelId channelId, IO::Serialization::UniqueDataSample &&sample)
Processes a DataSampleAccelerationSensor3DOF sample.
static Device * createGravityTracker3DOF(const std::string &name, const Device::DeviceType &deviceType)
Factory function for creating SerializationGravityTracker3DOF devices.
uint32_t ChannelId
Definition of a channel id.
Definition DataSerializer.h:40
This class implements a data timestamp which can hold either a double or int64_t value.
Definition DataTimestamp.h:29
This class implements a sample for Ocean::Frame objects.
Definition MediaSerializer.h:48
This class implements a recursive lock object.
Definition Lock.h:31
This class implements a scoped lock object for recursive lock objects.
Definition Lock.h:147
This template class is the base class for all singleton objects.
Definition Singleton.h:71
This class implements a thread.
Definition Thread.h:115
This class implements a timestamp.
Definition Timestamp.h:63
std::unique_ptr< DataSample > UniqueDataSample
Definition of a unique pointer holding a DataSample.
Definition DataSample.h:39
std::shared_ptr< AnyCamera > SharedAnyCamera
Definition of a shared pointer holding an AnyCamera object with Scalar precision.
Definition AnyCamera.h:61
SmartMediumRef< PixelImage > PixelImageRef
Definition of a smart medium reference holding a pixel image object.
Definition PixelImage.h:28
std::vector< FrameMediumRef > FrameMediumRefs
Definition of a vector holding frame medium reference objects.
Definition FrameMedium.h:46
The namespace covering the entire Ocean framework.
Definition Accessor.h:15