pipeline: simple: Allow buffer counts from 1 to 32
While a default value of 4 buffers appears to be a good default that is used by other pipelines as well, allowing both higher and lower values can be desirable, notably for: 1. Video encoding, e.g. encoding multiple buffers in parallel. 2. Clients requesting a single buffer - e.g. in multi-stream scenarios. Thus allow buffer counts between 1 and 32 buffers - following the default maximum from vb2 core - while keeping the default to the previous 4. While on it mark the config as adjusted when appropriate. Signed-off-by: Robert Mader <robert.mader@collabora.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
committed by
Kieran Bingham
parent
9e2ced2942
commit
05bfebed26
@@ -378,6 +378,9 @@ public:
|
||||
const Transform &combinedTransform() const { return combinedTransform_; }
|
||||
|
||||
private:
|
||||
static constexpr unsigned int kNumBuffersDefault = 4;
|
||||
static constexpr unsigned int kNumBuffersMax = 32;
|
||||
|
||||
/*
|
||||
* The SimpleCameraData instance is guaranteed to be valid as long as
|
||||
* the corresponding Camera instance is valid. In order to borrow a
|
||||
@@ -1240,7 +1243,7 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate()
|
||||
cfg.size != pipeConfig_->captureSize)
|
||||
needConversion_ = true;
|
||||
|
||||
/* Set the stride, frameSize and bufferCount. */
|
||||
/* Set the stride and frameSize. */
|
||||
if (needConversion_) {
|
||||
std::tie(cfg.stride, cfg.frameSize) =
|
||||
data_->converter_
|
||||
@@ -1263,7 +1266,18 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate()
|
||||
cfg.frameSize = format.planes[0].size;
|
||||
}
|
||||
|
||||
cfg.bufferCount = 4;
|
||||
const auto bufferCount = cfg.bufferCount;
|
||||
if (bufferCount <= 0)
|
||||
cfg.bufferCount = kNumBuffersDefault;
|
||||
else if (bufferCount > kNumBuffersMax)
|
||||
cfg.bufferCount = kNumBuffersMax;
|
||||
|
||||
if (cfg.bufferCount != bufferCount) {
|
||||
LOG(SimplePipeline, Debug)
|
||||
<< "Adjusting bufferCount from " << bufferCount
|
||||
<< " to " << cfg.bufferCount;
|
||||
status = Adjusted;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
|
||||
Reference in New Issue
Block a user