Files
Jungfraujoch/common/FrameTransformation.h

37 lines
1.3 KiB
C++

// Copyright (2019-2022) Paul Scherrer Institute
// SPDX-License-Identifier: GPL-3.0-or-later
#ifndef JUNGFRAUJOCH_FRAMETRANSFORMATION_H
#define JUNGFRAUJOCH_FRAMETRANSFORMATION_H
#include "DiffractionExperiment.h"
#include "../compression/JFJochCompressor.h"
#include "../jungfrau/JFConversion.h"
class FrameTransformation {
const DiffractionExperiment& experiment;
JFJochBitShuffleCompressor compressor;
std::vector<std::vector<int32_t> > summation_buffer;
std::vector<char> precompression_buffer;
std::vector<int16_t> image16bit;
const size_t summation;
const size_t pixel_depth;
std::vector<char> full_image_buffer;
bool binning_2x2;
void PackSummation(); // transfer summed image to converted coordinates, clear summation buffer, no compression
void Generate16BitPreview();
public:
FrameTransformation(const DiffractionExperiment &experiment);
void ProcessModule(const int16_t *input, uint16_t module_number, int data_stream);
void ProcessModule(JFConversion &conv, const int16_t *input, uint16_t module_number,
int data_stream);
void Pack(); // transfer summed image to converted coordinates, clear summation buffer
size_t SaveCompressedImage(void *output);
int16_t *GetPreview16BitImage();
};
#endif //JUNGFRAUJOCH_FRAMETRANSFORMATION_H