[v3,24/41] pipeline: rkisp1: Pass bufferId to metadataReady()
diff mbox series

Message ID 20260914140309.3354666-25-stefan.klug@ideasonboard.com
State New
Headers show
Series
  • rkisp1: pipeline rework for PFC
Related show

Commit Message

Stefan Klug Sept. 14, 2026, 2:02 p.m. UTC
The frame number is not necessarily unique. This should not be the case,
but even misbehaving kernel drivers should not be able to negatively
influence libcamera. Pass the bufferId, to have a guaranteed unique
handle. This patch only introduces the parameter without using it. It is
preparatory for the upcoming synchronization rework.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
---
 include/libcamera/ipa/rkisp1.mojom       |  4 ++--
 src/ipa/rkisp1/rkisp1.cpp                |  4 ++--
 src/libcamera/pipeline/rkisp1/rkisp1.cpp | 12 ++++++++----
 3 files changed, 12 insertions(+), 8 deletions(-)

Patch
diff mbox series

diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom
index 4c29b53cd7f9..04230d0f852e 100644
--- a/include/libcamera/ipa/rkisp1.mojom
+++ b/include/libcamera/ipa/rkisp1.mojom
@@ -42,7 +42,7 @@  interface IPARkISP1Interface {
 };
 
 interface IPARkISP1EventInterface {
-	paramsComputed(uint32 frame, uint32 bytesused);
+	paramsComputed(uint32 frame, uint32 bufferId, uint32 bytesused);
 	setSensorControls(uint32 frame, libcamera.ControlList sensorControls);
-	metadataReady(uint32 frame, libcamera.ControlList metadata);
+	metadataReady(uint32 frame, uint32 bufferId, libcamera.ControlList metadata);
 };
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 08b7dde6b2de..abfd3c5ff58f 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -324,7 +324,7 @@  void IPARkISP1::computeParams(const uint32_t frame, const uint32_t bufferId)
 		for (const auto &algo : algorithms())
 			algo->prepare(context_, frame, frameContext, &params);
 
-		paramsComputed.emit(frame, params.bytesused());
+		paramsComputed.emit(frame, bufferId, params.bytesused());
 	}
 
 	ControlList ctrls = getSensorControls(frameContext);
@@ -358,7 +358,7 @@  void IPARkISP1::processStats(const uint32_t frame, const uint32_t bufferId,
 	}
 
 	context_.debugMetadata.moveEntries(metadata);
-	metadataReady.emit(frame, metadata);
+	metadataReady.emit(frame, bufferId, metadata);
 }
 
 void IPARkISP1::updateControls(ControlInfoMap *ipaControls)
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index edd9f352524c..d84044f218b5 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -130,11 +130,11 @@  public:
 	bool usesDewarper_;
 
 private:
-	void paramsComputed(unsigned int frame, unsigned int bytesused);
+	void paramsComputed(unsigned int frame, unsigned int bufferId, unsigned int bytesused);
 	void setSensorControls(unsigned int frame,
 			       const ControlList &sensorControls);
 
-	void metadataReady(unsigned int frame, const ControlList &metadata);
+	void metadataReady(unsigned int frame, unsigned int bufferId, const ControlList &metadata);
 	int loadTuningFile(const std::string &file);
 };
 
@@ -475,7 +475,9 @@  int RkISP1CameraData::loadTuningFile(const std::string &path)
 	return 0;
 }
 
-void RkISP1CameraData::paramsComputed(unsigned int frame, unsigned int bytesused)
+void RkISP1CameraData::paramsComputed(unsigned int frame,
+				      [[maybe_unused]] unsigned int bufferId,
+				      unsigned int bytesused)
 {
 	PipelineHandlerRkISP1 *pipe = RkISP1CameraData::pipe();
 	RkISP1FrameInfo *info = frameInfo_.find(frame);
@@ -506,7 +508,9 @@  void RkISP1CameraData::setSensorControls(unsigned int frame,
 	delayedCtrls_->push(frame, sensorControls);
 }
 
-void RkISP1CameraData::metadataReady(unsigned int frame, const ControlList &metadata)
+void RkISP1CameraData::metadataReady(unsigned int frame,
+				     [[maybe_unused]] unsigned int bufferId,
+				     const ControlList &metadata)
 {
 	RkISP1FrameInfo *info = frameInfo_.find(frame);
 	if (!info)