FrameTransformation: Split packing and compression

This commit is contained in:
2023-05-01 21:27:08 +02:00
parent dce186f9f9
commit 9d5be2a4e9
7 changed files with 44 additions and 63 deletions

View File

@@ -40,11 +40,6 @@ FrameTransformation::FrameTransformation(const DiffractionExperiment &in_experim
}
}
FrameTransformation& FrameTransformation::SetOutput(void *output) {
standard_output = (char *) output;
return *this;
}
template <class Td> void AddToFramesSum(Td *destination, const int16_t *source) {
for (int i = 0; i < RAW_MODULE_SIZE; i++) {
if ((source[i] == INT16_MIN) || (destination[i] == INT32_MIN))
@@ -90,9 +85,7 @@ void FrameTransformation::Generate16BitPreview() {
}
}
size_t FrameTransformation::PackStandardOutput() {
if (standard_output == nullptr)
throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds, "Default stream output not initialized");
void FrameTransformation::Pack() {
if (summation > 1) {
PackSummation();
@@ -114,7 +107,11 @@ size_t FrameTransformation::PackStandardOutput() {
experiment.GetYPixelsNumFullImage(),
INT16_MIN, INT16_MAX);
}
return compressor.Compress(standard_output, precompression_buffer.data(),
}
size_t FrameTransformation::SaveCompressedImage(void *output) {
return compressor.Compress((char *) output, precompression_buffer.data(),
experiment.GetPixelsNum(), pixel_depth);
}