Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
stream.h
Go to the documentation of this file.
1// License: Apache 2.0. See LICENSE file in root directory.
2// Copyright(c) 2015 Intel Corporation. All Rights Reserved.
3
4#pragma once
5#ifndef LIBREALSENSE_STREAM_H
6#define LIBREALSENSE_STREAM_H
7
8#include "types.h"
9
10#include <memory> // For shared_ptr
11
12namespace rsimpl
13{
15 {
16 stream_interface(calibration_validator in_validator, rs_stream in_stream) : stream(in_stream), validator(in_validator){};
17
18 virtual rs_extrinsics get_extrinsics_to(const rs_stream_interface & other) const override;
19 virtual rsimpl::pose get_pose() const = 0;
20 virtual int get_mode_count() const override { return 0; }
21 virtual void get_mode(int /*mode*/, int * /*w*/, int * /*h*/, rs_format * /*f*/, int * /*fps*/) const override { throw std::logic_error("no modes"); }
22 virtual rs_stream get_stream_type()const override { return stream; }
23
25
26 protected:
28 };
29
30 class frame_archive;
32
33 struct native_stream final : public stream_interface
34 {
36
37 std::vector<subdevice_mode_selection> modes;
38 std::shared_ptr<syncronizing_archive> archive;
39
41
42 pose get_pose() const override { return config.info.stream_poses[stream]; }
43 float get_depth_scale() const override { return config.depth_scale; }
44 int get_mode_count() const override { return (int)modes.size(); }
45 void get_mode(int mode, int * w, int * h, rs_format * f, int * fps) const override;
46
47 bool is_enabled() const override;
49 rs_intrinsics get_intrinsics() const override;
51 rs_format get_format() const override { return get_mode().get_format(stream); }
52 int get_framerate() const override { return get_mode().get_framerate(); }
53
56 unsigned long long get_frame_number() const override;
57 double get_frame_timestamp() const override;
58 long long get_frame_system_time() const override;
59 const uint8_t * get_frame_data() const override;
60
61 int get_frame_stride() const override;
62 int get_frame_bpp() const override;
63 };
64
65 class point_stream final : public stream_interface
66 {
67 const stream_interface & source;
68 mutable std::vector<uint8_t> image;
69 mutable unsigned long long number;
70 public:
72
73 pose get_pose() const override { return {{{1,0,0},{0,1,0},{0,0,1}}, source.get_pose().position}; }
74 float get_depth_scale() const override { return source.get_depth_scale(); }
75
76 bool is_enabled() const override { return source.is_enabled(); }
77 rs_intrinsics get_intrinsics() const override { return source.get_intrinsics(); }
78 rs_intrinsics get_rectified_intrinsics() const override { return source.get_rectified_intrinsics(); }
79 rs_format get_format() const override { return RS_FORMAT_XYZ32F; }
80 int get_framerate() const override { return source.get_framerate(); }
81
82 double get_frame_metadata(rs_frame_metadata frame_metadata) const override { return source.get_frame_metadata(frame_metadata); }
83 bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override { return source.supports_frame_metadata(frame_metadata); }
84 unsigned long long get_frame_number() const override { return source.get_frame_number(); }
85 double get_frame_timestamp() const override{ return source.get_frame_timestamp(); }
86 long long get_frame_system_time() const override { return source.get_frame_system_time(); }
87 const uint8_t * get_frame_data() const override;
88
89 int get_frame_stride() const override { return source.get_frame_stride(); }
90 int get_frame_bpp() const override { return source.get_frame_bpp(); }
91 };
92
94 {
95 const stream_interface & source;
96 mutable std::vector<int> table;
97 mutable std::vector<uint8_t> image;
98 mutable unsigned long long number;
99 public:
101
102 pose get_pose() const override { return {{{1,0,0},{0,1,0},{0,0,1}}, source.get_pose().position}; }
103 float get_depth_scale() const override { return source.get_depth_scale(); }
104
105 bool is_enabled() const override { return source.is_enabled(); }
106 rs_intrinsics get_intrinsics() const override { return source.get_rectified_intrinsics(); }
107 rs_intrinsics get_rectified_intrinsics() const override { return source.get_rectified_intrinsics(); }
108 rs_format get_format() const override { return source.get_format(); }
109 int get_framerate() const override { return source.get_framerate(); }
110
111 double get_frame_metadata(rs_frame_metadata frame_metadata) const override { return source.get_frame_metadata(frame_metadata); }
112 bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override { return source.supports_frame_metadata(frame_metadata); }
113 unsigned long long get_frame_number() const override { return source.get_frame_number(); }
114 double get_frame_timestamp() const override { return source.get_frame_timestamp(); }
115 long long get_frame_system_time() const override { return source.get_frame_system_time(); }
116 const uint8_t * get_frame_data() const override;
117
118 int get_frame_stride() const override { return source.get_frame_stride(); }
119 int get_frame_bpp() const override { return source.get_frame_bpp(); }
120 };
121
122 class aligned_stream final : public stream_interface
123 {
124 const stream_interface & from, & to;
125 mutable std::vector<uint8_t> image;
126 mutable unsigned long long number;
127 public:
129
130 pose get_pose() const override { return to.get_pose(); }
131 float get_depth_scale() const override { return to.get_depth_scale(); }
132
133 bool is_enabled() const override { return from.is_enabled() && to.is_enabled(); }
134 rs_intrinsics get_intrinsics() const override { return to.get_intrinsics(); }
135 rs_intrinsics get_rectified_intrinsics() const override { return to.get_rectified_intrinsics(); }
136 rs_format get_format() const override { return from.get_format(); }
137 int get_framerate() const override { return from.get_framerate(); }
138
139 double get_frame_metadata(rs_frame_metadata frame_metadata) const override { return from.get_frame_metadata(frame_metadata); }
140 bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override { return from.supports_frame_metadata(frame_metadata); }
141 unsigned long long get_frame_number() const override { return from.get_frame_number(); }
142 double get_frame_timestamp() const override { return from.get_frame_timestamp(); }
143 long long get_frame_system_time() const override { return from.get_frame_system_time(); }
144 const unsigned char * get_frame_data() const override;
145
146 int get_frame_stride() const override { return from.get_frame_stride(); }
147 int get_frame_bpp() const override { return from.get_frame_bpp(); }
148 };
149}
150
151#endif
Definition: stream.h:123
const unsigned char * get_frame_data() const override
pose get_pose() const override
Definition: stream.h:130
int get_frame_stride() const override
Definition: stream.h:146
float get_depth_scale() const override
Definition: stream.h:131
rs_intrinsics get_rectified_intrinsics() const override
Definition: stream.h:135
long long get_frame_system_time() const override
Definition: stream.h:143
rs_intrinsics get_intrinsics() const override
Definition: stream.h:134
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
Definition: stream.h:140
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
Definition: stream.h:139
double get_frame_timestamp() const override
Definition: stream.h:142
bool is_enabled() const override
Definition: stream.h:133
int get_framerate() const override
Definition: stream.h:137
unsigned long long get_frame_number() const override
Definition: stream.h:141
rs_format get_format() const override
Definition: stream.h:136
aligned_stream(const stream_interface &from, const stream_interface &to)
Definition: stream.h:128
int get_frame_bpp() const override
Definition: stream.h:147
Definition: types.h:629
Definition: archive.h:16
Definition: stream.h:66
rs_intrinsics get_intrinsics() const override
Definition: stream.h:77
double get_frame_timestamp() const override
Definition: stream.h:85
rs_format get_format() const override
Definition: stream.h:79
bool is_enabled() const override
Definition: stream.h:76
float get_depth_scale() const override
Definition: stream.h:74
unsigned long long get_frame_number() const override
Definition: stream.h:84
rs_intrinsics get_rectified_intrinsics() const override
Definition: stream.h:78
const uint8_t * get_frame_data() const override
point_stream(const stream_interface &source)
Definition: stream.h:71
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
Definition: stream.h:83
int get_frame_bpp() const override
Definition: stream.h:90
pose get_pose() const override
Definition: stream.h:73
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
Definition: stream.h:82
int get_frame_stride() const override
Definition: stream.h:89
int get_framerate() const override
Definition: stream.h:80
long long get_frame_system_time() const override
Definition: stream.h:86
Definition: stream.h:94
rs_intrinsics get_rectified_intrinsics() const override
Definition: stream.h:107
unsigned long long get_frame_number() const override
Definition: stream.h:113
rs_intrinsics get_intrinsics() const override
Definition: stream.h:106
bool is_enabled() const override
Definition: stream.h:105
long long get_frame_system_time() const override
Definition: stream.h:115
rectified_stream(const stream_interface &source)
Definition: stream.h:100
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
Definition: stream.h:112
const uint8_t * get_frame_data() const override
int get_frame_bpp() const override
Definition: stream.h:119
float get_depth_scale() const override
Definition: stream.h:103
pose get_pose() const override
Definition: stream.h:102
int get_frame_stride() const override
Definition: stream.h:118
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
Definition: stream.h:111
int get_framerate() const override
Definition: stream.h:109
double get_frame_timestamp() const override
Definition: stream.h:114
rs_format get_format() const override
Definition: stream.h:108
Definition: sync.h:52
frame_metadata
Types of value provided from the device with each frame.
Definition: rs.hpp:161
Definition: archive.h:13
rs_stream
Streams are different types of data provided by RealSense devices.
Definition: rs.h:34
@ RS_STREAM_POINTS
Definition: rs.h:40
@ RS_STREAM_RECTIFIED_COLOR
Definition: rs.h:41
@ RS_STREAM_COLOR_ALIGNED_TO_DEPTH
Definition: rs.h:42
rs_frame_metadata
Types of value provided from the device with each frame.
Definition: rs.h:204
rs_format
Formats: defines how each stream can be encoded.
Definition: rs.h:54
@ RS_FORMAT_XYZ32F
Definition: rs.h:58
Cross-stream extrinsics: encode the topology describing how the different devices are connected.
Definition: rs.h:333
Video stream intrinsics.
Definition: rs.h:301
Definition: rscore.hpp:17
Definition: types.h:449
const static_device_info info
Definition: types.h:450
float depth_scale
Definition: types.h:456
Definition: stream.h:34
std::shared_ptr< syncronizing_archive > archive
Definition: stream.h:38
const device_config & config
Definition: stream.h:35
rs_intrinsics get_intrinsics() const override
rs_intrinsics get_rectified_intrinsics() const override
float get_depth_scale() const override
Definition: stream.h:43
int get_frame_stride() const override
int get_mode_count() const override
Definition: stream.h:44
subdevice_mode_selection get_mode() const
unsigned long long get_frame_number() const override
bool is_enabled() const override
rs_format get_format() const override
Definition: stream.h:51
pose get_pose() const override
Definition: stream.h:42
void get_mode(int mode, int *w, int *h, rs_format *f, int *fps) const override
const uint8_t * get_frame_data() const override
double get_frame_timestamp() const override
std::vector< subdevice_mode_selection > modes
Definition: stream.h:37
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
native_stream(device_config &config, rs_stream stream, calibration_validator in_validator)
long long get_frame_system_time() const override
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
int get_framerate() const override
Definition: stream.h:52
int get_frame_bpp() const override
Definition: types.h:112
pose stream_poses[RS_STREAM_NATIVE_COUNT]
Definition: types.h:277
Definition: stream.h:15
virtual rs_stream get_stream_type() const override
Definition: stream.h:22
virtual rsimpl::pose get_pose() const =0
virtual rs_extrinsics get_extrinsics_to(const rs_stream_interface &other) const override
stream_interface(calibration_validator in_validator, rs_stream in_stream)
Definition: stream.h:16
virtual void get_mode(int, int *, int *, rs_format *, int *) const override
Definition: stream.h:21
const rs_stream stream
Definition: stream.h:24
calibration_validator validator
Definition: stream.h:27
virtual int get_mode_count() const override
Definition: stream.h:20
Definition: types.h:294
rs_format get_format(rs_stream stream) const
Definition: types.h:316
int get_framerate() const
Definition: types.h:311