libcamera: pipeline: simple: Hardcode the number of internal buffers
The number of internal buffers, used between the capture device and the converter, doesn't need to depend on the number of buffers allocated for the output stream of the pipeline. Hardcode it to a fixed value. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Phi-Bang Nguyen <pnguyen@baylibre.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
5d6f902504
commit
37b3064bed
1 changed files with 15 additions and 6 deletions
|
@ -228,6 +228,8 @@ protected:
|
|||
int queueRequestDevice(Camera *camera, Request *request) override;
|
||||
|
||||
private:
|
||||
static constexpr unsigned int kNumInternalBuffers = 3;
|
||||
|
||||
SimpleCameraData *cameraData(const Camera *camera)
|
||||
{
|
||||
return static_cast<SimpleCameraData *>(
|
||||
|
@ -700,7 +702,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
|
|||
inputCfg.pixelFormat = pipeConfig->captureFormat;
|
||||
inputCfg.size = pipeConfig->captureSize;
|
||||
inputCfg.stride = captureFormat.planes[0].bpl;
|
||||
inputCfg.bufferCount = cfg.bufferCount;
|
||||
inputCfg.bufferCount = kNumInternalBuffers;
|
||||
|
||||
ret = converter_->configure(inputCfg, { cfg });
|
||||
if (ret < 0) {
|
||||
|
@ -737,13 +739,20 @@ int SimplePipelineHandler::start(Camera *camera, [[maybe_unused]] const ControlL
|
|||
{
|
||||
SimpleCameraData *data = cameraData(camera);
|
||||
V4L2VideoDevice *video = data->video_;
|
||||
unsigned int count = data->streams_[0].configuration().bufferCount;
|
||||
int ret;
|
||||
|
||||
if (data->useConverter_)
|
||||
ret = video->allocateBuffers(count, &data->converterBuffers_);
|
||||
else
|
||||
ret = video->importBuffers(count);
|
||||
if (data->useConverter_) {
|
||||
/*
|
||||
* When using the converter allocate a fixed number of internal
|
||||
* buffers.
|
||||
*/
|
||||
ret = video->allocateBuffers(kNumInternalBuffers,
|
||||
&data->converterBuffers_);
|
||||
} else {
|
||||
/* Otherwise, prepare for using buffers from the only stream. */
|
||||
Stream *stream = &data->streams_[0];
|
||||
ret = video->importBuffers(stream->configuration().bufferCount);
|
||||
}
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue