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

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

Commit Message

Naushir Patuck Sept. 22, 2020, 9:50 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>
---
 include/libcamera/ipa/raspberrypi.h           | 40 +++++----
 src/ipa/raspberrypi/raspberrypi.cpp           | 82 +++++++++----------
 .../pipeline/raspberrypi/raspberrypi.cpp      | 40 ++++-----
 .../pipeline/raspberrypi/rpi_stream.cpp       |  4 +-
 .../pipeline/raspberrypi/rpi_stream.h         |  4 +-
 5 files changed, 87 insertions(+), 83 deletions(-)

Comments

Jacopo Mondi Sept. 23, 2020, 7:47 a.m. UTC | #1
Hi Naush,

On Tue, Sep 22, 2020 at 10:50:16AM +0100, Naushir Patuck wrote:
> 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>
> ---
>  include/libcamera/ipa/raspberrypi.h           | 40 +++++----
>  src/ipa/raspberrypi/raspberrypi.cpp           | 82 +++++++++----------
>  .../pipeline/raspberrypi/raspberrypi.cpp      | 40 ++++-----
>  .../pipeline/raspberrypi/rpi_stream.cpp       |  4 +-
>  .../pipeline/raspberrypi/rpi_stream.h         |  4 +-
>  5 files changed, 87 insertions(+), 83 deletions(-)
>
> 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 0555cc4e..28f81824 100644
> --- a/src/ipa/raspberrypi/raspberrypi.cpp
> +++ b/src/ipa/raspberrypi/raspberrypi.cpp
> @@ -125,10 +125,10 @@ private:
>  	CameraMode lastMode_;
>
>  	/* Raspberry Pi controller specific defines. */
> -	std::unique_ptr<RPi::CamHelper> helper_;
> -	RPi::Controller controller_;
> +	std::unique_ptr<::RPi::CamHelper> helper_;
> +	::RPi::Controller controller_;

Is the leading :: required by the compiler ? isn't the IPA in the
libcamera namespace already ?

