cam: Add option to disallow adjusting of requested formats

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>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund 2020-07-24 14:59:15 +02:00
parent 3acc31b0e3
commit 01ea694003
2 changed files with 17 additions and 1 deletions

View file

@ -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 disallowed by --strict-formats argument"
<< std::endl;
config_.reset();
return -EINVAL;
}
std::cout << "Camera configuration adjusted" << std::endl;
break;
case CameraConfiguration::Invalid:

View file

@ -17,6 +17,7 @@ enum {
OptListProperties = 'p',
OptStream = 's',
OptListControls = 256,
OptStrictFormats = 257,
};
#endif /* __CAM_MAIN_H__ */