Refactor how frames are sent from receiver
This commit is contained in:
+12
-2
@@ -35,9 +35,18 @@ void StreamWriter::CollectImages(std::vector<HDF5DataFileStatistics> &v) {
|
||||
CheckPath(start_message.file_prefix);
|
||||
MakeDirectory(start_message.file_prefix);
|
||||
HDF5Writer writer(start_message);
|
||||
std::unique_ptr<NXmx> master_file;
|
||||
if (!start_message.write_master_file || start_message.write_master_file.value())
|
||||
master_file = std::make_unique<NXmx>(start_message);
|
||||
|
||||
bool first_image = true;
|
||||
run = WaitForImage();
|
||||
while (run && (image_puller.GetFrameType() == CBORStream2Deserializer::Type::CALIBRATION)) {
|
||||
if (master_file)
|
||||
master_file->WriteCalibration(image_puller.GetCalibrationMessage());
|
||||
run = WaitForImage();
|
||||
}
|
||||
|
||||
while (run && (image_puller.GetFrameType() == CBORStream2Deserializer::Type::IMAGE)) {
|
||||
if (first_image) {
|
||||
state = StreamWriterState::Receiving;
|
||||
@@ -64,8 +73,9 @@ void StreamWriter::CollectImages(std::vector<HDF5DataFileStatistics> &v) {
|
||||
if ((end_message.max_image_number == 0) && (max_image_number > 0))
|
||||
end_message.max_image_number = max_image_number;
|
||||
|
||||
if (!end_message.write_master_file || end_message.write_master_file.value())
|
||||
HDF5Metadata::NXmx(start_message, end_message);
|
||||
if (master_file)
|
||||
master_file->Finalize(end_message);
|
||||
master_file.reset();
|
||||
state = StreamWriterState::Idle;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user