[libcamera-devel,3/4] ipa: raspberrypi: Move IPA parameters to the RPi namespace

Message ID 20200924091927.116385-4-naush@raspberrypi.com
State Accepted
Headers show
Series
  • Code tidy-ups
Related show

Commit Message

Naushir Patuck Sept. 24, 2020, 9:19 a.m. UTC
All IPA related types/params are now moved to the RPi namespace.

There are no functional changes in this commit.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 include/libcamera/ipa/raspberrypi.h           | 40 ++++++++++---------
 src/ipa/raspberrypi/raspberrypi.cpp           | 30 +++++++-------
 .../pipeline/raspberrypi/raspberrypi.cpp      | 40 +++++++++----------
 .../pipeline/raspberrypi/rpi_stream.cpp       |  4 +-
 .../pipeline/raspberrypi/rpi_stream.h         |  4 +-
 5 files changed, 61 insertions(+), 57 deletions(-)

Patch

diff --git a/include/libcamera/ipa/raspberrypi.h b/include/libcamera/ipa/raspberrypi.h
index dd6ebeac..c9d4aa81 100644
--- a/include/libcamera/ipa/raspberrypi.h
+++ b/include/libcamera/ipa/raspberrypi.h
@@ -10,25 +10,29 @@ 
 #include <libcamera/control_ids.h>
 #include <libcamera/controls.h>
 
