summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/cam_helper.hpp
diff options
context:
space:
mode:
authorDavid Plowman <david.plowman@raspberrypi.com>2021-05-07 12:37:28 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-05-08 02:49:13 +0300
commit5fda81e1f441670796b81095595b98af7719779c (patch)
tree091b188e877dc5c1398d9e0c07253a7695241287 /src/ipa/raspberrypi/cam_helper.hpp
parentdf36fb4abb37c216d1eaf60a1772047b5205d0b7 (diff)
ipa: raspberrypi: Use CamHelpers to generalise sensor embedded data parsing
CamHelpers get virtual Prepare() and Process() methods, running just before and just after the ISP, just like Raspberry Pi Algorithms. The Prepare() method is able to parse the register dumps in embedded data buffers, and can be specialised to perform custom processing when necessary. The IPA itself only needs to call the new Prepare() and Process() methods. It must fill in the DeviceStatus from the controls first, in case the Prepare() method does not supply its own values. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/raspberrypi/cam_helper.hpp')
-rw-r--r--src/ipa/raspberrypi/cam_helper.hpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ipa/raspberrypi/cam_helper.hpp b/src/ipa/raspberrypi/cam_helper.hpp
index c3ed5362..a52f3f0b 100644
--- a/src/ipa/raspberrypi/cam_helper.hpp
+++ b/src/ipa/raspberrypi/cam_helper.hpp
@@ -8,7 +8,11 @@
#include <string>
+#include <libcamera/span.h>
+
#include "camera_mode.h"
+#include "controller/controller.hpp"
+#include "controller/metadata.hpp"
#include "md_parser.hpp"
#include "libcamera/internal/v4l2_videodevice.h"
@@ -65,7 +69,9 @@ public:
CamHelper(MdParser *parser, unsigned int frameIntegrationDiff);
virtual ~CamHelper();
void SetCameraMode(const CameraMode &mode);
- MdParser &Parser() const { return *parser_; }
+ virtual void Prepare(libcamera::Span<const uint8_t> buffer,
+ Metadata &metadata);
+ virtual void Process(StatisticsPtr &stats, Metadata &metadata);
uint32_t ExposureLines(double exposure_us) const;
double Exposure(uint32_t exposure_lines) const; // in us
virtual uint32_t GetVBlanking(double &exposure_us, double minFrameDuration,
@@ -81,6 +87,9 @@ public:
virtual unsigned int MistrustFramesModeSwitch() const;
protected:
+ void parseEmbeddedData(libcamera::Span<const uint8_t> buffer,
+ Metadata &metadata);
+
MdParser *parser_;
CameraMode mode_;