[libcamera-devel] [PATCH LIBCAMERA WIP] libcamera: rkisp1: Use parametered constructor instead of default
Kaaira Gupta
kgupta at es.iitr.ac.in
Fri Mar 20 22:50:20 CET 2020
Use of default constructor StreamConfiguration() in deprecated, hence
make it private. Make Stream class a friend of StreamConfiguration as it
uses the default constructor.
Replace default constructor StreamConfiguration() by it's parametered
counterpart by using StreamFormats in generateConfiguration() in rkisp1
Signed-off-by: Kaaira Gupta <kgupta at es.iitr.ac.in>
---
WIP:
- It fails to build as other pipelines still use default
constructor.
- Even rkisp1 fails as it uses default constructor in its
validate() function.
- I have taken care of generateConfiguration() only.
include/libcamera/stream.h | 4 ++-
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 37 ++++++++++++++++--------
src/libcamera/stream.cpp | 9 ------
3 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index b1441f8..c19aed6 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -37,7 +37,6 @@ private:
};
struct StreamConfiguration {
- StreamConfiguration();
StreamConfiguration(const StreamFormats &formats);
PixelFormat pixelFormat;
@@ -52,8 +51,11 @@ struct StreamConfiguration {
std::string toString() const;
private:
+ StreamConfiguration();
Stream *stream_;
StreamFormats formats_;
+
+ friend class Stream;
};
enum StreamRole {
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 2f909ce..bf97b53 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -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;
@@ -537,7 +541,16 @@ 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{
+ 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();
diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
index ea3d214..96b3dc5 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -274,15 +274,6 @@ SizeRange StreamFormats::range(const PixelFormat &pixelformat) const
* configured for a single video stream.
*/
-/**
- * \todo This method is deprecated and should be removed once all pipeline
- * handlers provied StreamFormats.
- */
-StreamConfiguration::StreamConfiguration()
- : pixelFormat(0), stream_(nullptr)
-{
-}
-
/**
* \brief Construct a configuration with stream formats
*/
--
2.17.1
More information about the libcamera-devel
mailing list