From 188d50cbbf958819e3cbec8c6ddad6ae5c9d4d1a Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Mon, 18 May 2020 17:19:07 +0200 Subject: [PATCH] Adjust compression header in sf_writer --- core-buffer/src/WriterZmqReceiver.cpp | 9 ++++++++- core-buffer/test/test_WriterZmqReceiver.cpp | 3 ++- sf-buffer/src/sf_writer.cpp | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/core-buffer/src/WriterZmqReceiver.cpp b/core-buffer/src/WriterZmqReceiver.cpp index 66e0cac..4528dc2 100644 --- a/core-buffer/src/WriterZmqReceiver.cpp +++ b/core-buffer/src/WriterZmqReceiver.cpp @@ -1,4 +1,5 @@ #include "WriterZmqReceiver.hpp" +#include "bitshuffle/bitshuffle.h" #include "zmq.h" #include "date.h" #include @@ -59,7 +60,13 @@ void WriterZmqReceiver::get_next_image( image_metadata->is_good_frame = 1; bool image_metadata_init = false; - size_t image_buffer_offset = 0; + // Set compression header. + bshuf_write_uint64_BE(image_buffer, + MODULE_N_BYTES * n_modules_); + bshuf_write_uint32_BE(image_buffer + 8, + MODULE_N_PIXELS * PIXEL_N_BYTES); + + size_t image_buffer_offset = BSHUF_LZ4_HEADER_BYTES; for (size_t i_module = 0; i_module < n_modules_; i_module++) { diff --git a/core-buffer/test/test_WriterZmqReceiver.cpp b/core-buffer/test/test_WriterZmqReceiver.cpp index 4664239..7dfe06a 100644 --- a/core-buffer/test/test_WriterZmqReceiver.cpp +++ b/core-buffer/test/test_WriterZmqReceiver.cpp @@ -68,5 +68,6 @@ TEST(WriterZmqReceiver, basic_test) EXPECT_EQ(pulse_id, image_metadata.pulse_id); EXPECT_EQ(image_metadata.is_good_frame, 1); EXPECT_EQ(image_metadata.daq_rec, 4); - EXPECT_EQ(image_metadata.compressed_image_size, 5000*n_modules); + EXPECT_EQ(image_metadata.compressed_image_size, + 5000*n_modules+BSHUF_LZ4_HEADER_BYTES); } \ No newline at end of file diff --git a/sf-buffer/src/sf_writer.cpp b/sf-buffer/src/sf_writer.cpp index 5b7a240..170b5c8 100644 --- a/sf-buffer/src/sf_writer.cpp +++ b/sf-buffer/src/sf_writer.cpp @@ -91,7 +91,8 @@ int main (int argc, char *argv[]) MODULE_N_PIXELS, PIXEL_N_BYTES, MODULE_N_PIXELS); FastQueue queue( - compress_frame_size * n_modules, WRITER_FASTQUEUE_N_SLOTS); + (compress_frame_size * n_modules) + BSHUF_LZ4_HEADER_BYTES, + WRITER_FASTQUEUE_N_SLOTS); auto ctx = zmq_ctx_new(); zmq_ctx_set (ctx, ZMQ_IO_THREADS, WRITER_ZMQ_IO_THREADS);