JFJochFrameSerializer: Using CBORImage for mask and calibration + writing calibration in HDF5 file
This commit is contained in:
+57
-11
@@ -62,7 +62,6 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
.rad_int_bin_to_q = {0.1, 0.2, 0.3, 0.5},
|
||||
.rad_int_solid_angle_corr = {10, 20, 30, 50}
|
||||
};
|
||||
message.pixel_mask["sc0"] = std::vector<uint32_t>(456*457, 15);
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
|
||||
@@ -72,7 +71,6 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
|
||||
StartMessage output_message;
|
||||
REQUIRE_NOTHROW(output_message = deserializer.GetStartMessage());
|
||||
REQUIRE(output_message.pixel_mask.contains("sc0"));
|
||||
CHECK(output_message.data_file_count == message.data_file_count);
|
||||
CHECK(output_message.detector_distance == Approx(message.detector_distance));
|
||||
CHECK(output_message.beam_center_x == Approx(message.beam_center_x));
|
||||
@@ -91,7 +89,6 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
CHECK(output_message.pixel_size_y == Approx(message.pixel_size_y));
|
||||
CHECK(output_message.sensor_thickness == Approx(message.sensor_thickness));
|
||||
CHECK(output_message.sensor_material == message.sensor_material);
|
||||
CHECK(output_message.pixel_mask == message.pixel_mask);
|
||||
CHECK(output_message.pixel_mask_enabled == message.pixel_mask_enabled);
|
||||
CHECK(output_message.compression_algorithm == message.compression_algorithm);
|
||||
CHECK(output_message.compression_block_size == message.compression_block_size);
|
||||
@@ -127,6 +124,42 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_PixelMask", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
JFJochFrameSerializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<uint32_t> mask(456*457, 15);
|
||||
|
||||
CBORImage image_mask {
|
||||
.data = reinterpret_cast<uint8_t *>(mask.data()),
|
||||
.size = 456 * 457 * sizeof(uint32_t),
|
||||
.xpixel = 456,
|
||||
.ypixel = 457,
|
||||
.pixel_depth_bytes = 4,
|
||||
.pixel_is_signed = false,
|
||||
.pixel_is_float = false,
|
||||
.algorithm = CompressionAlgorithm::NO_COMPRESSION,
|
||||
.channel = "sc0"
|
||||
};
|
||||
|
||||
StartMessage message {};
|
||||
|
||||
message.AddPixelMask(image_mask);
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
|
||||
JFJochFrameDeserializer deserializer;
|
||||
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
|
||||
REQUIRE(deserializer.GetType() == JFJochFrameDeserializer::Type::START);
|
||||
|
||||
StartMessage output_message;
|
||||
REQUIRE_NOTHROW(output_message = deserializer.GetStartMessage());
|
||||
REQUIRE(output_message.pixel_mask.size() == 1);
|
||||
CHECK(!output_message.pixel_mask[0].pixel_is_float);
|
||||
CHECK(output_message.pixel_mask[0].xpixel == 456);
|
||||
CHECK(output_message.pixel_mask[0].ypixel == 457);
|
||||
CHECK(output_message.pixel_mask[0].channel == "sc0");
|
||||
CHECK(memcmp(output_message.pixel_mask[0].data, mask.data(), mask.size() * sizeof(float)) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_Calibration", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
@@ -152,7 +185,6 @@ TEST_CASE("CBORSerialize_Start_Calibration", "[CBOR]") {
|
||||
.channel = "calib1"
|
||||
};
|
||||
|
||||
|
||||
CBORImage image2 {
|
||||
.data = reinterpret_cast<uint8_t *>(calib2.data()),
|
||||
.size = 16 * 16 * sizeof(float),
|
||||
@@ -165,10 +197,10 @@ TEST_CASE("CBORSerialize_Start_Calibration", "[CBOR]") {
|
||||
.channel = "calib2"
|
||||
};
|
||||
|
||||
StartMessage message {
|
||||
.calibration = {image2, image1}
|
||||
};
|
||||
StartMessage message {};
|
||||
|
||||
message.AddCalibration(image2);
|
||||
message.AddCalibration(image1);
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
|
||||
JFJochFrameDeserializer deserializer;
|
||||
@@ -615,7 +647,21 @@ inline bool CmpString(const char *str1, const std::string& str2) {
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_stream2", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
JFJochFrameSerializer serializer(buffer.data(), buffer.size());
|
||||
JFJochFrameSerializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<uint32_t> mask(456*457, 15);
|
||||
|
||||
CBORImage image_mask {
|
||||
.data = reinterpret_cast<uint8_t *>(mask.data()),
|
||||
.size = 456 * 457 * sizeof(uint32_t),
|
||||
.xpixel = 456,
|
||||
.ypixel = 457,
|
||||
.pixel_depth_bytes = 4,
|
||||
.pixel_is_signed = false,
|
||||
.pixel_is_float = false,
|
||||
.algorithm = CompressionAlgorithm::NO_COMPRESSION,
|
||||
.channel = "sc0"
|
||||
};
|
||||
|
||||
StartMessage message {
|
||||
.data_file_count = 3,
|
||||
@@ -664,7 +710,8 @@ JFJochFrameSerializer serializer(buffer.data(), buffer.size());
|
||||
.rad_int_bin_number = 35,
|
||||
.summation = 567
|
||||
};
|
||||
message.pixel_mask["sc0"] = std::vector<uint32_t>(456*457, 15);
|
||||
|
||||
message.AddPixelMask(image_mask);
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
|
||||
@@ -693,8 +740,7 @@ JFJochFrameSerializer serializer(buffer.data(), buffer.size());
|
||||
CHECK(msg2->pixel_mask.ptr[0].pixel_mask.dim[0] == 457);
|
||||
CHECK(msg2->pixel_mask.ptr[0].pixel_mask.dim[1] == 456);
|
||||
CHECK(msg2->pixel_mask.ptr[0].pixel_mask.array.data.len == 456 * 457 * sizeof(uint32_t));
|
||||
CHECK(memcmp(msg2->pixel_mask.ptr[0].pixel_mask.array.data.ptr, message.pixel_mask["sc0"].data(),
|
||||
456 * 457 * sizeof(uint32_t)) == 0);
|
||||
CHECK(memcmp(msg2->pixel_mask.ptr[0].pixel_mask.array.data.ptr, mask.data(), 456 * 457 * sizeof(uint32_t)) == 0);
|
||||
CHECK(msg2->pixel_mask.ptr[0].pixel_mask.array.tag == TagUnsignedInt32BitLE);
|
||||
stream2_free_msg(msg);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user