[libcamera-devel] [PATCH v5 3/6] ipa: ipu3: Inline parseStatistics() into processStatsBuffer()
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Apr 8 00:16:25 CEST 2022
Quoting Umang Jain via libcamera-devel (2022-04-06 15:17:06)
> Since we have moved away from switch/case on the operation ID,
> there's little reason to split the operation in two functions.
>
> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/ipa/ipu3/ipu3.cpp | 54 +++++++++++++++----------------------------
> 1 file changed, 19 insertions(+), 35 deletions(-)
>
> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> index 8c9a20f5..569c1311 100644
> --- a/src/ipa/ipu3/ipu3.cpp
> +++ b/src/ipa/ipu3/ipu3.cpp
> @@ -156,9 +156,6 @@ private:
> ControlInfoMap *ipaControls);
> void updateSessionConfiguration(const ControlInfoMap &sensorControls);
>
> - void parseStatistics(unsigned int frame,
> - int64_t frameTimestamp,
> - const ipu3_uapi_stats_3a *stats);
> bool validateSensorControls();
>
> void setControls(unsigned int frame);
> @@ -546,11 +543,15 @@ void IPAIPU3::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)
> }
>
> /**
> - * \brief Process statistics after ISP completion
> + * \brief Process the statistics generated by the ImgU
> * \param[in] frame The frame number
> * \param[in] frameTimestamp Timestamp of the frame
> * \param[in] bufferId ID of the statistics buffer
> * \param[in] sensorControls Sensor controls
> + *
> + * Parse the most recently processed image statistics from the ImgU. The
> + * statistics are passed to each algorithm module to run their calculations and
> + * update their state accordingly.
> */
> void IPAIPU3::processStatsBuffer(const uint32_t frame, const int64_t frameTimestamp,
> const uint32_t bufferId, const ControlList &sensorControls)
> @@ -568,37 +569,6 @@ void IPAIPU3::processStatsBuffer(const uint32_t frame, const int64_t frameTimest
> context_.frameContext.sensor.exposure = sensorControls.get(V4L2_CID_EXPOSURE).get<int32_t>();
> context_.frameContext.sensor.gain = camHelper_->gain(sensorControls.get(V4L2_CID_ANALOGUE_GAIN).get<int32_t>());
>
> - parseStatistics(frame, frameTimestamp, stats);
> -}
> -
> -/**
> - * \brief Queue a request and process the control list from the application
> - * \param[in] frame The number of the frame which will be processed next
> - * \param[in] controls The controls for the \a frame
> - *
> - * Parse the request to handle any IPA-managed controls that were set from the
> - * application such as manual sensor settings.
> - */
> -void IPAIPU3::queueRequest(const uint32_t frame,
> - [[maybe_unused]] const ControlList &controls)
> -{
> - /* \todo Start processing for 'frame' based on 'controls'. */
> -}
> -
> -/**
> - * \brief Process the statistics generated by the ImgU
> - * \param[in] frame The number of the latest frame processed
> - * \param[in] frameTimestamp The current frame timestamp
> - * \param[in] stats The IPU3 statistics and ISP results
> - *
> - * Parse the most recently processed image statistics from the ImgU. The
> - * statistics are passed to each algorithm module to run their calculations and
> - * update their state accordingly.
> - */
> -void IPAIPU3::parseStatistics(unsigned int frame,
> - [[maybe_unused]] int64_t frameTimestamp,
> - const ipu3_uapi_stats_3a *stats)
> -{
> double lineDuration = context_.configuration.sensor.lineDuration.get<std::micro>();
> int32_t vBlank = context_.configuration.sensor.defVBlank;
> ControlList ctrls(controls::controls);
> @@ -629,6 +599,20 @@ void IPAIPU3::parseStatistics(unsigned int frame,
> metadataReady.emit(frame, ctrls);
> }
>
> +/**
> + * \brief Queue a request and process the control list from the application
> + * \param[in] frame The number of the frame which will be processed next
> + * \param[in] controls The controls for the \a frame
> + *
> + * Parse the request to handle any IPA-managed controls that were set from the
> + * application such as manual sensor settings.
> + */
> +void IPAIPU3::queueRequest(const uint32_t frame,
> + [[maybe_unused]] const ControlList &controls)
> +{
> + /* \todo Start processing for 'frame' based on 'controls'. */
> +}
> +
> /**
> * \brief Handle sensor controls for a given \a frame number
> * \param[in] frame The frame on which the sensor controls should be set
> --
> 2.31.0
>
More information about the libcamera-devel
mailing list