@@ -218,6 +218,21 @@ private:
Camera *activeCamera_;
};
+namespace {
+
+static const std::array<PixelFormat, 8> formats{
+ PixelFormat(DRM_FORMAT_YUYV),
+ PixelFormat(DRM_FORMAT_YVYU),
+ PixelFormat(DRM_FORMAT_VYUY),
+ PixelFormat(DRM_FORMAT_NV16),
+ PixelFormat(DRM_FORMAT_NV61),
+ PixelFormat(DRM_FORMAT_NV21),
+ PixelFormat(DRM_FORMAT_NV12),
+ /* \todo Add support for 8-bit greyscale to DRM formats */
+};
+
+} /* namespace */
+
RkISP1Frames::RkISP1Frames(PipelineHandler *pipe)
: pipe_(dynamic_cast<PipelineHandlerRkISP1 *>(pipe))
{
@@ -430,17 +445,6 @@ RkISP1CameraConfiguration::RkISP1CameraConfiguration(Camera *camera,
CameraConfiguration::Status RkISP1CameraConfiguration::validate()
{
- static const std::array<PixelFormat, 8> formats{
- PixelFormat(DRM_FORMAT_YUYV),
- PixelFormat(DRM_FORMAT_YVYU),
- PixelFormat(DRM_FORMAT_VYUY),
- PixelFormat(DRM_FORMAT_NV16),
- PixelFormat(DRM_FORMAT_NV61),
- PixelFormat(DRM_FORMAT_NV21),
- PixelFormat(DRM_FORMAT_NV12),
- /* \todo Add support for 8-bit greyscale to DRM formats */
- };
-
const CameraSensor *sensor = data_->sensor_;
Status status = Valid;
@@ -541,7 +545,18 @@ CameraConfiguration *PipelineHandlerRkISP1::generateConfiguration(Camera *camera
if (roles.empty())
return config;
- StreamConfiguration cfg{};
+ std::map<PixelFormat, std::vector<SizeRange>> pixelformats;
+ for (PixelFormat pixelformat : formats) {
+ std::vector<SizeRange> sizes{
+ /* Minimum and maximum capabilities of ISP output */
+ SizeRange{ { 32, 16 }, { 4416, 3312 } }
+ };
+ pixelformats[pixelformat] = sizes;
+ }
+
+ StreamFormats format(pixelformats);
+ StreamConfiguration cfg(format);
+
cfg.pixelFormat = PixelFormat(DRM_FORMAT_NV12);
cfg.size = data->sensor_->resolution();