pipeline: raspberrypi: Add a parameter to disable startup drop frames
Add a new pipeline config parameter "disable_startup_frame_drops" to disable any startup drop frames, overriding the IPA request. When this parameter is set, it allows the pipeline handler to run with no internally allocated Unicam buffers ("min_unicam_buffers"). Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
8c53b2498b
commit
b47ecacc78
2 changed files with 16 additions and 2 deletions
|
@ -27,6 +27,11 @@
|
||||||
# internal buffer count = max(min_unicam_buffers,
|
# internal buffer count = max(min_unicam_buffers,
|
||||||
# min_total_unicam_buffers - external buffer count)
|
# min_total_unicam_buffers - external buffer count)
|
||||||
#
|
#
|
||||||
# "min_total_unicam_buffers": 4
|
# "min_total_unicam_buffers": 4,
|
||||||
|
|
||||||
|
# Override any request from the IPA to drop a number of startup
|
||||||
|
# frames.
|
||||||
|
#
|
||||||
|
# "disable_startup_frame_drops": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -315,6 +315,11 @@ public:
|
||||||
* minTotalUnicamBuffers >= minUnicamBuffers
|
* minTotalUnicamBuffers >= minUnicamBuffers
|
||||||
*/
|
*/
|
||||||
unsigned int minTotalUnicamBuffers;
|
unsigned int minTotalUnicamBuffers;
|
||||||
|
/*
|
||||||
|
* Override any request from the IPA to drop a number of startup
|
||||||
|
* frames.
|
||||||
|
*/
|
||||||
|
bool disableStartupFrameDrops;
|
||||||
};
|
};
|
||||||
|
|
||||||
Config config_;
|
Config config_;
|
||||||
|
@ -1117,7 +1122,8 @@ int PipelineHandlerRPi::start(Camera *camera, const ControlList *controls)
|
||||||
data->setSensorControls(startConfig.controls);
|
data->setSensorControls(startConfig.controls);
|
||||||
|
|
||||||
/* Configure the number of dropped frames required on startup. */
|
/* Configure the number of dropped frames required on startup. */
|
||||||
data->dropFrameCount_ = startConfig.dropFrameCount;
|
data->dropFrameCount_ = data->config_.disableStartupFrameDrops
|
||||||
|
? 0 : startConfig.dropFrameCount;
|
||||||
|
|
||||||
for (auto const stream : data->streams_)
|
for (auto const stream : data->streams_)
|
||||||
stream->resetBuffers();
|
stream->resetBuffers();
|
||||||
|
@ -1719,6 +1725,7 @@ int RPiCameraData::loadPipelineConfiguration()
|
||||||
config_ = {
|
config_ = {
|
||||||
.minUnicamBuffers = 2,
|
.minUnicamBuffers = 2,
|
||||||
.minTotalUnicamBuffers = 4,
|
.minTotalUnicamBuffers = 4,
|
||||||
|
.disableStartupFrameDrops = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RPI_CONFIG_FILE");
|
char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RPI_CONFIG_FILE");
|
||||||
|
@ -1752,6 +1759,8 @@ int RPiCameraData::loadPipelineConfiguration()
|
||||||
phConfig["min_unicam_buffers"].get<unsigned int>(config_.minUnicamBuffers);
|
phConfig["min_unicam_buffers"].get<unsigned int>(config_.minUnicamBuffers);
|
||||||
config_.minTotalUnicamBuffers =
|
config_.minTotalUnicamBuffers =
|
||||||
phConfig["min_total_unicam_buffers"].get<unsigned int>(config_.minTotalUnicamBuffers);
|
phConfig["min_total_unicam_buffers"].get<unsigned int>(config_.minTotalUnicamBuffers);
|
||||||
|
config_.disableStartupFrameDrops =
|
||||||
|
phConfig["disable_startup_frame_drops"].get<bool>(config_.disableStartupFrameDrops);
|
||||||
|
|
||||||
if (config_.minTotalUnicamBuffers < config_.minUnicamBuffers) {
|
if (config_.minTotalUnicamBuffers < config_.minUnicamBuffers) {
|
||||||
LOG(RPI, Error) << "Invalid configuration: min_total_unicam_buffers must be >= min_unicam_buffers";
|
LOG(RPI, Error) << "Invalid configuration: min_total_unicam_buffers must be >= min_unicam_buffers";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue