|
16 | 16 | #include <libcamera/ipa/ipa_interface.h> |
17 | 17 | #include <libcamera/ipa/ipa_module_info.h> |
18 | 18 |
|
19 | | -#include "libcamera/internal/camera_manager.h" |
20 | | -#include "libcamera/internal/global_configuration.h" |
21 | | -#include "libcamera/internal/ipa_module.h" |
22 | | -#include "libcamera/internal/pipeline_handler.h" |
23 | 19 | #include "libcamera/internal/pub_key.h" |
24 | 20 |
|
25 | 21 | namespace libcamera { |
26 | 22 |
|
27 | 23 | LOG_DECLARE_CATEGORY(IPAManager) |
28 | 24 |
|
| 25 | +class CameraManager; |
| 26 | +class GlobalConfiguration; |
| 27 | +class IPAModule; |
| 28 | +class PipelineHandler; |
| 29 | + |
29 | 30 | class IPAManager |
30 | 31 | { |
31 | 32 | public: |
32 | | - IPAManager(const GlobalConfiguration &configuration); |
| 33 | + IPAManager(const CameraManager &cm); |
33 | 34 | ~IPAManager(); |
34 | 35 |
|
35 | 36 | template<typename T> |
36 | | - static std::unique_ptr<T> createIPA(PipelineHandler *pipe, |
37 | | - uint32_t minVersion, |
38 | | - uint32_t maxVersion) |
| 37 | + std::unique_ptr<T> createIPA(PipelineHandler *pipe, uint32_t minVersion, |
| 38 | + uint32_t maxVersion) |
39 | 39 | { |
40 | | - CameraManager *cm = pipe->cameraManager(); |
41 | | - IPAManager *self = cm->_d()->ipaManager(); |
42 | | - IPAModule *m = self->module(pipe, minVersion, maxVersion); |
| 40 | + IPAModule *m = module(pipe, minVersion, maxVersion); |
43 | 41 | if (!m) |
44 | 42 | return nullptr; |
45 | 43 |
|
46 | | - const GlobalConfiguration &configuration = cm->_d()->configuration(); |
47 | | - |
48 | 44 | auto proxy = [&]() -> std::unique_ptr<T> { |
49 | | - if (self->isSignatureValid(m)) |
50 | | - return std::make_unique<typename T::Threaded>(m, configuration); |
| 45 | + if (isSignatureValid(m)) |
| 46 | + return std::make_unique<typename T::Threaded>(m, cm_); |
51 | 47 | else |
52 | | - return std::make_unique<typename T::Isolated>(m, configuration); |
| 48 | + return std::make_unique<typename T::Isolated>(m, cm_); |
53 | 49 | }(); |
54 | 50 |
|
55 | 51 | if (!proxy->isValid()) { |
@@ -77,6 +73,7 @@ class IPAManager |
77 | 73 |
|
78 | 74 | bool isSignatureValid(IPAModule *ipa) const; |
79 | 75 |
|
| 76 | + const CameraManager &cm_; |
80 | 77 | std::vector<std::unique_ptr<IPAModule>> modules_; |
81 | 78 |
|
82 | 79 | #if HAVE_IPA_PUBKEY |
|
0 commit comments