[libcamera-devel] [PATCH] qcam: main: Cache lookup of role property

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Mar 23 12:11:00 CET 2020


Hi Kieran,

On Mon, Mar 23, 2020 at 11:00:47AM +0000, Kieran Bingham wrote:
> On 23/03/2020 10:40, Laurent Pinchart wrote:
> > This should obviously have s/qcam/cam/ in the subject line.
> > 
> > On Mon, Mar 23, 2020 at 12:39:38PM +0200, Laurent Pinchart wrote:
> >> The code handling the stream role option retrieves the role property and
> >> converts it to a string in every branch. Cache it and use the cached
> >> value.
> 
> Trivial suggestion, but otherwise LGTM.
> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> 
> >> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> >> ---
> >>  src/cam/main.cpp | 16 ++++++++++------
> >>  1 file changed, 10 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> >> index 2a0a830ff371..56059ab6c047 100644
> >> --- a/src/cam/main.cpp
> >> +++ b/src/cam/main.cpp
> >> @@ -209,17 +209,21 @@ int CamApp::prepareConfig()
> >>  		for (auto const &value : streamOptions) {
> >>  			KeyValueParser::Options opt = value.toKeyValues();
> >>  
> >> -			if (!opt.isSet("role")) {
> >> -				roles.push_back(StreamRole::VideoRecording);
> >> -			} else if (opt["role"].toString() == "viewfinder") {
> >> +			std::string role;
> >> +			if (opt.isSet("role"))
> >> +				role = opt["role"].toString();
> >> +			else
> >> +				role = "viewfinder";
> 
> That almost looks worth a tertiary to make it a single line?
>     role = opt.isSet("role") ? opt["role"].toString() : "viewfinder";
> 
> ?

Sure. With identation and line break, it becomes

			std::string role = opt.isSet("role")
					 ? opt["role"].toString()
					 : "viewfinder";

> >> +
> >> +			if (role == "viewfinder") {
> >>  				roles.push_back(StreamRole::Viewfinder);
> >> -			} else if (opt["role"].toString() == "video") {
> >> +			} else if (role == "video") {
> >>  				roles.push_back(StreamRole::VideoRecording);
> >> -			} else if (opt["role"].toString() == "still") {
> >> +			} else if (role == "still") {
> >>  				roles.push_back(StreamRole::StillCapture);
> >>  			} else {
> >>  				std::cerr << "Unknown stream role "
> >> -					  << opt["role"].toString() << std::endl;
> >> +					  << role << std::endl;
> >>  				return -EINVAL;
> >>  			}
> >>  		}

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list