JFJochFrameSerializer: Using CBORImage for mask and calibration + writing calibration in HDF5 file

This commit is contained in:
2023-06-28 17:14:09 +02:00
parent e472047839
commit 0904e1f198
8 changed files with 142 additions and 57 deletions
+4 -13
View File
@@ -441,19 +441,10 @@ void JFJochFrameDeserializer::ProcessPixelMaskElement(CborValue &value) {
cborErr(cbor_value_enter_container(&value, &map_value));
while (! cbor_value_at_end(&map_value)) {
auto key = GetCBORString(map_value);
CBORImage cbor_multidim_array;
GetCBORMultidimTypedArray(cbor_multidim_array, map_value);
if (cbor_multidim_array.size != cbor_multidim_array.xpixel * cbor_multidim_array.ypixel
* cbor_multidim_array.pixel_depth_bytes)
throw JFJochException(JFJochExceptionCategory::CBORError, "Pixel mask size mismatch");
if (cbor_multidim_array.pixel_depth_bytes != sizeof(uint32_t))
throw JFJochException(JFJochExceptionCategory::CBORError, "Pixel mask must be 32-bit");
std::vector<uint32_t> v(cbor_multidim_array.xpixel * cbor_multidim_array.ypixel);
memcpy(v.data(), cbor_multidim_array.data, cbor_multidim_array.size);
start_message.pixel_mask[key] = v;
CBORImage image;
image.channel = key;
GetCBORMultidimTypedArray(image, map_value);
start_message.pixel_mask.push_back(image);
}
cborErr(cbor_value_leave_container(&value, &map_value));
}