apps: Return std::optional<> from StreamKeyValueParser::parseRole()
Instead of having bool return type and an out parameter, use std::optional<libcamera::StreamRole> to return from StreamKeyValueParser::parseRole(). Meanwhile at it, re-word an existing comment to make it lucid. Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
committed by
Umang Jain
parent
02f0492c55
commit
58e0b6e18c
@@ -30,10 +30,8 @@ StreamKeyValueParser::StreamKeyValueParser()
|
||||
KeyValueParser::Options StreamKeyValueParser::parse(const char *arguments)
|
||||
{
|
||||
KeyValueParser::Options options = KeyValueParser::parse(arguments);
|
||||
StreamRole role;
|
||||
|
||||
if (options.valid() && options.isSet("role") &&
|
||||
!parseRole(&role, options)) {
|
||||
if (options.valid() && options.isSet("role") && !parseRole(options)) {
|
||||
std::cerr << "Unknown stream role "
|
||||
<< options["role"].toString() << std::endl;
|
||||
options.invalidate();
|
||||
@@ -52,13 +50,8 @@ StreamRoles StreamKeyValueParser::roles(const OptionValue &values)
|
||||
|
||||
StreamRoles roles;
|
||||
for (auto const &value : streamParameters) {
|
||||
StreamRole role;
|
||||
|
||||
/* If role is invalid or not set default to viewfinder. */
|
||||
if (!parseRole(&role, value.toKeyValues()))
|
||||
role = StreamRole::Viewfinder;
|
||||
|
||||
roles.push_back(role);
|
||||
/* If a role is invalid default it to viewfinder. */
|
||||
roles.push_back(parseRole(value.toKeyValues()).value_or(StreamRole::Viewfinder));
|
||||
}
|
||||
|
||||
return roles;
|
||||
@@ -108,27 +101,21 @@ int StreamKeyValueParser::updateConfiguration(CameraConfiguration *config,
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool StreamKeyValueParser::parseRole(StreamRole *role,
|
||||
const KeyValueParser::Options &options)
|
||||
std::optional<libcamera::StreamRole> StreamKeyValueParser::parseRole(const KeyValueParser::Options &options)
|
||||
{
|
||||
if (!options.isSet("role"))
|
||||
return false;
|
||||
return {};
|
||||
|
||||
std::string name = options["role"].toString();
|
||||
|
||||
if (name == "viewfinder") {
|
||||
*role = StreamRole::Viewfinder;
|
||||
return true;
|
||||
} else if (name == "video") {
|
||||
*role = StreamRole::VideoRecording;
|
||||
return true;
|
||||
} else if (name == "still") {
|
||||
*role = StreamRole::StillCapture;
|
||||
return true;
|
||||
} else if (name == "raw") {
|
||||
*role = StreamRole::Raw;
|
||||
return true;
|
||||
}
|
||||
if (name == "viewfinder")
|
||||
return StreamRole::Viewfinder;
|
||||
else if (name == "video")
|
||||
return StreamRole::VideoRecording;
|
||||
else if (name == "still")
|
||||
return StreamRole::StillCapture;
|
||||
else if (name == "raw")
|
||||
return StreamRole::Raw;
|
||||
|
||||
return false;
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
|
||||
#include <libcamera/camera.h>
|
||||
|
||||
#include "options.h"
|
||||
@@ -23,6 +25,5 @@ public:
|
||||
const OptionValue &values);
|
||||
|
||||
private:
|
||||
static bool parseRole(libcamera::StreamRole *role,
|
||||
const KeyValueParser::Options &options);
|
||||
static std::optional<libcamera::StreamRole> parseRole(const KeyValueParser::Options &options);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user