[libcamera-devel] [PATCH] ipa: ipu3: List the events in their order of calling

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Fri Nov 5 16:20:31 CET 2021


This is a cleanup patch, no functionnal behaviour changes. It makes it
clearer when an event is called.

Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
---
 src/ipa/ipu3/ipu3.cpp | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index 5c51607d..d97b2f9e 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -509,6 +509,13 @@ void IPAIPU3::unmapBuffers(const std::vector<unsigned int> &ids)
 /**
  * \brief Process an event generated by the pipeline handler
  * \param[in] event The event sent from pipeline handler
+ *
+ * The expected event handling over the lifetime of a Request has
+ * the following sequence:
+ *
+ *   - EventProcessControls : Handle controls from a new Request
+ *   - EventFillParams : Prepare the ISP to process the request
+ *   - EventStatReady : Process statistics after ISP completion
  */
 void IPAIPU3::processEvent(const IPU3Event &event)
 {
@@ -517,32 +524,32 @@ void IPAIPU3::processEvent(const IPU3Event &event)
 		processControls(event.frame, event.controls);
 		break;
 	}
-	case EventStatReady: {
+	case EventFillParams: {
 		auto it = buffers_.find(event.bufferId);
 		if (it == buffers_.end()) {
-			LOG(IPAIPU3, Error) << "Could not find stats buffer!";
+			LOG(IPAIPU3, Error) << "Could not find param buffer!";
 			return;
 		}
 
 		Span<uint8_t> mem = it->second.planes()[0];
-		const ipu3_uapi_stats_3a *stats =
-			reinterpret_cast<ipu3_uapi_stats_3a *>(mem.data());
+		ipu3_uapi_params *params =
+			reinterpret_cast<ipu3_uapi_params *>(mem.data());
 
-		parseStatistics(event.frame, event.frameTimestamp, stats);
+		fillParams(event.frame, params);
 		break;
 	}
-	case EventFillParams: {
+	case EventStatReady: {
 		auto it = buffers_.find(event.bufferId);
 		if (it == buffers_.end()) {
-			LOG(IPAIPU3, Error) << "Could not find param buffer!";
+			LOG(IPAIPU3, Error) << "Could not find stats buffer!";
 			return;
 		}
 
 		Span<uint8_t> mem = it->second.planes()[0];
-		ipu3_uapi_params *params =
-			reinterpret_cast<ipu3_uapi_params *>(mem.data());
+		const ipu3_uapi_stats_3a *stats =
+			reinterpret_cast<ipu3_uapi_stats_3a *>(mem.data());
 
-		fillParams(event.frame, params);
+		parseStatistics(event.frame, event.frameTimestamp, stats);
 		break;
 	}
 	default:
-- 
2.32.0



More information about the libcamera-devel mailing list