Message ID | 20200724174827.757493-2-niklas.soderlund@ragnatech.se |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Niklas, Thank you for the patch. On Fri, Jul 24, 2020 at 07:48:25PM +0200, Niklas Söderlund wrote: > Add a '--strict-formats' option which fails the camera configuration > step if the format is adjusted, > > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > --- > * Changes since v1 > - Fix spelling in comment and log outputs. > --- > src/cam/main.cpp | 17 ++++++++++++++++- > src/cam/main.h | 1 + > 2 files changed, 17 insertions(+), 1 deletion(-) > > diff --git a/src/cam/main.cpp b/src/cam/main.cpp > index 2512fe9da782165b..2009f11b6c336f2c 100644 > --- a/src/cam/main.cpp > +++ b/src/cam/main.cpp > @@ -49,12 +49,15 @@ private: > std::shared_ptr<Camera> camera_; > std::unique_ptr<libcamera::CameraConfiguration> config_; > EventLoop *loop_; > + > + bool strictFormats_; > }; > > CamApp *CamApp::app_ = nullptr; > > CamApp::CamApp() > - : cm_(nullptr), camera_(nullptr), config_(nullptr), loop_(nullptr) > + : cm_(nullptr), camera_(nullptr), config_(nullptr), loop_(nullptr), > + strictFormats_(false) > { > CamApp::app_ = this; > } > @@ -77,6 +80,9 @@ int CamApp::init(int argc, char **argv) > if (ret < 0) > return ret; > > + if (options_.isSet(OptStrictFormats)) > + strictFormats_ = true; > + > cm_ = new CameraManager(); > > ret = cm_->start(); > @@ -179,6 +185,9 @@ int CamApp::parseOptions(int argc, char *argv[]) > "list-controls"); > parser.addOption(OptListProperties, OptionNone, "List cameras properties", > "list-properties"); > + parser.addOption(OptStrictFormats, OptionNone, > + "Do not allow requested stream format(s) to be adjusted", > + "strict-formats"); > > options_ = parser.parse(argc, argv); > if (!options_.valid()) > @@ -214,6 +223,12 @@ int CamApp::prepareConfig() > case CameraConfiguration::Valid: > break; > case CameraConfiguration::Adjusted: > + if (strictFormats_) { > + std::cout << "Adjusting camera configuration not allowed" Maybe "Adjusting camera configuration disallowed by --strict-formats argument" ? Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > + << std::endl; > + config_.reset(); > + return -EINVAL; > + } > std::cout << "Camera configuration adjusted" << std::endl; > break; > case CameraConfiguration::Invalid: > diff --git a/src/cam/main.h b/src/cam/main.h > index 4a130d8dd2906ad4..6f95add31a6341cf 100644 > --- a/src/cam/main.h > +++ b/src/cam/main.h > @@ -17,6 +17,7 @@ enum { > OptListProperties = 'p', > OptStream = 's', > OptListControls = 256, > + OptStrictFormats = 257, > }; > > #endif /* __CAM_MAIN_H__ */
diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 2512fe9da782165b..2009f11b6c336f2c 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -49,12 +49,15 @@ private: std::shared_ptr<Camera> camera_; std::unique_ptr<libcamera::CameraConfiguration> config_; EventLoop *loop_; + + bool strictFormats_; }; CamApp *CamApp::app_ = nullptr; CamApp::CamApp() - : cm_(nullptr), camera_(nullptr), config_(nullptr), loop_(nullptr) + : cm_(nullptr), camera_(nullptr), config_(nullptr), loop_(nullptr), + strictFormats_(false) { CamApp::app_ = this; } @@ -77,6 +80,9 @@ int CamApp::init(int argc, char **argv) if (ret < 0) return ret; + if (options_.isSet(OptStrictFormats)) + strictFormats_ = true; + cm_ = new CameraManager(); ret = cm_->start(); @@ -179,6 +185,9 @@ int CamApp::parseOptions(int argc, char *argv[]) "list-controls"); parser.addOption(OptListProperties, OptionNone, "List cameras properties", "list-properties"); + parser.addOption(OptStrictFormats, OptionNone, + "Do not allow requested stream format(s) to be adjusted", + "strict-formats"); options_ = parser.parse(argc, argv); if (!options_.valid()) @@ -214,6 +223,12 @@ int CamApp::prepareConfig() case CameraConfiguration::Valid: break; case CameraConfiguration::Adjusted: + if (strictFormats_) { + std::cout << "Adjusting camera configuration not allowed" + << std::endl; + config_.reset(); + return -EINVAL; + } std::cout << "Camera configuration adjusted" << std::endl; break; case CameraConfiguration::Invalid: diff --git a/src/cam/main.h b/src/cam/main.h index 4a130d8dd2906ad4..6f95add31a6341cf 100644 --- a/src/cam/main.h +++ b/src/cam/main.h @@ -17,6 +17,7 @@ enum { OptListProperties = 'p', OptStream = 's', OptListControls = 256, + OptStrictFormats = 257, }; #endif /* __CAM_MAIN_H__ */