[libcamera-devel] [PATCH v1] pipeline: raspberrypi: Return the sensor formats from generateConfiguration()
Naushir Patuck
naush at raspberrypi.com
Fri Dec 3 12:32:05 CET 2021
Return the available sensor PixelFormats and sizes from generateConfiguration()
if the StreamRole is set to StreamRole::Raw. The existing code returns the
PixelFormats and sizes for all other StreamRole types.
Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
---
.../pipeline/raspberrypi/raspberrypi.cpp | 21 ++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 5b76916e9e98..cbfb58562626 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -595,12 +595,23 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera,
return nullptr;
}
- /* Translate the V4L2PixelFormat to PixelFormat. */
std::map<PixelFormat, std::vector<SizeRange>> deviceFormats;
- for (const auto &format : fmts) {
- PixelFormat pf = format.first.toPixelFormat();
- if (pf.isValid())
- deviceFormats[pf] = format.second;
+ if (role == StreamRole::Raw) {
+ /* Translate the MBUS codes to a PixelFormat. */
+ for (const auto &format : data->sensorFormats_) {
+ PixelFormat pf = mbusCodeToPixelFormat(format.first,
+ BayerFormat::Packing::CSI2);
+ if (pf.isValid())
+ deviceFormats.emplace(std::piecewise_construct, std::forward_as_tuple(pf),
+ std::forward_as_tuple(format.second.begin(), format.second.end()));
+ }
+ } else {
+ /* Translate the V4L2PixelFormat to PixelFormat. */
+ for (const auto &format : fmts) {
+ PixelFormat pf = format.first.toPixelFormat();
+ if (pf.isValid())
+ deviceFormats[pf] = format.second;
+ }
}
/* Add the stream format based on the device node used for the use case. */
--
2.25.1
More information about the libcamera-devel
mailing list