diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index 5c51607d..93b700bd 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -509,6 +509,13 @@ void IPAIPU3::unmapBuffers(const std::vector &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,20 +524,6 @@ void IPAIPU3::processEvent(const IPU3Event &event) processControls(event.frame, event.controls); break; } - case EventStatReady: { - auto it = buffers_.find(event.bufferId); - if (it == buffers_.end()) { - LOG(IPAIPU3, Error) << "Could not find stats buffer!"; - return; - } - - Span mem = it->second.planes()[0]; - const ipu3_uapi_stats_3a *stats = - reinterpret_cast(mem.data()); - - parseStatistics(event.frame, event.frameTimestamp, stats); - break; - } case EventFillParams: { auto it = buffers_.find(event.bufferId); if (it == buffers_.end()) { @@ -545,6 +538,20 @@ void IPAIPU3::processEvent(const IPU3Event &event) fillParams(event.frame, params); break; } + case EventStatReady: { + auto it = buffers_.find(event.bufferId); + if (it == buffers_.end()) { + LOG(IPAIPU3, Error) << "Could not find stats buffer!"; + return; + } + + Span mem = it->second.planes()[0]; + const ipu3_uapi_stats_3a *stats = + reinterpret_cast(mem.data()); + + parseStatistics(event.frame, event.frameTimestamp, stats); + break; + } default: LOG(IPAIPU3, Error) << "Unknown event " << event.op; break;