[libcamera-devel] [PATCH 17/30] cam: Store camera session pointer in CamApp class
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jul 12 17:33:45 CEST 2021
On 07/07/2021 03:19, Laurent Pinchart wrote:
> Move the local CameraSession variable from the CamApp::run() function to
> a member variable of the CamApp class, created in CamApp::init(). This
> is a first step towards moving code to the CameraSession class.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/cam/camera_session.cpp | 5 -----
> src/cam/main.cpp | 16 ++++++++++++----
> 2 files changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
> index 1fb7c1b6ad5d..7bb75e86eab5 100644
> --- a/src/cam/camera_session.cpp
> +++ b/src/cam/camera_session.cpp
> @@ -34,11 +34,6 @@ int CameraSession::start(const OptionsParser::Options &options)
> captureLimit_ = options[OptCapture].toInteger();
> printMetadata_ = options.isSet(OptMetadata);
>
> - if (!camera_) {
> - std::cout << "Can't capture without a camera" << std::endl;
> - return -ENODEV;
> - }
> -
> ret = camera_->configure(config_);
> if (ret < 0) {
> std::cout << "Failed to configure camera" << std::endl;
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index b13230c374ad..2c6500a5682b 100644
> --- a/src/cam/main.cpp
> +++ b/src/cam/main.cpp
> @@ -51,8 +51,11 @@ private:
> static CamApp *app_;
> OptionsParser::Options options_;
> CameraManager *cm_;
> +
> std::shared_ptr<Camera> camera_;
> std::unique_ptr<libcamera::CameraConfiguration> config_;
> + std::unique_ptr<CameraSession> session_;
> +
> EventLoop loop_;
>
> bool strictFormats_;
> @@ -127,6 +130,9 @@ int CamApp::init(int argc, char **argv)
> cleanup();
> return ret;
> }
> +
> + session_ = std::make_unique<CameraSession>(camera_, config_.get());
> + session_->captureDone.connect(this, &CamApp::captureDone);
> }
>
> if (options_.isSet(OptMonitor)) {
> @@ -369,10 +375,12 @@ int CamApp::run()
> }
>
> if (options_.isSet(OptCapture)) {
> - CameraSession session(camera_, config_.get());
> - session.captureDone.connect(this, &CamApp::captureDone);
> + if (!camera_) {
> + std::cout << "Can't capture without a camera" << std::endl;
> + return -ENODEV;
> + }
>
> - ret = session.start(options_);
> + ret = session_->start(options_);
> if (ret) {
> std::cout << "Failed to start camera session" << std::endl;
> return ret;
> @@ -380,7 +388,7 @@ int CamApp::run()
>
> loop_.exec();
>
> - session.stop();
> + session_->stop();
> return 0;
> }
>
>
More information about the libcamera-devel
mailing list