ipa: ipu3: Move ExposureTime to IPA
Now that we have the exposure time calculated, report it in the controls::ExposureTime and don't use the pipeline handler for it anymore. Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
parent
ca9adf6b92
commit
268882fa30
2 changed files with 3 additions and 15 deletions
|
@ -630,6 +630,8 @@ void IPAIPU3::parseStatistics(unsigned int frame,
|
||||||
|
|
||||||
ctrls.set(controls::ColourTemperature, context_.frameContext.awb.temperatureK);
|
ctrls.set(controls::ColourTemperature, context_.frameContext.awb.temperatureK);
|
||||||
|
|
||||||
|
ctrls.set(controls::ExposureTime, context_.frameContext.sensor.exposure * lineDuration_.get<std::micro>());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* \todo The Metadata provides a path to getting extended data
|
* \todo The Metadata provides a path to getting extended data
|
||||||
* out to the application. Further data such as a simplifed Histogram
|
* out to the application. Further data such as a simplifed Histogram
|
||||||
|
|
|
@ -47,7 +47,7 @@ class IPU3CameraData : public Camera::Private
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IPU3CameraData(PipelineHandler *pipe)
|
IPU3CameraData(PipelineHandler *pipe)
|
||||||
: Camera::Private(pipe), exposureTime_(0), supportsFlips_(false)
|
: Camera::Private(pipe), supportsFlips_(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,6 @@ public:
|
||||||
Stream vfStream_;
|
Stream vfStream_;
|
||||||
Stream rawStream_;
|
Stream rawStream_;
|
||||||
|
|
||||||
uint32_t exposureTime_;
|
|
||||||
Rectangle cropRegion_;
|
Rectangle cropRegion_;
|
||||||
bool supportsFlips_;
|
bool supportsFlips_;
|
||||||
Transform rotationTransform_;
|
Transform rotationTransform_;
|
||||||
|
@ -1045,17 +1044,6 @@ int PipelineHandlerIPU3::updateControls(IPU3CameraData *data)
|
||||||
|
|
||||||
controls[&controls::ScalerCrop] = ControlInfo(minCrop, maxCrop, maxCrop);
|
controls[&controls::ScalerCrop] = ControlInfo(minCrop, maxCrop, maxCrop);
|
||||||
|
|
||||||
/*
|
|
||||||
* \todo Report the actual exposure time, use the default for the
|
|
||||||
* moment.
|
|
||||||
*/
|
|
||||||
const auto exposureInfo = data->ipaControls_.find(&controls::ExposureTime);
|
|
||||||
if (exposureInfo == data->ipaControls_.end()) {
|
|
||||||
LOG(IPU3, Error) << "Exposure control not initialized by the IPA";
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
data->exposureTime_ = exposureInfo->second.def().get<int32_t>();
|
|
||||||
|
|
||||||
/* Add the IPA registered controls to list of camera controls. */
|
/* Add the IPA registered controls to list of camera controls. */
|
||||||
for (const auto &ipaControl : data->ipaControls_)
|
for (const auto &ipaControl : data->ipaControls_)
|
||||||
controls[ipaControl.first] = ipaControl.second;
|
controls[ipaControl.first] = ipaControl.second;
|
||||||
|
@ -1317,8 +1305,6 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer)
|
||||||
pipe()->completeBuffer(request, buffer);
|
pipe()->completeBuffer(request, buffer);
|
||||||
|
|
||||||
request->metadata().set(controls::draft::PipelineDepth, 3);
|
request->metadata().set(controls::draft::PipelineDepth, 3);
|
||||||
/* \todo Move the ExposureTime control to the IPA. */
|
|
||||||
request->metadata().set(controls::ExposureTime, exposureTime_);
|
|
||||||
/* \todo Actually apply the scaler crop region to the ImgU. */
|
/* \todo Actually apply the scaler crop region to the ImgU. */
|
||||||
if (request->controls().contains(controls::ScalerCrop))
|
if (request->controls().contains(controls::ScalerCrop))
|
||||||
cropRegion_ = request->controls().get(controls::ScalerCrop);
|
cropRegion_ = request->controls().get(controls::ScalerCrop);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue