-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCBFImageLoader.cpp
More file actions
executable file
·51 lines (39 loc) · 1.38 KB
/
CBFImageLoader.cpp
File metadata and controls
executable file
·51 lines (39 loc) · 1.38 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
47
48
49
//
// Created by Arkadiy Simonov on 03.10.2024.
//
#include "nanocbf/cbfframe.h"
#include <assert.h>
#include "CBFImageLoader.h"
CBFImageLoader::CBFImageLoader(ReconstructionParameters par) :
AbstractImageLoader(par)
{
//get file size
nanocbf::CBFFrame first_frame(current_frame_filename());
current_frame_number-=frame_increment;
//allocate memory
m_dim1=first_frame.width;
m_dim2=first_frame.height;
initialize_buffers();
load_frame_to_buffer();
}
void CBFImageLoader::load_frame_to_buffer() {
next_frame_f = async(launch::async, //async|deferred
[=](int current_frame_number)
{
nanocbf::CBFFrame frame;
if (frame.read(format_template(filename_template, current_frame_number + frame_increment))) {
assert(frame.width == ny() && frame.height == nx());
buffer = frame.data;
}
}, current_frame_number);
}
bool CBFImageLoader::load_next_frame() {
current_frame_number += frame_increment;
if (current_frame_number > last_frame_number)
return false;
next_frame_f.get();
std::swap(data, buffer);
if (current_frame_number+frame_increment <= last_frame_number)
load_frame_to_buffer();
return true;
}