[libcamera-devel] [PATCH 2/4] ipa: raspberrypi: Move IPA parameters to the RPi namespace
Jacopo Mondi
jacopo at jmondi.org
Wed Sep 23 09:54:16 CEST 2020
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 at 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 at 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 at lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
More information about the libcamera-devel
mailing list