LibMultiSense
LibMultiSense Documentation
ImageMessage.hh
Go to the documentation of this file.
1
37
#ifndef LibMultiSense_ImageMessage
38
#define LibMultiSense_ImageMessage
39
40
#include <typeinfo>
41
#include <cmath>
42
43
#include "
utility/Portability.hh
"
44
45
namespace
crl
{
46
namespace
multisense
{
47
namespace
details {
48
namespace
wire {
49
50
class
WIRE_HEADER_ATTRIBS_
ImageHeader
{
51
public
:
52
53
static
CRL_CONSTEXPR
IdType
ID =
ID_DATA_IMAGE
;
54
static
CRL_CONSTEXPR
VersionType
VERSION = 3;
55
56
#ifdef SENSORPOD_FIRMWARE
57
IdType
id;
58
VersionType
version;
59
#endif // SENSORPOD_FIRMWARE
60
61
uint32_t
source
;
62
uint32_t
bitsPerPixel
;
63
int64_t
frameId
;
64
uint16_t
width
;
65
uint16_t
height
;
66
uint32_t
exposure
;
67
float
gain
;
68
uint32_t
sourceExtended
;
69
70
ImageHeader
()
71
:
72
#ifdef SENSORDPOD_FIRMWARE
73
id(ID),
74
version(VERSION),
75
#endif
// SENSORPOD_FIRMWARE
76
source(0),
77
bitsPerPixel(0),
78
frameId(0),
79
width(0),
80
height(0),
81
exposure(0),
82
gain(0.0),
83
sourceExtended(0)
84
{};
85
};
86
87
#ifndef SENSORPOD_FIRMWARE
88
89
class
Image
:
public
ImageHeader
{
90
public
:
91
92
void
*
dataP
;
93
94
//
95
// Constructors
96
97
Image
(
utility::BufferStreamReader
&r,
VersionType
v) {
serialize
(r,v);};
98
Image
() :
dataP
(NULL) {};
99
100
//
101
// Serialization routine
102
103
template
<
class
Archive>
104
void
serialize
(Archive& message,
105
const
VersionType
version)
106
{
107
message &
source
;
108
message &
bitsPerPixel
;
109
message &
frameId
;
110
message &
width
;
111
message &
height
;
112
113
const
uint32_t imageSize =
static_cast<
uint32_t
>
(std::ceil(((
double
)
bitsPerPixel
/ 8.0) *
width
*
height
));
114
115
if
(
typeid
(Archive) ==
typeid
(
utility::BufferStreamWriter
)) {
116
117
message.write(
dataP
, imageSize);
118
119
}
else
{
120
121
dataP
= message.peek();
122
message.seek(message.tell() + imageSize);
123
}
124
125
if
(version >= 2)
126
{
127
message &
exposure
;
128
message &
gain
;
129
}
130
else
131
{
132
exposure
= 0;
133
gain
=
Default_Gain
;
134
}
135
136
if
(version >= 3)
137
{
138
message &
sourceExtended
;
139
}
140
else
141
{
142
sourceExtended
= 0;
143
}
144
}
145
};
146
147
#endif // !SENSORPOD_FIRMWARE
148
149
}}}}
// namespaces
150
151
#endif
crl::multisense::details::wire::Image
Definition:
ImageMessage.hh:89
crl::multisense::details::wire::ImageHeader::ImageHeader
ImageHeader()
Definition:
ImageMessage.hh:70
crl::multisense::details::wire::ImageHeader::gain
float gain
Definition:
ImageMessage.hh:67
Portability.hh
WIRE_HEADER_ATTRIBS_
#define WIRE_HEADER_ATTRIBS_
Definition:
Protocol.hh:65
CRL_CONSTEXPR
#define CRL_CONSTEXPR
Definition:
Portability.hh:49
crl::multisense::details::wire::ImageHeader::exposure
uint32_t exposure
Definition:
ImageMessage.hh:66
crl::multisense::details::wire::ImageHeader::frameId
int64_t frameId
Definition:
ImageMessage.hh:63
crl::multisense::details::wire::Image::serialize
void serialize(Archive &message, const VersionType version)
Definition:
ImageMessage.hh:104
crl
Definition:
BufferStream.hh:51
crl::multisense::details::wire::ImageHeader::bitsPerPixel
uint32_t bitsPerPixel
Definition:
ImageMessage.hh:62
crl::multisense::details::wire::ImageHeader::height
uint16_t height
Definition:
ImageMessage.hh:65
crl::multisense::details::wire::VersionType
uint16_t VersionType
Definition:
Protocol.hh:137
crl::multisense::details::utility::BufferStreamWriter
Definition:
BufferStream.hh:259
crl::multisense::details::wire::ImageHeader::width
uint16_t width
Definition:
ImageMessage.hh:64
crl::multisense::details::wire::ImageHeader::source
uint32_t source
Definition:
ImageMessage.hh:61
crl::multisense::details::wire::Image::dataP
void * dataP
Definition:
ImageMessage.hh:92
crl::multisense::details::wire::ID_DATA_IMAGE
static CRL_CONSTEXPR IdType ID_DATA_IMAGE
Definition:
Protocol.hh:217
crl::multisense::details::utility::BufferStreamReader
Definition:
BufferStream.hh:192
multisense
Definition:
MultiSenseChannel.hh:44
crl::multisense::details::wire::Default_Gain
static CRL_CONSTEXPR float Default_Gain
Definition:
Protocol.hh:335
crl::multisense::details::wire::ImageHeader::sourceExtended
uint32_t sourceExtended
Definition:
ImageMessage.hh:68
crl::multisense::details::wire::ImageHeader
Definition:
ImageMessage.hh:50
crl::multisense::details::wire::IdType
uint16_t IdType
Definition:
Protocol.hh:136
crl::multisense::details::wire::Image::Image
Image(utility::BufferStreamReader &r, VersionType v)
Definition:
ImageMessage.hh:97
crl::multisense::details::wire::Image::Image
Image()
Definition:
ImageMessage.hh:98
source
Wire
include
wire
ImageMessage.hh
Generated on Tue Mar 18 2025 14:54:04 for LibMultiSense by
1.8.17