ipa: rpi: Add statsInline to the Controller hardware description
Add a new boolean field (statsInline) to Controller::HardwareConfigMap. This field indicates where the statistics are generated in the hardware ISP pipeline. For statsInline == true, statistics are generated before the frame is processed (e.g. the PiSP case), and statsInline == false indicates statistics are generated after the frame is processed (e.g. the VC4 case). Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
0548079581
commit
11c939a200
3 changed files with 17 additions and 6 deletions
|
@ -429,11 +429,10 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
|||
}
|
||||
|
||||
/*
|
||||
* If a statistics buffer has been passed in, call processStats
|
||||
* directly now before prepare() since the statistics are available in-line
|
||||
* with the Bayer frame.
|
||||
* If the statistics are inline (i.e. already available with the Bayer
|
||||
* frame), call processStats() now before prepare().
|
||||
*/
|
||||
if (params.buffers.stats)
|
||||
if (controller_.getHardwareConfig().statsInline)
|
||||
processStats({ params.buffers, params.ipaContext });
|
||||
|
||||
/* Do we need/want to call prepare? */
|
||||
|
@ -445,6 +444,10 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
|
|||
|
||||
frameCount_++;
|
||||
|
||||
/* If the statistics are inline the metadata can be returned early. */
|
||||
if (controller_.getHardwareConfig().statsInline)
|
||||
reportMetadata(ipaContext);
|
||||
|
||||
/* Ready to push the input buffer into the ISP. */
|
||||
prepareIspComplete.emit(params.buffers, false);
|
||||
}
|
||||
|
@ -479,7 +482,13 @@ void IpaBase::processStats(const ProcessParams ¶ms)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If the statistics are not inline the metadata must be returned now,
|
||||
* before the processStatsComplete signal.
|
||||
*/
|
||||
if (!controller_.getHardwareConfig().statsInline)
|
||||
reportMetadata(ipaContext);
|
||||
|
||||
processStatsComplete.emit(params.buffers);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,8 @@ static const std::map<std::string, Controller::HardwareConfig> HardwareConfigMap
|
|||
.focusRegions = { 4, 3 },
|
||||
.numHistogramBins = 128,
|
||||
.numGammaPoints = 33,
|
||||
.pipelineWidth = 13
|
||||
.pipelineWidth = 13,
|
||||
.statsInline = false,
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
@ -45,6 +45,7 @@ public:
|
|||
unsigned int numHistogramBins;
|
||||
unsigned int numGammaPoints;
|
||||
unsigned int pipelineWidth;
|
||||
bool statsInline;
|
||||
};
|
||||
|
||||
Controller();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue