summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline/rpi/vc4/vc4.cpp
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-09-21 18:55:45 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-09-27 14:42:12 +0300
commit0602cbc59665b3017ccc3fb9067d45840e6c1405 (patch)
tree7caa5279bedb4a361133ba7ad117ca7e2c1c8506 /src/libcamera/pipeline/rpi/vc4/vc4.cpp
parent2a5120f6744cfdab2aa6ec7b5e2195e38be70c60 (diff)
libcamera: rpi: Cache rawStreams and outStreams
Currently, the stream configuration is stored in two vectors, rawStreams and outStreams for convenience. However, these vectors are constructed in both platformValidate() and platformConfigure(). This change caches these vectors in the RPiCameraConfiguration class to construct them only once in platformValidate(). Pass a pointer to the current configuration to platformValidate() and platformConfigure() so that they can access the streams vectors. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline/rpi/vc4/vc4.cpp')
-rw-r--r--src/libcamera/pipeline/rpi/vc4/vc4.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
index 46504636..1c860d7f 100644
--- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp
+++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp
@@ -25,6 +25,7 @@ namespace libcamera {
LOG_DECLARE_CATEGORY(RPI)
using StreamFlag = RPi::Stream::StreamFlag;
+using StreamParams = RPi::RPiCameraConfiguration::StreamParams;
namespace {
@@ -65,9 +66,7 @@ public:
{
}
- CameraConfiguration::Status platformValidate(RPi::RPiCameraConfiguration *rpiConfig,
- std::vector<StreamParams> &rawStreams,
- std::vector<StreamParams> &outStreams) const override;
+ CameraConfiguration::Status platformValidate(RPi::RPiCameraConfiguration *rpiConfig) const override;
int platformPipelineConfigure(const std::unique_ptr<YamlObject> &root) override;
@@ -118,8 +117,7 @@ private:
int platformConfigure(const V4L2SubdeviceFormat &sensorFormat,
std::optional<BayerFormat::Packing> packing,
- std::vector<StreamParams> &rawStreams,
- std::vector<StreamParams> &outStreams) override;
+ const RPi::RPiCameraConfiguration *rpiConfig) override;
int platformConfigureIpa(ipa::RPi::ConfigParams &params) override;
int platformInitIpa([[maybe_unused]] ipa::RPi::InitParams &params) override
@@ -395,10 +393,11 @@ int PipelineHandlerVc4::platformRegister(std::unique_ptr<RPi::CameraData> &camer
return 0;
}
-CameraConfiguration::Status Vc4CameraData::platformValidate(RPi::RPiCameraConfiguration *rpiConfig,
- std::vector<StreamParams> &rawStreams,
- std::vector<StreamParams> &outStreams) const
+CameraConfiguration::Status Vc4CameraData::platformValidate(RPi::RPiCameraConfiguration *rpiConfig) const
{
+ std::vector<StreamParams> &rawStreams = rpiConfig->rawStreams_;
+ std::vector<StreamParams> &outStreams = rpiConfig->outStreams_;
+
CameraConfiguration::Status status = CameraConfiguration::Status::Valid;
/* Can only output 1 RAW stream, or 2 YUV/RGB streams. */
@@ -506,9 +505,10 @@ int Vc4CameraData::platformPipelineConfigure(const std::unique_ptr<YamlObject> &
int Vc4CameraData::platformConfigure(const V4L2SubdeviceFormat &sensorFormat,
std::optional<BayerFormat::Packing> packing,
- std::vector<StreamParams> &rawStreams,
- std::vector<StreamParams> &outStreams)
+ const RPi::RPiCameraConfiguration *rpiConfig)
{
+ const std::vector<StreamParams> &rawStreams = rpiConfig->rawStreams_;
+ const std::vector<StreamParams> &outStreams = rpiConfig->outStreams_;
int ret;
if (!packing)