LCamDev: implement configureSessionModeCReq
We can, theoretically, now change the v4l camera's mode.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#include <cameraModeRequest.h>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace lcamera_dev {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr const char *incompleteOptionalPlanarMessage =
|
||||
"lcameraDev: fullPlanarIsOptional/opt-planar is not honored yet "
|
||||
"(non-planar producer deinterleaving is not implemented)";
|
||||
|
||||
} // namespace
|
||||
|
||||
void validateCameraModeRequest(const LcameraDevCameraModeRequest& request)
|
||||
{
|
||||
if (request.width == 0 || request.height == 0)
|
||||
{
|
||||
throw std::runtime_error(
|
||||
"lcameraDev: camera mode request width and height must be "
|
||||
"non-zero");
|
||||
}
|
||||
|
||||
if (request.colourSpace != LcameraDevColourSpace::Yuv)
|
||||
{
|
||||
throw std::runtime_error(
|
||||
"lcameraDev: unsupported colour-space for camera mode request");
|
||||
}
|
||||
}
|
||||
|
||||
void rejectFullPlanarOptionalAtConfigureApi(
|
||||
const LcameraDevCameraModeRequest& request)
|
||||
{
|
||||
if (request.fullPlanarIsOptional)
|
||||
{
|
||||
throw std::runtime_error(incompleteOptionalPlanarMessage);
|
||||
}
|
||||
}
|
||||
|
||||
bool cameraModeRequestsEqual(
|
||||
const LcameraDevCameraModeRequest& left,
|
||||
const LcameraDevCameraModeRequest& right)
|
||||
{
|
||||
return left.width == right.width
|
||||
&& left.height == right.height
|
||||
&& left.colourSpace == right.colourSpace
|
||||
&& left.fullPlanarIsOptional == right.fullPlanarIsOptional;
|
||||
}
|
||||
|
||||
} // namespace lcamera_dev
|
||||
Reference in New Issue
Block a user