<div dir="ltr"><div dir="ltr">Hi Kieran,<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 18 Feb 2021 at 11:16, Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com">kieran.bingham@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On 18/02/2021 11:14, Kieran Bingham wrote:<br>
> Hi Naush,<br>
> <br>
> On 17/02/2021 10:34, Naushir Patuck wrote:<br>
>> Rename the IPA interface namespace to ipa::RPi for consistency with<br>
>> the libcamera::RPi namespace label.<br>
>><br>
>> There is no functional change in this commit.<br>
> <br>
> Is this a v2 of [1/3]?<br>
<br>
Ahem, this is 2/3<br>
<br>
For me it helps to include a cover letter on a series, even if it's<br>
blank - because otherwise all of the patcheas get chained from 1/3,<br>
making 1/3 look like a cover letter :S<br></blockquote><div><br></div><div>Yes, it is the v2.  Sorry for the confusion, I will always put a cover letter on patch series in the future!</div><div><br></div><div>Regards,</div><div>Naush</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
--<br>
Kieran<br>
<br>
<br>
> <br>
> It looks like it so I think we can add:<br>
> <br>
> Reviewed-by: Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com" target="_blank">kieran.bingham@ideasonboard.com</a>><br>
> <br>
> <br>
>> Signed-off-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>><br>
>> ---<br>
>>  include/libcamera/ipa/raspberrypi.mojom  Â  Â  Â |  2 +-<br>
>>  src/ipa/raspberrypi/raspberrypi.cpp  Â  Â  Â  Â  Â | 38 +++++++++----------<br>
>>  .../pipeline/raspberrypi/raspberrypi.cpp  Â  Â  | 30 +++++++--------<br>
>>  .../pipeline/raspberrypi/rpi_stream.cpp  Â  Â  Â |  4 +-<br>
>>  .../pipeline/raspberrypi/rpi_stream.h  Â  Â  Â  Â |  4 +-<br>
>>  5 files changed, 39 insertions(+), 39 deletions(-)<br>
>><br>
>> diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom<br>
>> index 9c05cc68cceb..5a27b1e4fc2d 100644<br>
>> --- a/include/libcamera/ipa/raspberrypi.mojom<br>
>> +++ b/include/libcamera/ipa/raspberrypi.mojom<br>
>> @@ -1,6 +1,6 @@<br>
>>  /* SPDX-License-Identifier: LGPL-2.1-or-later */<br>
>>  <br>
>> -module ipa.rpi;<br>
>> +module ipa.RPi;<br>
>>  <br>
>>  import "include/libcamera/ipa/core.mojom";<br>
>>  <br>
>> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp<br>
>> index 974f4ec63058..1226ea514521 100644<br>
>> --- a/src/ipa/raspberrypi/raspberrypi.cpp<br>
>> +++ b/src/ipa/raspberrypi/raspberrypi.cpp<br>
>> @@ -63,7 +63,7 @@ constexpr double defaultMaxFrameDuration = 1e6 / 0.01;<br>
>>  <br>
>>  LOG_DEFINE_CATEGORY(IPARPI)<br>
>>  <br>
>> -class IPARPi : public ipa::rpi::IPARPiInterface<br>
>> +class IPARPi : public ipa::RPi::IPARPiInterface<br>
>>  {<br>
>>  public:<br>
>>  Â  Â  IPARPi()<br>
>> @@ -76,24 +76,24 @@ public:<br>
>>  Â  Â  ~IPARPi()<br>
>>  Â  Â  {<br>
>>  Â  Â  Â  Â  Â  Â  if (lsTable_)<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â  munmap(lsTable_, ipa::rpi::MaxLsGridSize);<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â  munmap(lsTable_, ipa::RPi::MaxLsGridSize);<br>
>>  Â  Â  }<br>
>>  <br>
>>  Â  Â  int init(const IPASettings &settings) override;<br>
>> -  Â  void start(const ipa::rpi::StartControls &data,<br>
>> -  Â  Â  Â  Â  Â  Â  Â ipa::rpi::StartControls *result) override;<br>
>> +  Â  void start(const ipa::RPi::StartControls &data,<br>
>> +  Â  Â  Â  Â  Â  Â  Â ipa::RPi::StartControls *result) override;<br>
>>  Â  Â  void stop() override {}<br>
>>  <br>
>>  Â  Â  void configure(const CameraSensorInfo &sensorInfo,<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const std::map<unsigned int, IPAStream> &streamConfig,<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const std::map<unsigned int, ControlInfoMap> &entityControls,<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â const ipa::rpi::ConfigInput &data,<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â ipa::rpi::ConfigOutput *response, int32_t *ret) override;<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â const ipa::RPi::ConfigInput &data,<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â ipa::RPi::ConfigOutput *response, int32_t *ret) override;<br>
>>  Â  Â  void mapBuffers(const std::vector<IPABuffer> &buffers) override;<br>
>>  Â  Â  void unmapBuffers(const std::vector<unsigned int> &ids) override;<br>
>>  Â  Â  void signalStatReady(const uint32_t bufferId) override;<br>
>>  Â  Â  void signalQueueRequest(const ControlList &controls) override;<br>
>> -  Â  void signalIspPrepare(const ipa::rpi::ISPConfig &data) override;<br>
>> +  Â  void signalIspPrepare(const ipa::RPi::ISPConfig &data) override;<br>
>>  <br>
>>  private:<br>
>>  Â  Â  void setMode(const CameraSensorInfo &sensorInfo);<br>
>> @@ -168,8 +168,8 @@ int IPARPi::init(const IPASettings &settings)<br>
>>  Â  Â  return 0;<br>
>>  }<br>
>>  <br>
>> -void IPARPi::start(const ipa::rpi::StartControls &data,<br>
>> -  Â  Â  Â  Â  Â  Â  Â ipa::rpi::StartControls *result)<br>
>> +void IPARPi::start(const ipa::RPi::StartControls &data,<br>
>> +  Â  Â  Â  Â  Â  Â  Â ipa::RPi::StartControls *result)<br>
>>  {<br>
>>  Â  Â  RPiController::Metadata metadata;<br>
>>  <br>
>> @@ -291,8 +291,8 @@ void IPARPi::setMode(const CameraSensorInfo &sensorInfo)<br>
>>  void IPARPi::configure(const CameraSensorInfo &sensorInfo,<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â [[maybe_unused]] const std::map<unsigned int, IPAStream> &streamConfig,<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const std::map<unsigned int, ControlInfoMap> &entityControls,<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â const ipa::rpi::ConfigInput &ipaConfig,<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â ipa::rpi::ConfigOutput *result, int32_t *ret)<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â const ipa::RPi::ConfigInput &ipaConfig,<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â ipa::RPi::ConfigOutput *result, int32_t *ret)<br>
>>  {<br>
>>  Â  Â  if (entityControls.size() != 2) {<br>
>>  Â  Â  Â  Â  Â  Â  LOG(IPARPI, Error) << "No ISP or sensor controls found.";<br>
>> @@ -344,7 +344,7 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,<br>
>>  Â  Â  Â  Â  Â  Â  helper_->GetDelays(exposureDelay, gainDelay);<br>
>>  Â  Â  Â  Â  Â  Â  sensorMetadata = helper_->SensorEmbeddedDataPresent();<br>
>>  <br>
>> -  Â  Â  Â  Â  Â  result->params |= ipa::rpi::ConfigSensorParams;<br>
>> +  Â  Â  Â  Â  Â  result->params |= ipa::RPi::ConfigSensorParams;<br>
>>  Â  Â  Â  Â  Â  Â  result->sensorConfig.gainDelay = gainDelay;<br>
>>  Â  Â  Â  Â  Â  Â  result->sensorConfig.exposureDelay = exposureDelay;<br>
>>  Â  Â  Â  Â  Â  Â  result->sensorConfig.vblank = exposureDelay;<br>
>> @@ -360,14 +360,14 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,<br>
>>  Â  Â  if (ipaConfig.lsTableHandle.isValid()) {<br>
>>  Â  Â  Â  Â  Â  Â  /* Remove any previous table, if there was one. */<br>
>>  Â  Â  Â  Â  Â  Â  if (lsTable_) {<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â  munmap(lsTable_, ipa::rpi::MaxLsGridSize);<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â  munmap(lsTable_, ipa::RPi::MaxLsGridSize);<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  lsTable_ = nullptr;<br>
>>  Â  Â  Â  Â  Â  Â  }<br>
>>  <br>
>>  Â  Â  Â  Â  Â  Â  /* Map the LS table buffer into user space. */<br>
>>  Â  Â  Â  Â  Â  Â  lsTableHandle_ = std::move(ipaConfig.lsTableHandle);<br>
>>  Â  Â  Â  Â  Â  Â  if (lsTableHandle_.isValid()) {<br>
>> -  Â  Â  Â  Â  Â  Â  Â  Â  Â  lsTable_ = mmap(nullptr, ipa::rpi::MaxLsGridSize, PROT_READ | PROT_WRITE,<br>
>> +  Â  Â  Â  Â  Â  Â  Â  Â  Â  lsTable_ = mmap(nullptr, ipa::RPi::MaxLsGridSize, PROT_READ | PROT_WRITE,<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  MAP_SHARED, lsTableHandle_.fd(), 0);<br>
>>  <br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  if (lsTable_ == MAP_FAILED) {<br>
>> @@ -432,7 +432,7 @@ void IPARPi::signalStatReady(uint32_t bufferId)<br>
>>  <br>
>>  Â  Â  reportMetadata();<br>
>>  <br>
>> -  Â  statsMetadataComplete.emit(bufferId & ipa::rpi::MaskID, libcameraMetadata_);<br>
>> +  Â  statsMetadataComplete.emit(bufferId & ipa::RPi::MaskID, libcameraMetadata_);<br>
>>  }<br>
>>  <br>
>>  void IPARPi::signalQueueRequest(const ControlList &controls)<br>
>> @@ -440,7 +440,7 @@ void IPARPi::signalQueueRequest(const ControlList &controls)<br>
>>  Â  Â  queueRequest(controls);<br>
>>  }<br>
>>  <br>
>> -void IPARPi::signalIspPrepare(const ipa::rpi::ISPConfig &data)<br>
>> +void IPARPi::signalIspPrepare(const ipa::RPi::ISPConfig &data)<br>
>>  {<br>
>>  Â  Â  /*<br>
>>  Â  Â  Â * At start-up, or after a mode-switch, we may want to<br>
>> @@ -451,7 +451,7 @@ void IPARPi::signalIspPrepare(const ipa::rpi::ISPConfig &data)<br>
>>  Â  Â  frameCount_++;<br>
>>  <br>
>>  Â  Â  /* Ready to push the input buffer into the ISP. */<br>
>> -  Â  runIsp.emit(data.bayerBufferId & ipa::rpi::MaskID);<br>
>> +  Â  runIsp.emit(data.bayerBufferId & ipa::RPi::MaskID);<br>
>>  }<br>
>>  <br>
>>  void IPARPi::reportMetadata()<br>
>> @@ -906,7 +906,7 @@ void IPARPi::queueRequest(const ControlList &controls)<br>
>>  <br>
>>  void IPARPi::returnEmbeddedBuffer(unsigned int bufferId)<br>
>>  {<br>
>> -  Â  embeddedComplete.emit(bufferId & ipa::rpi::MaskID);<br>
>> +  Â  embeddedComplete.emit(bufferId & ipa::RPi::MaskID);<br>
>>  }<br>
>>  <br>
>>  void IPARPi::prepareISP(unsigned int bufferId)<br>
>> @@ -1271,7 +1271,7 @@ void IPARPi::applyLS(const struct AlscStatus *lsStatus, ControlList &ctrls)<br>
>>  Â  Â  Â  Â  Â  Â  .gain_format = GAIN_FORMAT_U4P10<br>
>>  Â  Â  };<br>
>>  <br>
>> -  Â  if (!lsTable_ || w * h * 4 * sizeof(uint16_t) > ipa::rpi::MaxLsGridSize) {<br>
>> +  Â  if (!lsTable_ || w * h * 4 * sizeof(uint16_t) > ipa::RPi::MaxLsGridSize) {<br>
>>  Â  Â  Â  Â  Â  Â  LOG(IPARPI, Error) << "Do not have a correctly allocate lens shading table!";<br>
>>  Â  Â  Â  Â  Â  Â  return;<br>
>>  Â  Â  }<br>
>> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
>> index 8770ae66a21a..1a0bd6275578 100644<br>
>> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
>> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
>> @@ -166,7 +166,7 @@ public:<br>
>>  Â  Â  void handleState();<br>
>>  Â  Â  void applyScalerCrop(const ControlList &controls);<br>
>>  <br>
>> -  Â  std::unique_ptr<ipa::rpi::IPAProxyRPi> ipa_;<br>
>> +  Â  std::unique_ptr<ipa::RPi::IPAProxyRPi> ipa_;<br>
>>  <br>
>>  Â  Â  std::unique_ptr<CameraSensor> sensor_;<br>
>>  Â  Â  /* Array of Unicam and ISP device streams and associated buffers/streams. */<br>
>> @@ -778,8 +778,8 @@ int PipelineHandlerRPi::start(Camera *camera, ControlList *controls)<br>
>>  Â  Â  Â  Â  Â  Â  data->applyScalerCrop(*controls);<br>
>>  <br>
>>  Â  Â  /* Start the IPA. */<br>
>> -  Â  ipa::rpi::StartControls ipaData;<br>
>> -  Â  ipa::rpi::StartControls result;<br>
>> +  Â  ipa::RPi::StartControls ipaData;<br>
>> +  Â  ipa::RPi::StartControls result;<br>
>>  Â  Â  if (controls)<br>
>>  Â  Â  Â  Â  Â  Â  ipaData.controls = *controls;<br>
>>  Â  Â  data->ipa_->start(ipaData, &result);<br>
>> @@ -1114,8 +1114,8 @@ int PipelineHandlerRPi::prepareBuffers(Camera *camera)<br>
>>  Â  Â  Â * Pass the stats and embedded data buffers to the IPA. No other<br>
>>  Â  Â  Â * buffers need to be passed.<br>
>>  Â  Â  Â */<br>
>> -  Â  mapBuffers(camera, data->isp_[Isp::Stats].getBuffers(), ipa::rpi::MaskStats);<br>
>> -  Â  mapBuffers(camera, data->unicam_[Unicam::Embedded].getBuffers(), ipa::rpi::MaskEmbeddedData);<br>
>> +  Â  mapBuffers(camera, data->isp_[Isp::Stats].getBuffers(), ipa::RPi::MaskStats);<br>
>> +  Â  mapBuffers(camera, data->unicam_[Unicam::Embedded].getBuffers(), ipa::RPi::MaskEmbeddedData);<br>
>>  <br>
>>  Â  Â  return 0;<br>
>>  }<br>
>> @@ -1164,7 +1164,7 @@ void RPiCameraData::frameStarted(uint32_t sequence)<br>
>>  <br>
>>  int RPiCameraData::loadIPA()<br>
>>  {<br>
>> -  Â  ipa_ = IPAManager::createIPA<ipa::rpi::IPAProxyRPi>(pipe_, 1, 1);<br>
>> +  Â  ipa_ = IPAManager::createIPA<ipa::RPi::IPAProxyRPi>(pipe_, 1, 1);<br>
>>  <br>
>>  Â  Â  if (!ipa_)<br>
>>  Â  Â  Â  Â  Â  Â  return -ENOENT;<br>
>> @@ -1188,7 +1188,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)<br>
>>  <br>
>>  Â  Â  std::map<unsigned int, IPAStream> streamConfig;<br>
>>  Â  Â  std::map<unsigned int, ControlInfoMap> entityControls;<br>
>> -  Â  ipa::rpi::ConfigInput ipaConfig;<br>
>> +  Â  ipa::RPi::ConfigInput ipaConfig;<br>
>>  <br>
>>  Â  Â  /* Get the device format to pass to the IPA. */<br>
>>  Â  Â  V4L2DeviceFormat sensorFormat;<br>
>> @@ -1211,7 +1211,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)<br>
>>  <br>
>>  Â  Â  /* Allocate the lens shading table via dmaHeap and pass to the IPA. */<br>
>>  Â  Â  if (!lsTable_.isValid()) {<br>
>> -  Â  Â  Â  Â  Â  lsTable_ = dmaHeap_.alloc("ls_grid", ipa::rpi::MaxLsGridSize);<br>
>> +  Â  Â  Â  Â  Â  lsTable_ = dmaHeap_.alloc("ls_grid", ipa::RPi::MaxLsGridSize);<br>
>>  Â  Â  Â  Â  Â  Â  if (!lsTable_.isValid())<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  return -ENOMEM;<br>
>>  <br>
>> @@ -1231,7 +1231,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)<br>
>>  Â  Â  }<br>
>>  <br>
>>  Â  Â  /* Ready the IPA - it must know about the sensor resolution. */<br>
>> -  Â  ipa::rpi::ConfigOutput result;<br>
>> +  Â  ipa::RPi::ConfigOutput result;<br>
>>  <br>
>>  Â  Â  ipa_->configure(sensorInfo_, streamConfig, entityControls, ipaConfig,<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  &result, &ret);<br>
>> @@ -1241,7 +1241,7 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)<br>
>>  Â  Â  Â  Â  Â  Â  return -EPIPE;<br>
>>  Â  Â  }<br>
>>  <br>
>> -  Â  if (result.params & ipa::rpi::ConfigSensorParams) {<br>
>> +  Â  if (result.params & ipa::RPi::ConfigSensorParams) {<br>
>>  Â  Â  Â  Â  Â  Â  /*<br>
>>  Â  Â  Â  Â  Â  Â  Â * Setup our delayed control writer with the sensor default<br>
>>  Â  Â  Â  Â  Â  Â  Â * gain and exposure delays.<br>
>> @@ -1457,7 +1457,7 @@ void RPiCameraData::ispOutputDequeue(FrameBuffer *buffer)<br>
>>  Â  Â  Â * application until after the IPA signals so.<br>
>>  Â  Â  Â */<br>
>>  Â  Â  if (stream == &isp_[Isp::Stats]) {<br>
>> -  Â  Â  Â  Â  Â  ipa_->signalStatReady(ipa::rpi::MaskStats | static_cast<unsigned int>(index));<br>
>> +  Â  Â  Â  Â  Â  ipa_->signalStatReady(ipa::RPi::MaskStats | static_cast<unsigned int>(index));<br>
>>  Â  Â  } else {<br>
>>  Â  Â  Â  Â  Â  Â  /* Any other ISP output can be handed back to the application now. */<br>
>>  Â  Â  Â  Â  Â  Â  handleStreamBuffer(buffer, stream);<br>
>> @@ -1561,7 +1561,7 @@ void RPiCameraData::handleExternalBuffer(FrameBuffer *buffer, RPi::Stream *strea<br>
>>  {<br>
>>  Â  Â  unsigned int id = stream->getBufferId(buffer);<br>
>>  <br>
>> -  Â  if (!(id & ipa::rpi::MaskExternalBuffer))<br>
>> +  Â  if (!(id & ipa::RPi::MaskExternalBuffer))<br>
>>  Â  Â  Â  Â  Â  Â  return;<br>
>>  <br>
>>  Â  Â  /* Stop the Stream object from tracking the buffer. */<br>
>> @@ -1693,9 +1693,9 @@ void RPiCameraData::tryRunPipeline()<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  << " Bayer buffer id: " << bayerId<br>
>>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  << " Embedded buffer id: " << embeddedId;<br>
>>  <br>
>> -  Â  ipa::rpi::ISPConfig ispPrepare;<br>
>> -  Â  ispPrepare.embeddedBufferId = ipa::rpi::MaskEmbeddedData | embeddedId;<br>
>> -  Â  ispPrepare.bayerBufferId = ipa::rpi::MaskBayerData | bayerId;<br>
>> +  Â  ipa::RPi::ISPConfig ispPrepare;<br>
>> +  Â  ispPrepare.embeddedBufferId = ipa::RPi::MaskEmbeddedData | embeddedId;<br>
>> +  Â  ispPrepare.bayerBufferId = ipa::RPi::MaskBayerData | bayerId;<br>
>>  Â  Â  ipa_->signalIspPrepare(ispPrepare);<br>
>>  }<br>
>>  <br>
>> diff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp b/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp<br>
>> index 496dd36fabbc..f2430415d32d 100644<br>
>> --- a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp<br>
>> +++ b/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp<br>
>> @@ -72,7 +72,7 @@ int Stream::getBufferId(FrameBuffer *buffer) const<br>
>>  <br>
>>  void Stream::setExternalBuffer(FrameBuffer *buffer)<br>
>>  {<br>
>> -  Â  bufferMap_.emplace(ipa::rpi::MaskExternalBuffer | id_.get(), buffer);<br>
>> +  Â  bufferMap_.emplace(ipa::RPi::MaskExternalBuffer | id_.get(), buffer);<br>
>>  }<br>
>>  <br>
>>  void Stream::removeExternalBuffer(FrameBuffer *buffer)<br>
>> @@ -80,7 +80,7 @@ void Stream::removeExternalBuffer(FrameBuffer *buffer)<br>
>>  Â  Â  int id = getBufferId(buffer);<br>
>>  <br>
>>  Â  Â  /* Ensure we have this buffer in the stream, and it is marked external. */<br>
>> -  Â  ASSERT(id != -1 && (id & ipa::rpi::MaskExternalBuffer));<br>
>> +  Â  ASSERT(id != -1 && (id & ipa::RPi::MaskExternalBuffer));<br>
>>  Â  Â  bufferMap_.erase(id);<br>
>>  }<br>
>>  <br>
>> diff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.h b/src/libcamera/pipeline/raspberrypi/rpi_stream.h<br>
>> index 701110d04bdb..f1ac715f4221 100644<br>
>> --- a/src/libcamera/pipeline/raspberrypi/rpi_stream.h<br>
>> +++ b/src/libcamera/pipeline/raspberrypi/rpi_stream.h<br>
>> @@ -32,13 +32,13 @@ class Stream : public libcamera::Stream<br>
>>  {<br>
>>  public:<br>
>>  Â  Â  Stream()<br>
>> -  Â  Â  Â  Â  Â  : id_(ipa::rpi::MaskID)<br>
>> +  Â  Â  Â  Â  Â  : id_(ipa::RPi::MaskID)<br>
>>  Â  Â  {<br>
>>  Â  Â  }<br>
>>  <br>
>>  Â  Â  Stream(const char *name, MediaEntity *dev, bool importOnly = false)<br>
>>  Â  Â  Â  Â  Â  Â  : external_(false), importOnly_(importOnly), name_(name),<br>
>> -  Â  Â  Â  Â  Â  Â  dev_(std::make_unique<V4L2VideoDevice>(dev)), id_(ipa::rpi::MaskID)<br>
>> +  Â  Â  Â  Â  Â  Â  dev_(std::make_unique<V4L2VideoDevice>(dev)), id_(ipa::RPi::MaskID)<br>
>>  Â  Â  {<br>
>>  Â  Â  }<br>
>>  <br>
>><br>
> <br>
<br>
-- <br>
Regards<br>
--<br>
Kieran<br>
</blockquote></div></div>