// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JUNGFRAUJOCH_FRAMETRANSFORMATION_H #define JUNGFRAUJOCH_FRAMETRANSFORMATION_H #include "../common/DiffractionExperiment.h" #include "JFJochCompressor.h" #include "../common/JFJochMessages.h" #include "../fpga/pcie_driver/jfjoch_fpga.h" class FrameTransformation { const DiffractionExperiment& experiment; JFJochBitShuffleCompressor compressor; std::vector precompression_buffer; std::vector compressed_buffer; std::vector err_value; const size_t pixel_depth; const CompressedImageMode image_mode; public: explicit FrameTransformation(const DiffractionExperiment &experiment); void ProcessModule(const DeviceOutput *output, int data_stream); void ProcessModule(const void *input, uint16_t module_number, int data_stream); void FillNotCollectedModule(uint16_t module_number, int data_stream); CompressedImage GetCompressedImage(); size_t CompressImage(void *output); const void *GetImage() const; }; #endif //JUNGFRAUJOCH_FRAMETRANSFORMATION_H