diff --git a/common/JFJochMessages.h b/common/JFJochMessages.h index 0bbedfda..3d25da43 100644 --- a/common/JFJochMessages.h +++ b/common/JFJochMessages.h @@ -295,6 +295,8 @@ struct EndMessage { std::optional rotation_lattice_type; std::optional rotation_lattice; + + std::vector scale_factor; }; struct MetadataMessage { diff --git a/frame_serialize/CBORStream2Deserializer.cpp b/frame_serialize/CBORStream2Deserializer.cpp index b265e51d..036daf00 100644 --- a/frame_serialize/CBORStream2Deserializer.cpp +++ b/frame_serialize/CBORStream2Deserializer.cpp @@ -1261,6 +1261,8 @@ namespace { message.bkg_estimate = GetCBORFloat(value); else if (key == "indexing_rate") message.indexing_rate = GetCBORFloat(value); + else if (key == "image_scale_factor") + GetCBORFloatArray(value, message.scale_factor); else if (key == "rotation_lattice") { std::vector tmp; GetCBORFloatArray(value, tmp); diff --git a/frame_serialize/CBORStream2Serializer.cpp b/frame_serialize/CBORStream2Serializer.cpp index fd2d8212..16e8e2c9 100644 --- a/frame_serialize/CBORStream2Serializer.cpp +++ b/frame_serialize/CBORStream2Serializer.cpp @@ -676,6 +676,7 @@ void CBORStream2Serializer::SerializeSequenceEnd(const EndMessage& message) { CBOR_ENC(mapEncoder, "rotation_lattice_type", message.rotation_lattice_type); CBOR_ENC(mapEncoder, "rotation_lattice", message.rotation_lattice->GetVector()); + CBOR_ENC(mapEncoder, "image_scale_factor", message.scale_factor); cborErr(cbor_encoder_close_container(&encoder, &mapEncoder)); curr_size = cbor_encoder_get_buffer_size(&encoder, buffer); diff --git a/writer/HDF5NXmx.cpp b/writer/HDF5NXmx.cpp index ce60cab4..15cac4ab 100644 --- a/writer/HDF5NXmx.cpp +++ b/writer/HDF5NXmx.cpp @@ -711,6 +711,9 @@ void NXmx::Finalize(const EndMessage &end) { if (end.bkg_estimate) { SaveScalar(*hdf5_file, "/entry/MX/bkgEstimateMean", end.bkg_estimate.value()); } + + if (!end.scale_factor.empty()) + SaveVector(*hdf5_file, "/entry/MX/imageScaleFactor", end.scale_factor); } void NXmx::UserData(const StartMessage &start) {