diff --git a/std-det-writer/include/JFH5Writer.hpp b/std-det-writer/include/JFH5Writer.hpp index 95e05ee..2702f4e 100644 --- a/std-det-writer/include/JFH5Writer.hpp +++ b/std-det-writer/include/JFH5Writer.hpp @@ -38,11 +38,11 @@ public: ~JFH5Writer(); void open_run(const std::string& output_file, - const int64_t run_id, - const uint32_t n_images, - const uint32_t image_y_size, - const uint32_t image_x_size, - const uint32_t bits_per_pixel); + const int run_id, + const int n_images, + const int image_y_size, + const int image_x_size, + const int bits_per_pixel); void close_run(); void write_data(const int64_t run_id, @@ -51,7 +51,7 @@ public: void write_meta(const int64_t run_id, const uint32_t index, - const ImageMetadata& meta); + const ImageMetadata* meta); }; #endif //JF_LIVE_WRITER_HPP diff --git a/std-det-writer/src/JFH5Writer.cpp b/std-det-writer/src/JFH5Writer.cpp index 2af43ad..21879bd 100644 --- a/std-det-writer/src/JFH5Writer.cpp +++ b/std-det-writer/src/JFH5Writer.cpp @@ -42,11 +42,11 @@ hid_t JFH5Writer::get_datatype(const int bits_per_pixel) } void JFH5Writer::open_run(const string& output_file, - const int64_t run_id, - const uint32_t n_images, - const uint32_t image_y_size, - const uint32_t image_x_size, - const uint32_t bits_per_pixel) + const int run_id, + const int n_images, + const int image_y_size, + const int image_x_size, + const int dtype) { close_run(); @@ -233,7 +233,7 @@ void JFH5Writer::write_data( } void JFH5Writer::write_meta( - const int64_t run_id, const uint32_t index, const ImageMetadata& meta) + const int64_t run_id, const uint32_t index, const ImageMetadata* meta) { if (run_id != current_run_id_) { throw runtime_error("Invalid run_id."); @@ -260,12 +260,12 @@ void JFH5Writer::write_meta( } if (H5Dwrite(image_id_dataset_, H5T_NATIVE_UINT64, - ram_ds, file_ds, H5P_DEFAULT, &(meta.id)) < 0) { + ram_ds, file_ds, H5P_DEFAULT, &(meta->id)) < 0) { throw runtime_error("Cannot write data to pulse_id dataset."); } if (H5Dwrite(status_dataset_, H5T_NATIVE_UINT64, - ram_ds, file_ds, H5P_DEFAULT, &(meta.status)) < 0) { + ram_ds, file_ds, H5P_DEFAULT, &(meta->status)) < 0) { throw runtime_error("Cannot write data to is_good_image dataset."); } diff --git a/std-det-writer/src/main.cpp b/std-det-writer/src/main.cpp index d77e64e..b9a39e9 100644 --- a/std-det-writer/src/main.cpp +++ b/std-det-writer/src/main.cpp @@ -54,11 +54,15 @@ int main (int argc, char *argv[]) // i_image == 0 -> we have a new run. if (meta.i_image == 0) { - writer.open_run(meta.run_id, + auto image_meta = (ImageMetadata*) + image_buffer.get_slot_meta(meta.image_id); + + writer.open_run(meta.output_file, + meta.run_id, meta.n_images, - meta.image_y_size, - meta.image_x_size, - meta.bits_per_pixel); + image_meta->height, + image_meta->width, + image_meta->dtype); stats.start_run(meta); } @@ -73,7 +77,7 @@ int main (int argc, char *argv[]) // Fair distribution of images among writers. if (meta.i_image % n_writers == i_writer) { - char* data = image_buffer.get_slot_data(meta.image_metadata.id); + char* data = image_buffer.get_slot_data(meta.image_id); stats.start_image_write(); writer.write_data(meta.run_id, meta.i_image, data); @@ -82,7 +86,9 @@ int main (int argc, char *argv[]) // Only the first instance writes metadata. if (i_writer == 0) { - writer.write_meta(meta.run_id, meta.i_image, meta.image_metadata); + auto image_meta = (ImageMetadata*) + image_buffer.get_slot_meta(meta.image_id); + writer.write_meta(meta.run_id, meta.i_image, image_meta); } }