>  	bool controllerInit_;
> -	RPi::Metadata rpiMetadata_;
> +	::RPi::Metadata rpiMetadata_;
>
>  	/*
>  	 * We count frames to decide if the frame must be hidden (e.g. from
> @@ -211,7 +211,7 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
>  	 */
>  	std::string cameraName(sensorInfo.model);
>  	if (!helper_) {
> -		helper_ = std::unique_ptr<RPi::CamHelper>(RPi::CamHelper::Create(cameraName));
> +		helper_ = std::unique_ptr<::RPi::CamHelper>(::RPi::CamHelper::Create(cameraName));
>  		/*
>  		 * Pass out the sensor config to the pipeline handler in order
>  		 * to setup the staggered writer class.
> @@ -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). */
> @@ -268,7 +268,7 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
>  		agcStatus.analogue_gain = DEFAULT_ANALOGUE_GAIN;
>  	}
>
> -	RPi::Metadata metadata;
> +	::RPi::Metadata metadata;
>  	controller_.SwitchMode(mode_, &metadata);
>
>  	/* SwitchMode may supply updated exposure/gain values to use. */
> @@ -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;
>  	}
> @@ -391,7 +391,7 @@ void IPARPi::processEvent(const IPAOperationData &event)
>
>  void IPARPi::reportMetadata()
>  {
> -	std::unique_lock<RPi::Metadata> lock(rpiMetadata_);
> +	std::unique_lock<::RPi::Metadata> lock(rpiMetadata_);
>
>  	/*
>  	 * Certain information about the current frame and how it will be
> @@ -496,7 +496,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>
>  		switch (ctrl.first) {
>  		case controls::AE_ENABLE: {
> -			RPi::Algorithm *agc = controller_.GetAlgorithm("agc");
> +			::RPi::Algorithm *agc = controller_.GetAlgorithm("agc");
>  			ASSERT(agc);
>  			if (ctrl.second.get<bool>() == false)
>  				agc->Pause();
> @@ -508,7 +508,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::EXPOSURE_TIME: {
> -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
>  				controller_.GetAlgorithm("agc"));
>  			ASSERT(agc);
>  			/* This expects units of micro-seconds. */
> @@ -522,7 +522,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::ANALOGUE_GAIN: {
> -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
>  				controller_.GetAlgorithm("agc"));
>  			ASSERT(agc);
>  			agc->SetFixedAnalogueGain(ctrl.second.get<float>());
> @@ -536,7 +536,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::AE_METERING_MODE: {
> -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
>  				controller_.GetAlgorithm("agc"));
>  			ASSERT(agc);
>
> @@ -552,7 +552,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::AE_CONSTRAINT_MODE: {
> -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
>  				controller_.GetAlgorithm("agc"));
>  			ASSERT(agc);
>
> @@ -568,7 +568,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::AE_EXPOSURE_MODE: {
> -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
>  				controller_.GetAlgorithm("agc"));
>  			ASSERT(agc);
>
> @@ -584,7 +584,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::EXPOSURE_VALUE: {
> -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
>  				controller_.GetAlgorithm("agc"));
>  			ASSERT(agc);
>
> @@ -600,7 +600,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::AWB_ENABLE: {
> -			RPi::Algorithm *awb = controller_.GetAlgorithm("awb");
> +			::RPi::Algorithm *awb = controller_.GetAlgorithm("awb");
>  			ASSERT(awb);
>
>  			if (ctrl.second.get<bool>() == false)
> @@ -614,7 +614,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::AWB_MODE: {
> -			RPi::AwbAlgorithm *awb = dynamic_cast<RPi::AwbAlgorithm *>(
> +			::RPi::AwbAlgorithm *awb = dynamic_cast<::RPi::AwbAlgorithm *>(
>  				controller_.GetAlgorithm("awb"));
>  			ASSERT(awb);
>
> @@ -631,7 +631,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>
>  		case controls::COLOUR_GAINS: {
>  			auto gains = ctrl.second.get<Span<const float>>();
> -			RPi::AwbAlgorithm *awb = dynamic_cast<RPi::AwbAlgorithm *>(
> +			::RPi::AwbAlgorithm *awb = dynamic_cast<::RPi::AwbAlgorithm *>(
>  				controller_.GetAlgorithm("awb"));
>  			ASSERT(awb);
>
> @@ -644,7 +644,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::BRIGHTNESS: {
> -			RPi::ContrastAlgorithm *contrast = dynamic_cast<RPi::ContrastAlgorithm *>(
> +			::RPi::ContrastAlgorithm *contrast = dynamic_cast<::RPi::ContrastAlgorithm *>(
>  				controller_.GetAlgorithm("contrast"));
>  			ASSERT(contrast);
>
> @@ -655,7 +655,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::CONTRAST: {
> -			RPi::ContrastAlgorithm *contrast = dynamic_cast<RPi::ContrastAlgorithm *>(
> +			::RPi::ContrastAlgorithm *contrast = dynamic_cast<::RPi::ContrastAlgorithm *>(
>  				controller_.GetAlgorithm("contrast"));
>  			ASSERT(contrast);
>
> @@ -666,7 +666,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::SATURATION: {
> -			RPi::CcmAlgorithm *ccm = dynamic_cast<RPi::CcmAlgorithm *>(
> +			::RPi::CcmAlgorithm *ccm = dynamic_cast<::RPi::CcmAlgorithm *>(
>  				controller_.GetAlgorithm("ccm"));
>  			ASSERT(ccm);
>
> @@ -677,7 +677,7 @@ void IPARPi::queueRequest(const ControlList &controls)
>  		}
>
>  		case controls::SHARPNESS: {
> -			RPi::SharpenAlgorithm *sharpen = dynamic_cast<RPi::SharpenAlgorithm *>(
> +			::RPi::SharpenAlgorithm *sharpen = dynamic_cast<::RPi::SharpenAlgorithm *>(
>  				controller_.GetAlgorithm("sharpen"));
>  			ASSERT(sharpen);
>
> @@ -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);
>  }
>
> @@ -720,7 +720,7 @@ void IPARPi::prepareISP(unsigned int bufferId)
>  		controller_.Prepare(&rpiMetadata_);
>
>  		/* Lock the metadata buffer to avoid constant locks/unlocks. */
> -		std::unique_lock<RPi::Metadata> lock(rpiMetadata_);
> +		std::unique_lock<::RPi::Metadata> lock(rpiMetadata_);
>
>  		AwbStatus *awbStatus = rpiMetadata_.GetLocked<AwbStatus>("awb.status");
>  		if (awbStatus)
> @@ -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);
>  		}
> @@ -781,18 +781,18 @@ bool IPARPi::parseEmbeddedData(unsigned int bufferId, struct DeviceStatus &devic
>
>  	int size = buffers_.find(bufferId)->second.planes()[0].length;
>  	helper_->Parser().SetBufferSize(size);
> -	RPi::MdParser::Status status = helper_->Parser().Parse(it->second);
> -	if (status != RPi::MdParser::Status::OK) {
> +	::RPi::MdParser::Status status = helper_->Parser().Parse(it->second);
> +	if (status != ::RPi::MdParser::Status::OK) {
>  		LOG(IPARPI, Error) << "Embedded Buffer parsing failed, error " << status;
>  	} else {
>  		uint32_t exposure_lines, gain_code;
> -		if (helper_->Parser().GetExposureLines(exposure_lines) != RPi::MdParser::Status::OK) {
> +		if (helper_->Parser().GetExposureLines(exposure_lines) != ::RPi::MdParser::Status::OK) {
>  			LOG(IPARPI, Error) << "Exposure time failed";
>  			return false;
>  		}
>
>  		deviceStatus.shutter_speed = helper_->Exposure(exposure_lines);
> -		if (helper_->Parser().GetGainCode(gain_code) != RPi::MdParser::Status::OK) {
> +		if (helper_->Parser().GetGainCode(gain_code) != ::RPi::MdParser::Status::OK) {
>  			LOG(IPARPI, Error) << "Gain failed";
>  			return false;
>  		}
> @@ -815,7 +815,7 @@ void IPARPi::processStats(unsigned int bufferId)
>  	}
>
>  	bcm2835_isp_stats *stats = static_cast<bcm2835_isp_stats *>(it->second);
> -	RPi::StatisticsPtr statistics = std::make_shared<bcm2835_isp_stats>(*stats);
> +	::RPi::StatisticsPtr statistics = std::make_shared<bcm2835_isp_stats>(*stats);
>  	controller_.Process(statistics, &rpiMetadata_);
>
>  	struct AgcStatus agcStatus;
> @@ -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)
>  	{
>  	}
>
> --
> 2.25.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Jacopo Mondi Sept. 23, 2020, 7:54 a.m. UTC | #2
Hi Jacopo

On Wed, Sep 23, 2020 at 09:47:44AM +0200, Jacopo Mondi wrote:
> Hi Naush,
>
> On Tue, Sep 22, 2020 at 10:50:16AM +0100, Naushir Patuck wrote:
> > 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>
> > ---
> >  include/libcamera/ipa/raspberrypi.h           | 40 +++++----
> >  src/ipa/raspberrypi/raspberrypi.cpp           | 82 +++++++++----------
> >  .../pipeline/raspberrypi/raspberrypi.cpp      | 40 ++++-----
> >  .../pipeline/raspberrypi/rpi_stream.cpp       |  4 +-
> >  .../pipeline/raspberrypi/rpi_stream.h         |  4 +-
> >  5 files changed, 87 insertions(+), 83 deletions(-)
> >
> > 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 0555cc4e..28f81824 100644
> > --- a/src/ipa/raspberrypi/raspberrypi.cpp
> > +++ b/src/ipa/raspberrypi/raspberrypi.cpp
> > @@ -125,10 +125,10 @@ private:
> >  	CameraMode lastMode_;
> >
> >  	/* Raspberry Pi controller specific defines. */
> > -	std::unique_ptr<RPi::CamHelper> helper_;
> > -	RPi::Controller controller_;
> > +	std::unique_ptr<::RPi::CamHelper> helper_;
> > +	::RPi::Controller controller_;
>
> Is the leading :: required by the compiler ? isn't the IPA in the
> libcamera namespace already ?

See the next patch!
The leading :: serves to differentiate the 'RPi' namespace from the
'libcamera::RPi' one

If you were to resend, I would rename the ::RPi namespace first, then
move the IPA types in the libcamera::RPi one.

Anyway:
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

>
> >  	bool controllerInit_;
> > -	RPi::Metadata rpiMetadata_;
> > +	::RPi::Metadata rpiMetadata_;
> >
> >  	/*
> >  	 * We count frames to decide if the frame must be hidden (e.g. from
> > @@ -211,7 +211,7 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
> >  	 */
> >  	std::string cameraName(sensorInfo.model);
> >  	if (!helper_) {
> > -		helper_ = std::unique_ptr<RPi::CamHelper>(RPi::CamHelper::Create(cameraName));
> > +		helper_ = std::unique_ptr<::RPi::CamHelper>(::RPi::CamHelper::Create(cameraName));
> >  		/*
> >  		 * Pass out the sensor config to the pipeline handler in order
> >  		 * to setup the staggered writer class.
> > @@ -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). */
> > @@ -268,7 +268,7 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
> >  		agcStatus.analogue_gain = DEFAULT_ANALOGUE_GAIN;
> >  	}
> >
> > -	RPi::Metadata metadata;
> > +	::RPi::Metadata metadata;
> >  	controller_.SwitchMode(mode_, &metadata);
> >
> >  	/* SwitchMode may supply updated exposure/gain values to use. */
> > @@ -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;
> >  	}
> > @@ -391,7 +391,7 @@ void IPARPi::processEvent(const IPAOperationData &event)
> >
> >  void IPARPi::reportMetadata()
> >  {
> > -	std::unique_lock<RPi::Metadata> lock(rpiMetadata_);
> > +	std::unique_lock<::RPi::Metadata> lock(rpiMetadata_);
> >
> >  	/*
> >  	 * Certain information about the current frame and how it will be
> > @@ -496,7 +496,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >
> >  		switch (ctrl.first) {
> >  		case controls::AE_ENABLE: {
> > -			RPi::Algorithm *agc = controller_.GetAlgorithm("agc");
> > +			::RPi::Algorithm *agc = controller_.GetAlgorithm("agc");
> >  			ASSERT(agc);
> >  			if (ctrl.second.get<bool>() == false)
> >  				agc->Pause();
> > @@ -508,7 +508,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::EXPOSURE_TIME: {
> > -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> > +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
> >  				controller_.GetAlgorithm("agc"));
> >  			ASSERT(agc);
> >  			/* This expects units of micro-seconds. */
> > @@ -522,7 +522,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::ANALOGUE_GAIN: {
> > -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> > +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
> >  				controller_.GetAlgorithm("agc"));
> >  			ASSERT(agc);
> >  			agc->SetFixedAnalogueGain(ctrl.second.get<float>());
> > @@ -536,7 +536,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::AE_METERING_MODE: {
> > -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> > +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
> >  				controller_.GetAlgorithm("agc"));
> >  			ASSERT(agc);
> >
> > @@ -552,7 +552,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::AE_CONSTRAINT_MODE: {
> > -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> > +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
> >  				controller_.GetAlgorithm("agc"));
> >  			ASSERT(agc);
> >
> > @@ -568,7 +568,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::AE_EXPOSURE_MODE: {
> > -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> > +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
> >  				controller_.GetAlgorithm("agc"));
> >  			ASSERT(agc);
> >
> > @@ -584,7 +584,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::EXPOSURE_VALUE: {
> > -			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
> > +			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
> >  				controller_.GetAlgorithm("agc"));
> >  			ASSERT(agc);
> >
> > @@ -600,7 +600,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::AWB_ENABLE: {
> > -			RPi::Algorithm *awb = controller_.GetAlgorithm("awb");
> > +			::RPi::Algorithm *awb = controller_.GetAlgorithm("awb");
> >  			ASSERT(awb);
> >
> >  			if (ctrl.second.get<bool>() == false)
> > @@ -614,7 +614,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::AWB_MODE: {
> > -			RPi::AwbAlgorithm *awb = dynamic_cast<RPi::AwbAlgorithm *>(
> > +			::RPi::AwbAlgorithm *awb = dynamic_cast<::RPi::AwbAlgorithm *>(
> >  				controller_.GetAlgorithm("awb"));
> >  			ASSERT(awb);
> >
> > @@ -631,7 +631,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >
> >  		case controls::COLOUR_GAINS: {
> >  			auto gains = ctrl.second.get<Span<const float>>();
> > -			RPi::AwbAlgorithm *awb = dynamic_cast<RPi::AwbAlgorithm *>(
> > +			::RPi::AwbAlgorithm *awb = dynamic_cast<::RPi::AwbAlgorithm *>(
> >  				controller_.GetAlgorithm("awb"));
> >  			ASSERT(awb);
> >
> > @@ -644,7 +644,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::BRIGHTNESS: {
> > -			RPi::ContrastAlgorithm *contrast = dynamic_cast<RPi::ContrastAlgorithm *>(
> > +			::RPi::ContrastAlgorithm *contrast = dynamic_cast<::RPi::ContrastAlgorithm *>(
> >  				controller_.GetAlgorithm("contrast"));
> >  			ASSERT(contrast);
> >
> > @@ -655,7 +655,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::CONTRAST: {
> > -			RPi::ContrastAlgorithm *contrast = dynamic_cast<RPi::ContrastAlgorithm *>(
> > +			::RPi::ContrastAlgorithm *contrast = dynamic_cast<::RPi::ContrastAlgorithm *>(
> >  				controller_.GetAlgorithm("contrast"));
> >  			ASSERT(contrast);
> >
> > @@ -666,7 +666,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::SATURATION: {
> > -			RPi::CcmAlgorithm *ccm = dynamic_cast<RPi::CcmAlgorithm *>(
> > +			::RPi::CcmAlgorithm *ccm = dynamic_cast<::RPi::CcmAlgorithm *>(
> >  				controller_.GetAlgorithm("ccm"));
> >  			ASSERT(ccm);
> >
> > @@ -677,7 +677,7 @@ void IPARPi::queueRequest(const ControlList &controls)
> >  		}
> >
> >  		case controls::SHARPNESS: {
> > -			RPi::SharpenAlgorithm *sharpen = dynamic_cast<RPi::SharpenAlgorithm *>(
> > +			::RPi::SharpenAlgorithm *sharpen = dynamic_cast<::RPi::SharpenAlgorithm *>(
> >  				controller_.GetAlgorithm("sharpen"));
> >  			ASSERT(sharpen);
> >
> > @@ -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);
> >  }
> >
> > @@ -720,7 +720,7 @@ void IPARPi::prepareISP(unsigned int bufferId)
> >  		controller_.Prepare(&rpiMetadata_);
> >
> >  		/* Lock the metadata buffer to avoid constant locks/unlocks. */
> > -		std::unique_lock<RPi::Metadata> lock(rpiMetadata_);
> > +		std::unique_lock<::RPi::Metadata> lock(rpiMetadata_);
> >
> >  		AwbStatus *awbStatus = rpiMetadata_.GetLocked<AwbStatus>("awb.status");
> >  		if (awbStatus)
> > @@ -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);
> >  		}
> > @@ -781,18 +781,18 @@ bool IPARPi::parseEmbeddedData(unsigned int bufferId, struct DeviceStatus &devic
> >
> >  	int size = buffers_.find(bufferId)->second.planes()[0].length;
> >  	helper_->Parser().SetBufferSize(size);
> > -	RPi::MdParser::Status status = helper_->Parser().Parse(it->second);
> > -	if (status != RPi::MdParser::Status::OK) {
> > +	::RPi::MdParser::Status status = helper_->Parser().Parse(it->second);
> > +	if (status != ::RPi::MdParser::Status::OK) {
> >  		LOG(IPARPI, Error) << "Embedded Buffer parsing failed, error " << status;
> >  	} else {
> >  		uint32_t exposure_lines, gain_code;
> > -		if (helper_->Parser().GetExposureLines(exposure_lines) != RPi::MdParser::Status::OK) {
> > +		if (helper_->Parser().GetExposureLines(exposure_lines) != ::RPi::MdParser::Status::OK) {
> >  			LOG(IPARPI, Error) << "Exposure time failed";
> >  			return false;
> >  		}
> >
> >  		deviceStatus.shutter_speed = helper_->Exposure(exposure_lines);
> > -		if (helper_->Parser().GetGainCode(gain_code) != RPi::MdParser::Status::OK) {
> > +		if (helper_->Parser().GetGainCode(gain_code) != ::RPi::MdParser::Status::OK) {
> >  			LOG(IPARPI, Error) << "Gain failed";
> >  			return false;
> >  		}
> > @@ -815,7 +815,7 @@ void IPARPi::processStats(unsigned int bufferId)
> >  	}
> >
> >  	bcm2835_isp_stats *stats = static_cast<bcm2835_isp_stats *>(it->second);
> > -	RPi::StatisticsPtr statistics = std::make_shared<bcm2835_isp_stats>(*stats);
> > +	::RPi::StatisticsPtr statistics = std::make_shared<bcm2835_isp_stats>(*stats);
> >  	controller_.Process(statistics, &rpiMetadata_);
> >
> >  	struct AgcStatus agcStatus;
> > @@ -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)
> >  	{
> >  	}
> >
> > --
> > 2.25.1
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel@lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

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 0555cc4e..28f81824 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -125,10 +125,10 @@  private:
 	CameraMode lastMode_;
 
 	/* Raspberry Pi controller specific defines. */
-	std::unique_ptr<RPi::CamHelper> helper_;
-	RPi::Controller controller_;
+	std::unique_ptr<::RPi::CamHelper> helper_;
+	::RPi::Controller controller_;
 	bool controllerInit_;
-	RPi::Metadata rpiMetadata_;
+	::RPi::Metadata rpiMetadata_;
 
 	/*
 	 * We count frames to decide if the frame must be hidden (e.g. from
@@ -211,7 +211,7 @@  void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 	 */
 	std::string cameraName(sensorInfo.model);
 	if (!helper_) {
-		helper_ = std::unique_ptr<RPi::CamHelper>(RPi::CamHelper::Create(cameraName));
+		helper_ = std::unique_ptr<::RPi::CamHelper>(::RPi::CamHelper::Create(cameraName));
 		/*
 		 * Pass out the sensor config to the pipeline handler in order
 		 * to setup the staggered writer class.
@@ -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). */
@@ -268,7 +268,7 @@  void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 		agcStatus.analogue_gain = DEFAULT_ANALOGUE_GAIN;
 	}
 
-	RPi::Metadata metadata;
+	::RPi::Metadata metadata;
 	controller_.SwitchMode(mode_, &metadata);
 
 	/* SwitchMode may supply updated exposure/gain values to use. */
@@ -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;
 	}
@@ -391,7 +391,7 @@  void IPARPi::processEvent(const IPAOperationData &event)
 
 void IPARPi::reportMetadata()
 {
-	std::unique_lock<RPi::Metadata> lock(rpiMetadata_);
+	std::unique_lock<::RPi::Metadata> lock(rpiMetadata_);
 
 	/*
 	 * Certain information about the current frame and how it will be
@@ -496,7 +496,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 
 		switch (ctrl.first) {
 		case controls::AE_ENABLE: {
-			RPi::Algorithm *agc = controller_.GetAlgorithm("agc");
+			::RPi::Algorithm *agc = controller_.GetAlgorithm("agc");
 			ASSERT(agc);
 			if (ctrl.second.get<bool>() == false)
 				agc->Pause();
@@ -508,7 +508,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::EXPOSURE_TIME: {
-			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
+			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
 				controller_.GetAlgorithm("agc"));
 			ASSERT(agc);
 			/* This expects units of micro-seconds. */
@@ -522,7 +522,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::ANALOGUE_GAIN: {
-			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
+			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
 				controller_.GetAlgorithm("agc"));
 			ASSERT(agc);
 			agc->SetFixedAnalogueGain(ctrl.second.get<float>());
@@ -536,7 +536,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::AE_METERING_MODE: {
-			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
+			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
 				controller_.GetAlgorithm("agc"));
 			ASSERT(agc);
 
@@ -552,7 +552,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::AE_CONSTRAINT_MODE: {
-			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
+			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
 				controller_.GetAlgorithm("agc"));
 			ASSERT(agc);
 
@@ -568,7 +568,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::AE_EXPOSURE_MODE: {
-			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
+			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
 				controller_.GetAlgorithm("agc"));
 			ASSERT(agc);
 
@@ -584,7 +584,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::EXPOSURE_VALUE: {
-			RPi::AgcAlgorithm *agc = dynamic_cast<RPi::AgcAlgorithm *>(
+			::RPi::AgcAlgorithm *agc = dynamic_cast<::RPi::AgcAlgorithm *>(
 				controller_.GetAlgorithm("agc"));
 			ASSERT(agc);
 
@@ -600,7 +600,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::AWB_ENABLE: {
-			RPi::Algorithm *awb = controller_.GetAlgorithm("awb");
+			::RPi::Algorithm *awb = controller_.GetAlgorithm("awb");
 			ASSERT(awb);
 
 			if (ctrl.second.get<bool>() == false)
@@ -614,7 +614,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::AWB_MODE: {
-			RPi::AwbAlgorithm *awb = dynamic_cast<RPi::AwbAlgorithm *>(
+			::RPi::AwbAlgorithm *awb = dynamic_cast<::RPi::AwbAlgorithm *>(
 				controller_.GetAlgorithm("awb"));
 			ASSERT(awb);
 
@@ -631,7 +631,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 
 		case controls::COLOUR_GAINS: {
 			auto gains = ctrl.second.get<Span<const float>>();
-			RPi::AwbAlgorithm *awb = dynamic_cast<RPi::AwbAlgorithm *>(
+			::RPi::AwbAlgorithm *awb = dynamic_cast<::RPi::AwbAlgorithm *>(
 				controller_.GetAlgorithm("awb"));
 			ASSERT(awb);
 
@@ -644,7 +644,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::BRIGHTNESS: {
-			RPi::ContrastAlgorithm *contrast = dynamic_cast<RPi::ContrastAlgorithm *>(
+			::RPi::ContrastAlgorithm *contrast = dynamic_cast<::RPi::ContrastAlgorithm *>(
 				controller_.GetAlgorithm("contrast"));
 			ASSERT(contrast);
 
@@ -655,7 +655,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::CONTRAST: {
-			RPi::ContrastAlgorithm *contrast = dynamic_cast<RPi::ContrastAlgorithm *>(
+			::RPi::ContrastAlgorithm *contrast = dynamic_cast<::RPi::ContrastAlgorithm *>(
 				controller_.GetAlgorithm("contrast"));
 			ASSERT(contrast);
 
@@ -666,7 +666,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::SATURATION: {
-			RPi::CcmAlgorithm *ccm = dynamic_cast<RPi::CcmAlgorithm *>(
+			::RPi::CcmAlgorithm *ccm = dynamic_cast<::RPi::CcmAlgorithm *>(
 				controller_.GetAlgorithm("ccm"));
 			ASSERT(ccm);
 
@@ -677,7 +677,7 @@  void IPARPi::queueRequest(const ControlList &controls)
 		}
 
 		case controls::SHARPNESS: {
-			RPi::SharpenAlgorithm *sharpen = dynamic_cast<RPi::SharpenAlgorithm *>(
+			::RPi::SharpenAlgorithm *sharpen = dynamic_cast<::RPi::SharpenAlgorithm *>(
 				controller_.GetAlgorithm("sharpen"));
 			ASSERT(sharpen);
 
@@ -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);
 }
 
@@ -720,7 +720,7 @@  void IPARPi::prepareISP(unsigned int bufferId)
 		controller_.Prepare(&rpiMetadata_);
 
 		/* Lock the metadata buffer to avoid constant locks/unlocks. */
-		std::unique_lock<RPi::Metadata> lock(rpiMetadata_);
+		std::unique_lock<::RPi::Metadata> lock(rpiMetadata_);
 
 		AwbStatus *awbStatus = rpiMetadata_.GetLocked<AwbStatus>("awb.status");
 		if (awbStatus)
@@ -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);
 		}
@@ -781,18 +781,18 @@  bool IPARPi::parseEmbeddedData(unsigned int bufferId, struct DeviceStatus &devic
 
 	int size = buffers_.find(bufferId)->second.planes()[0].length;
 	helper_->Parser().SetBufferSize(size);
-	RPi::MdParser::Status status = helper_->Parser().Parse(it->second);
-	if (status != RPi::MdParser::Status::OK) {
+	::RPi::MdParser::Status status = helper_->Parser().Parse(it->second);
+	if (status != ::RPi::MdParser::Status::OK) {
 		LOG(IPARPI, Error) << "Embedded Buffer parsing failed, error " << status;
 	} else {
 		uint32_t exposure_lines, gain_code;
-		if (helper_->Parser().GetExposureLines(exposure_lines) != RPi::MdParser::Status::OK) {
+		if (helper_->Parser().GetExposureLines(exposure_lines) != ::RPi::MdParser::Status::OK) {
 			LOG(IPARPI, Error) << "Exposure time failed";
 			return false;
 		}
 
 		deviceStatus.shutter_speed = helper_->Exposure(exposure_lines);
-		if (helper_->Parser().GetGainCode(gain_code) != RPi::MdParser::Status::OK) {
+		if (helper_->Parser().GetGainCode(gain_code) != ::RPi::MdParser::Status::OK) {
 			LOG(IPARPI, Error) << "Gain failed";
 			return false;
 		}
@@ -815,7 +815,7 @@  void IPARPi::processStats(unsigned int bufferId)
 	}
 
 	bcm2835_isp_stats *stats = static_cast<bcm2835_isp_stats *>(it->second);
-	RPi::StatisticsPtr statistics = std::make_shared<bcm2835_isp_stats>(*stats);
+	::RPi::StatisticsPtr statistics = std::make_shared<bcm2835_isp_stats>(*stats);
 	controller_.Process(statistics, &rpiMetadata_);
 
 	struct AgcStatus agcStatus;
@@ -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)
 	{
 	}