13 #if defined(__GNUC__) // GCC compiler
14 # pragma GCC diagnostic push // Save warning levels for later restoration
15 # pragma GCC diagnostic ignored "-Wpragmas"
16 # pragma GCC diagnostic ignored "-Wsign-conversion"
17 # pragma GCC diagnostic ignored "-Wold-style-cast"
18 # pragma GCC diagnostic ignored "-Wdeprecated-copy"
19 # pragma GCC diagnostic ignored "-Wshadow"
20 # pragma GCC diagnostic ignored "-Wparentheses"
21 # pragma GCC diagnostic ignored "-Wcast-align"
22 # pragma GCC diagnostic ignored "-Wstrict-overflow"
23 # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
29 #if defined(__GNUC__) // GCC compiler
30 # pragma GCC diagnostic pop // Restore previous warning levels
44 :
VisionaryData(), m_dataSetsActive(), m_distanceByteDepth(0), m_intensityByteDepth(0), m_stateByteDepth(0)
64 std::istringstream ss(xmlString);
71 std::cout <<
"Reading XML tree in BLOB failed." << std::endl;
92 dataStreamTree.
get_child(
"CameraToWorldTransform"))
132 std::cout << __FUNCTION__ <<
": Invalid image size" << std::endl;
135 size_t dataSetslength = 0;
136 auto remainingSize = size;
143 const size_t numBytesState = numPixel *
static_cast<size_t>(
m_stateByteDepth);
144 const size_t headerSize = 4u + 8u + 2u;
146 if (remainingSize < headerSize)
148 std::cout <<
"Malformed data. Did not receive enough data to parse header of binary segment" << std::endl;
151 remainingSize -= headerSize;
156 const auto length = readUnalignLittleEndian<uint32_t>(&*itBuf);
158 if (dataSetslength > size)
160 std::cout <<
"Malformed data, length in depth map header does not match package size." << std::endl;
163 itBuf +=
sizeof(uint32_t);
166 itBuf +=
sizeof(uint64_t);
168 const auto version = readUnalignLittleEndian<uint16_t>(&*itBuf);
169 itBuf +=
sizeof(uint16_t);
175 const size_t extendedHeaderSize = 4u + 1u + 1u;
176 if (remainingSize < extendedHeaderSize)
178 std::cout <<
"Malformed data. Did not receive enough data to parse extended header of binary segment"
182 remainingSize -= extendedHeaderSize;
184 m_frameNum = readUnalignLittleEndian<uint32_t>(&*itBuf);
185 itBuf +=
sizeof(uint32_t);
188 itBuf +=
sizeof(uint8_t);
191 itBuf +=
sizeof(uint8_t);
200 const auto imageSetSize = (numBytesDistance + numBytesIntensity + numBytesState);
201 if (remainingSize < imageSetSize)
203 std::cout <<
"Malformed data. Did not receive enough data to parse images of binary segment" << std::endl;
206 remainingSize -= imageSetSize;
207 if (numBytesDistance != 0)
211 std::advance(itBuf, numBytesDistance);
217 if (numBytesIntensity != 0)
221 std::advance(itBuf, numBytesIntensity);
227 if (numBytesState != 0)
231 std::advance(itBuf, numBytesState);
238 const auto footerSize = (4u + 4u);
239 if (remainingSize < footerSize)
241 std::cout <<
"Malformed data. Did not receive enough data to parse footer of binary segment" << std::endl;
248 itBuf +=
sizeof(uint32_t);
250 const auto lengthCopy = readUnalignLittleEndian<uint32_t>(&*itBuf);
251 itBuf +=
sizeof(uint32_t);
255 std::cout <<
"Malformed data, length in header(" <<
length <<
") does not match package size(" << lengthCopy
256 <<
")." << std::endl;