-enum RPiConfigParameters {
-	RPI_IPA_CONFIG_LS_TABLE = (1 << 0),
-	RPI_IPA_CONFIG_STAGGERED_WRITE = (1 << 1),
-	RPI_IPA_CONFIG_SENSOR = (1 << 2),
-	RPI_IPA_CONFIG_DROP_FRAMES = (1 << 3),
+namespace libcamera {
+
+namespace RPi {
+
+enum ConfigParameters {
+	IPA_CONFIG_LS_TABLE = (1 << 0),
+	IPA_CONFIG_STAGGERED_WRITE = (1 << 1),
+	IPA_CONFIG_SENSOR = (1 << 2),
+	IPA_CONFIG_DROP_FRAMES = (1 << 3),
 };
 
-enum RPiOperations {
-	RPI_IPA_ACTION_V4L2_SET_STAGGERED = 1,
-	RPI_IPA_ACTION_V4L2_SET_ISP,
-	RPI_IPA_ACTION_STATS_METADATA_COMPLETE,
-	RPI_IPA_ACTION_RUN_ISP,
-	RPI_IPA_ACTION_EMBEDDED_COMPLETE,
-	RPI_IPA_EVENT_SIGNAL_STAT_READY,
-	RPI_IPA_EVENT_SIGNAL_ISP_PREPARE,
-	RPI_IPA_EVENT_QUEUE_REQUEST,
+enum Operations {
+	IPA_ACTION_V4L2_SET_STAGGERED = 1,
+	IPA_ACTION_V4L2_SET_ISP,
+	IPA_ACTION_STATS_METADATA_COMPLETE,
+	IPA_ACTION_RUN_ISP,
+	IPA_ACTION_EMBEDDED_COMPLETE,
+	IPA_EVENT_SIGNAL_STAT_READY,
+	IPA_EVENT_SIGNAL_ISP_PREPARE,
+	IPA_EVENT_QUEUE_REQUEST,
 };
 
-enum RPiBufferMask {
+enum BufferMask {
 	ID		= 0x00ffff,
 	STATS		= 0x010000,
 	EMBEDDED_DATA	= 0x020000,
@@ -39,10 +43,8 @@  enum RPiBufferMask {
 /* Size of the LS grid allocation. */
 #define MAX_LS_GRID_SIZE (32 << 10)
 
-namespace libcamera {
-
 /* List of controls handled by the Raspberry Pi IPA */
-static const ControlInfoMap RPiControls = {
+static const ControlInfoMap Controls = {
 	{ &controls::AeEnable, ControlInfo(false, true) },
 	{ &controls::ExposureTime, ControlInfo(0, 999999) },
 	{ &controls::AnalogueGain, ControlInfo(1.0f, 32.0f) },
@@ -60,6 +62,8 @@  static const ControlInfoMap RPiControls = {
 	{ &controls::ColourCorrectionMatrix, ControlInfo(-16.0f, 16.0f) },
 };
 
+} /* namespace RPi */
+
 } /* namespace libcamera */
 
 #endif /* __LIBCAMERA_IPA_INTERFACE_RASPBERRYPI_H__ */
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 1d3136be..0c0dc743 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -224,7 +224,7 @@  void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 		result->data.push_back(exposureDelay);
 		result->data.push_back(sensorMetadata);
 
-		result->operation |= RPI_IPA_CONFIG_STAGGERED_WRITE;
+		result->operation |= RPi::IPA_CONFIG_STAGGERED_WRITE;
 	}
 
 	/* Re-assemble camera mode using the sensor info. */
@@ -250,7 +250,7 @@  void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 	}
 
 	result->data.push_back(drop_frame);
-	result->operation |= RPI_IPA_CONFIG_DROP_FRAMES;
+	result->operation |= RPi::IPA_CONFIG_DROP_FRAMES;
 
 	struct AgcStatus agcStatus;
 	/* These zero values mean not program anything (unless overwritten). */
@@ -278,13 +278,13 @@  void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 		applyAGC(&agcStatus, ctrls);
 		result->controls.push_back(ctrls);
 
-		result->operation |= RPI_IPA_CONFIG_SENSOR;
+		result->operation |= RPi::IPA_CONFIG_SENSOR;
 	}
 
 	lastMode_ = mode_;
 
 	/* Store the lens shading table pointer and handle if available. */
-	if (ipaConfig.operation & RPI_IPA_CONFIG_LS_TABLE) {
+	if (ipaConfig.operation & RPi::IPA_CONFIG_LS_TABLE) {
 		/* Remove any previous table, if there was one. */
 		if (lsTable_) {
 			munmap(lsTable_, MAX_LS_GRID_SIZE);
@@ -340,7 +340,7 @@  void IPARPi::unmapBuffers(const std::vector<unsigned int> &ids)
 void IPARPi::processEvent(const IPAOperationData &event)
 {
 	switch (event.operation) {
-	case RPI_IPA_EVENT_SIGNAL_STAT_READY: {
+	case RPi::IPA_EVENT_SIGNAL_STAT_READY: {
 		unsigned int bufferId = event.data[0];
 
 		if (++check_count_ != frame_count_) /* assert here? */
@@ -351,14 +351,14 @@  void IPARPi::processEvent(const IPAOperationData &event)
 		reportMetadata();
 
 		IPAOperationData op;
-		op.operation = RPI_IPA_ACTION_STATS_METADATA_COMPLETE;
-		op.data = { bufferId & RPiBufferMask::ID };
+		op.operation = RPi::IPA_ACTION_STATS_METADATA_COMPLETE;
+		op.data = { bufferId & RPi::BufferMask::ID };
 		op.controls = { libcameraMetadata_ };
 		queueFrameAction.emit(0, op);
 		break;
 	}
 
-	case RPI_IPA_EVENT_SIGNAL_ISP_PREPARE: {
+	case RPi::IPA_EVENT_SIGNAL_ISP_PREPARE: {
 		unsigned int embeddedbufferId = event.data[0];
 		unsigned int bayerbufferId = event.data[1];
 
@@ -372,13 +372,13 @@  void IPARPi::processEvent(const IPAOperationData &event)
 
 		/* Ready to push the input buffer into the ISP. */
 		IPAOperationData op;
-		op.operation = RPI_IPA_ACTION_RUN_ISP;
-		op.data = { bayerbufferId & RPiBufferMask::ID };
+		op.operation = RPi::IPA_ACTION_RUN_ISP;
+		op.data = { bayerbufferId & RPi::BufferMask::ID };
 		queueFrameAction.emit(0, op);
 		break;
 	}
 
-	case RPI_IPA_EVENT_QUEUE_REQUEST: {
+	case RPi::IPA_EVENT_QUEUE_REQUEST: {
 		queueRequest(event.controls[0]);
 		break;
 	}
@@ -699,8 +699,8 @@  void IPARPi::queueRequest(const ControlList &controls)
 void IPARPi::returnEmbeddedBuffer(unsigned int bufferId)
 {
 	IPAOperationData op;
-	op.operation = RPI_IPA_ACTION_EMBEDDED_COMPLETE;
-	op.data = { bufferId & RPiBufferMask::ID };
+	op.operation = RPi::IPA_ACTION_EMBEDDED_COMPLETE;
+	op.data = { bufferId & RPi::BufferMask::ID };
 	queueFrameAction.emit(0, op);
 }
 
@@ -764,7 +764,7 @@  void IPARPi::prepareISP(unsigned int bufferId)
 
 		if (!ctrls.empty()) {
 			IPAOperationData op;
-			op.operation = RPI_IPA_ACTION_V4L2_SET_ISP;
+			op.operation = RPi::IPA_ACTION_V4L2_SET_ISP;
 			op.controls.push_back(ctrls);
 			queueFrameAction.emit(0, op);
 		}
@@ -824,7 +824,7 @@  void IPARPi::processStats(unsigned int bufferId)
 		applyAGC(&agcStatus, ctrls);
 
 		IPAOperationData op;
-		op.operation = RPI_IPA_ACTION_V4L2_SET_STAGGERED;
+		op.operation = RPi::IPA_ACTION_V4L2_SET_STAGGERED;
 		op.controls.push_back(ctrls);
 		queueFrameAction.emit(0, op);
 	}
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 5ed74d51..35dbe0fb 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -837,7 +837,7 @@  bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)
 	}
 
 	/* Register the controls that the Raspberry Pi IPA can handle. */
-	data->controlInfo_ = RPiControls;
+	data->controlInfo_ = RPi::Controls;
 	/* Initialize the camera properties. */
 	data->properties_ = data->sensor_->properties();
 
@@ -925,8 +925,8 @@  int PipelineHandlerRPi::prepareBuffers(Camera *camera)
 	 * Pass the stats and embedded data buffers to the IPA. No other
 	 * buffers need to be passed.
 	 */
-	mapBuffers(camera, data->isp_[Isp::Stats].getBuffers(), RPiBufferMask::STATS);
-	mapBuffers(camera, data->unicam_[Unicam::Embedded].getBuffers(), RPiBufferMask::EMBEDDED_DATA);
+	mapBuffers(camera, data->isp_[Isp::Stats].getBuffers(), RPi::BufferMask::STATS);
+	mapBuffers(camera, data->unicam_[Unicam::Embedded].getBuffers(), RPi::BufferMask::EMBEDDED_DATA);
 
 	return 0;
 }
@@ -1017,7 +1017,7 @@  int RPiCameraData::configureIPA()
 			return -ENOMEM;
 
 		/* Allow the IPA to mmap the LS table via the file descriptor. */
-		ipaConfig.operation = RPI_IPA_CONFIG_LS_TABLE;
+		ipaConfig.operation = RPi::IPA_CONFIG_LS_TABLE;
 		ipaConfig.data = { static_cast<unsigned int>(lsTable_.fd()) };
 	}
 
@@ -1035,7 +1035,7 @@  int RPiCameraData::configureIPA()
 			&result);
 
 	unsigned int resultIdx = 0;
-	if (result.operation & RPI_IPA_CONFIG_STAGGERED_WRITE) {
+	if (result.operation & RPi::IPA_CONFIG_STAGGERED_WRITE) {
 		/*
 		 * Setup our staggered control writer with the sensor default
 		 * gain and exposure delays.
@@ -1048,13 +1048,13 @@  int RPiCameraData::configureIPA()
 		}
 	}
 
-	if (result.operation & RPI_IPA_CONFIG_SENSOR) {
+	if (result.operation & RPi::IPA_CONFIG_SENSOR) {
 		const ControlList &ctrls = result.controls[0];
 		if (!staggeredCtrl_.set(ctrls))
 			LOG(RPI, Error) << "V4L2 staggered set failed";
 	}
 
-	if (result.operation & RPI_IPA_CONFIG_DROP_FRAMES) {
+	if (result.operation & RPi::IPA_CONFIG_DROP_FRAMES) {
 		/* Configure the number of dropped frames required on startup. */
 		dropFrameCount_ = result.data[resultIdx++];
 	}
@@ -1070,14 +1070,14 @@  void RPiCameraData::queueFrameAction([[maybe_unused]] unsigned int frame,
 	 * a stopped state.
 	 */
 	switch (action.operation) {
-	case RPI_IPA_ACTION_V4L2_SET_STAGGERED: {
+	case RPi::IPA_ACTION_V4L2_SET_STAGGERED: {
 		const ControlList &controls = action.controls[0];
 		if (!staggeredCtrl_.set(controls))
 			LOG(RPI, Error) << "V4L2 staggered set failed";
 		goto done;
 	}
 
-	case RPI_IPA_ACTION_V4L2_SET_ISP: {
+	case RPi::IPA_ACTION_V4L2_SET_ISP: {
 		ControlList controls = action.controls[0];
 		isp_[Isp::Input].dev()->setControls(&controls);
 		goto done;
@@ -1092,7 +1092,7 @@  void RPiCameraData::queueFrameAction([[maybe_unused]] unsigned int frame,
 	 * is in a stopped state.
 	 */
 	switch (action.operation) {
-	case RPI_IPA_ACTION_STATS_METADATA_COMPLETE: {
+	case RPi::IPA_ACTION_STATS_METADATA_COMPLETE: {
 		unsigned int bufferId = action.data[0];
 		FrameBuffer *buffer = isp_[Isp::Stats].getBuffers().at(bufferId);
 
@@ -1103,14 +1103,14 @@  void RPiCameraData::queueFrameAction([[maybe_unused]] unsigned int frame,
 		break;
 	}
 
-	case RPI_IPA_ACTION_EMBEDDED_COMPLETE: {
+	case RPi::IPA_ACTION_EMBEDDED_COMPLETE: {
 		unsigned int bufferId = action.data[0];
 		FrameBuffer *buffer = unicam_[Unicam::Embedded].getBuffers().at(bufferId);
 		handleStreamBuffer(buffer, &unicam_[Unicam::Embedded]);
 		break;
 	}
 
-	case RPI_IPA_ACTION_RUN_ISP: {
+	case RPi::IPA_ACTION_RUN_ISP: {
 		unsigned int bufferId = action.data[0];
 		FrameBuffer *buffer = unicam_[Unicam::Image].getBuffers().at(bufferId);
 
@@ -1228,8 +1228,8 @@  void RPiCameraData::ispOutputDequeue(FrameBuffer *buffer)
 	 */
 	if (stream == &isp_[Isp::Stats]) {
 		IPAOperationData op;
-		op.operation = RPI_IPA_EVENT_SIGNAL_STAT_READY;
-		op.data = { RPiBufferMask::STATS | static_cast<unsigned int>(index) };
+		op.operation = RPi::IPA_EVENT_SIGNAL_STAT_READY;
+		op.data = { RPi::BufferMask::STATS | static_cast<unsigned int>(index) };
 		ipa_->processEvent(op);
 	} else {
 		/* Any other ISP output can be handed back to the application now. */
@@ -1334,7 +1334,7 @@  void RPiCameraData::handleExternalBuffer(FrameBuffer *buffer, RPi::Stream *strea
 {
 	unsigned int id = stream->getBufferId(buffer);
 
-	if (!(id & RPiBufferMask::EXTERNAL_BUFFER))
+	if (!(id & RPi::BufferMask::EXTERNAL_BUFFER))
 		return;
 
 	/* Stop the Stream object from tracking the buffer. */
@@ -1454,7 +1454,7 @@  void RPiCameraData::tryRunPipeline()
 	 * queue the ISP output buffer listed in the request to start the HW
 	 * pipeline.
 	 */
-	op.operation = RPI_IPA_EVENT_QUEUE_REQUEST;
+	op.operation = RPi::IPA_EVENT_QUEUE_REQUEST;
 	op.controls = { request->controls() };
 	ipa_->processEvent(op);
 
@@ -1468,13 +1468,13 @@  void RPiCameraData::tryRunPipeline()
 	unsigned int bayerId = unicam_[Unicam::Image].getBufferId(bayerBuffer);
 	unsigned int embeddedId = unicam_[Unicam::Embedded].getBufferId(embeddedBuffer);
 
-	LOG(RPI, Debug) << "Signalling RPI_IPA_EVENT_SIGNAL_ISP_PREPARE:"
+	LOG(RPI, Debug) << "Signalling RPi::IPA_EVENT_SIGNAL_ISP_PREPARE:"
 			<< " Bayer buffer id: " << bayerId
 			<< " Embedded buffer id: " << embeddedId;
 
-	op.operation = RPI_IPA_EVENT_SIGNAL_ISP_PREPARE;
-	op.data = { RPiBufferMask::EMBEDDED_DATA | embeddedId,
-		    RPiBufferMask::BAYER_DATA | bayerId };
+	op.operation = RPi::IPA_EVENT_SIGNAL_ISP_PREPARE;
+	op.data = { RPi::BufferMask::EMBEDDED_DATA | embeddedId,
+		    RPi::BufferMask::BAYER_DATA | bayerId };
 	ipa_->processEvent(op);
 }
 
diff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp b/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp
index 3ee859e9..1a42cc17 100644
--- a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp
+++ b/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp
@@ -70,7 +70,7 @@  int Stream::getBufferId(FrameBuffer *buffer) const
 
 void Stream::setExternalBuffer(FrameBuffer *buffer)
 {
-	bufferMap_.emplace(RPiBufferMask::EXTERNAL_BUFFER | id_.get(), buffer);
+	bufferMap_.emplace(RPi::BufferMask::EXTERNAL_BUFFER | id_.get(), buffer);
 }
 
 void Stream::removeExternalBuffer(FrameBuffer *buffer)
@@ -78,7 +78,7 @@  void Stream::removeExternalBuffer(FrameBuffer *buffer)
 	int id = getBufferId(buffer);
 
 	/* Ensure we have this buffer in the stream, and it is marked external. */
-	ASSERT(id != -1 && (id & RPiBufferMask::EXTERNAL_BUFFER));
+	ASSERT(id != -1 && (id & RPi::BufferMask::EXTERNAL_BUFFER));
 	bufferMap_.erase(id);
 }
 
diff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.h b/src/libcamera/pipeline/raspberrypi/rpi_stream.h
index cb097e1c..0b502f64 100644
--- a/src/libcamera/pipeline/raspberrypi/rpi_stream.h
+++ b/src/libcamera/pipeline/raspberrypi/rpi_stream.h
@@ -31,13 +31,13 @@  class Stream : public libcamera::Stream
 {
 public:
 	Stream()
-		: id_(RPiBufferMask::ID)
+		: id_(RPi::BufferMask::ID)
 	{
 	}
 
 	Stream(const char *name, MediaEntity *dev, bool importOnly = false)
 		: external_(false), importOnly_(importOnly), name_(name),
-		  dev_(std::make_unique<V4L2VideoDevice>(dev)), id_(RPiBufferMask::ID)
+		  dev_(std::make_unique<V4L2VideoDevice>(dev)), id_(RPi::BufferMask::ID)
 	{
 	}