3e85b920fb
We can, theoretically, now change the v4l camera's mode.
51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#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
|