[v6,5/8] libcamera: camera_manager: Add LayerManager
diff mbox series

Message ID 20260129082814.1777779-6-paul.elder@ideasonboard.com
State New
Headers show
Series
  • Add Layers support
Related show

Commit Message

Paul Elder Jan. 29, 2026, 8:28 a.m. UTC
Add to the CameraManager a LayerManager member. This allows us to have
one LayerManager that handles loading all the layer shared objects, and
then each Camera can access the layer via the LayerManager through the
CameraManager.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

---
No change in v6

No change in v5

Changes in v4:
- Put LayerManager directly in CameraManager, as opposed to a unique
  pointer

No change in v3

New in v2
---
 include/libcamera/internal/camera_manager.h | 3 +++
 src/libcamera/camera_manager.cpp            | 1 +
 2 files changed, 4 insertions(+)

Comments

Isaac Scott Feb. 24, 2026, 4:03 p.m. UTC | #1
Hi Paul,

Quoting Paul Elder (2026-01-29 08:28:11)
> Add to the CameraManager a LayerManager member. This allows us to have
> one LayerManager that handles loading all the layer shared objects, and
> then each Camera can access the layer via the LayerManager through the
> CameraManager.
> 
> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> ---
> No change in v6
> 
> No change in v5
> 
> Changes in v4:
> - Put LayerManager directly in CameraManager, as opposed to a unique
>   pointer
> 
> No change in v3
> 
> New in v2
> ---
>  include/libcamera/internal/camera_manager.h | 3 +++
>  src/libcamera/camera_manager.cpp            | 1 +
>  2 files changed, 4 insertions(+)
> 
> diff --git a/include/libcamera/internal/camera_manager.h b/include/libcamera/internal/camera_manager.h
> index 755928ce60a5..cc3ede02507f 100644
> --- a/include/libcamera/internal/camera_manager.h
> +++ b/include/libcamera/internal/camera_manager.h
> @@ -19,6 +19,7 @@
>  #include <libcamera/base/thread_annotations.h>
>  
>  #include "libcamera/internal/global_configuration.h"
> +#include "libcamera/internal/layer_manager.h"
>  #include "libcamera/internal/process.h"
>  
>  namespace libcamera {
> @@ -45,6 +46,7 @@ public:
>         }
>  
>         IPAManager *ipaManager() const { return ipaManager_.get(); }
> +       const LayerManager *layerManager() const { return &layerManager_; }
>  
>  protected:
>         void run() override;
> @@ -71,6 +73,7 @@ private:
>         std::unique_ptr<DeviceEnumerator> enumerator_;
>  
>         std::unique_ptr<IPAManager> ipaManager_;
> +       LayerManager layerManager_;

Looks good to me!

Reviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>

Best wishes,
Isaac

>  
>         const GlobalConfiguration configuration_;
>  };
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index 23185467ba02..554cd935339a 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -16,6 +16,7 @@
>  #include "libcamera/internal/camera.h"
>  #include "libcamera/internal/device_enumerator.h"
>  #include "libcamera/internal/global_configuration.h"
> +#include "libcamera/internal/layer_manager.h"
>  #include "libcamera/internal/ipa_manager.h"
>  #include "libcamera/internal/pipeline_handler.h"
>  
> -- 
> 2.47.2
>

Patch
diff mbox series

diff --git a/include/libcamera/internal/camera_manager.h b/include/libcamera/internal/camera_manager.h
index 755928ce60a5..cc3ede02507f 100644
--- a/include/libcamera/internal/camera_manager.h
+++ b/include/libcamera/internal/camera_manager.h
@@ -19,6 +19,7 @@ 
 #include <libcamera/base/thread_annotations.h>
 
 #include "libcamera/internal/global_configuration.h"
+#include "libcamera/internal/layer_manager.h"
 #include "libcamera/internal/process.h"
 
 namespace libcamera {
@@ -45,6 +46,7 @@  public:
 	}
 
 	IPAManager *ipaManager() const { return ipaManager_.get(); }
+	const LayerManager *layerManager() const { return &layerManager_; }
 
 protected:
 	void run() override;
@@ -71,6 +73,7 @@  private:
 	std::unique_ptr<DeviceEnumerator> enumerator_;
 
 	std::unique_ptr<IPAManager> ipaManager_;
+	LayerManager layerManager_;
 
 	const GlobalConfiguration configuration_;
 };
diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
index 23185467ba02..554cd935339a 100644
--- a/src/libcamera/camera_manager.cpp
+++ b/src/libcamera/camera_manager.cpp
@@ -16,6 +16,7 @@ 
 #include "libcamera/internal/camera.h"
 #include "libcamera/internal/device_enumerator.h"
 #include "libcamera/internal/global_configuration.h"
+#include "libcamera/internal/layer_manager.h"
 #include "libcamera/internal/ipa_manager.h"
 #include "libcamera/internal/pipeline_handler.h"