-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHDFImageLoader.cpp
More file actions
executable file
·46 lines (34 loc) · 1.2 KB
/
HDFImageLoader.cpp
File metadata and controls
executable file
·46 lines (34 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// Created by Arkadiy Simonov on 03.10.2024.
//
#include "HDFImageLoader.h"
#include <memory>
HDF5ImageLoader::HDF5ImageLoader(ReconstructionParameters par) :
AbstractImageLoader(par), reader(par.data_filename_template, par.hdf5_dataset_name) {
current_frame_number-=frame_increment;
//allocate memory
m_dim1=reader.dim1();
m_dim2=reader.dim2();
initialize_buffers();
load_frame_to_buffer();
}
bool HDF5ImageLoader::load_next_frame() {
//TODO: here if there are no frames in the file, increment file number
current_frame_number+=frame_increment;
if (current_frame_number > last_frame_number)
return false;
if(!next_frame_f.valid())
load_frame_to_buffer();
next_frame_f.get();
std::swap(data, buffer);
if (current_frame_number + frame_increment <= last_frame_number)
load_frame_to_buffer();
return true;
}
void HDF5ImageLoader::load_frame_to_buffer() {
next_frame_f = async(launch::async, //async|deferred
[=](int current_frame_number)
{
reader.read_frame(current_frame_number, buffer.data());
}, current_frame_number);
}