3e85b920fb
We can, theoretically, now change the v4l camera's mode.
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
#ifndef LCAMERA_DEV_CAMERA_MODE_REQUEST_H
|
|
#define LCAMERA_DEV_CAMERA_MODE_REQUEST_H
|
|
|
|
#include <string>
|
|
|
|
namespace lcamera_dev {
|
|
|
|
enum class LcameraDevColourSpace
|
|
{
|
|
Yuv,
|
|
};
|
|
|
|
struct LcameraDevCameraModeRequest
|
|
{
|
|
unsigned width = 0;
|
|
unsigned height = 0;
|
|
LcameraDevColourSpace colourSpace = LcameraDevColourSpace::Yuv;
|
|
/** EXPLANATION:
|
|
* When false, configure must select a fully planar YUV pixel format.
|
|
* When true, relaxed non-planar formats are not honored at the configure
|
|
* API yet — producer-side deinterleaving is not implemented (Stage 2).
|
|
*/
|
|
bool fullPlanarIsOptional = false;
|
|
};
|
|
|
|
struct LcameraDevConfiguredCameraMode
|
|
{
|
|
unsigned width = 0, height = 0;
|
|
LcameraDevColourSpace colourSpace = LcameraDevColourSpace::Yuv;
|
|
std::string pixelFormatName;
|
|
bool isFullyPlanar = false;
|
|
unsigned planeCount = 0;
|
|
};
|
|
|
|
void validateCameraModeRequest(const LcameraDevCameraModeRequest& request);
|
|
|
|
/** Rejects fullPlanarIsOptional at the configure API until non-planar fallback
|
|
* paths exist in lcameraBuff. */
|
|
void rejectFullPlanarOptionalAtConfigureApi(
|
|
const LcameraDevCameraModeRequest& request);
|
|
|
|
bool cameraModeRequestsEqual(
|
|
const LcameraDevCameraModeRequest& left,
|
|
const LcameraDevCameraModeRequest& right);
|
|
|
|
} // namespace lcamera_dev
|
|
|
|
#endif // LCAMERA_DEV_CAMERA_MODE_REQUEST_H
|