[PATCH v6 11/18] libcamera: pipeline: simple: rename converterBuffers_ and related vars
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Mar 27 18:59:09 CET 2024
Hi Milan and Andrey,
Thank you for the patch.
On Tue, Mar 19, 2024 at 01:35:58PM +0100, Milan Zamazal wrote:
> From: Andrey Konovalov <andrey.konovalov at linaro.org>
>
> The converterBuffers_ and the converterQueue_ are not that specific
> to the Converter, and could be used by another entity doing the format
> conversion.
>
> Rename converterBuffers_, converterQueue_, and useConverter_ to
> conversionBuffers_, conversionQueue_ and useConversion_ to
> disassociate them from the Converter.
>
> Tested-by: Bryan O'Donoghue <bryan.odonoghue at linaro.org> # sc8280xp Lenovo x13s
> Tested-by: Pavel Machek <pavel at ucw.cz>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Reviewed-by: Pavel Machek <pavel at ucw.cz>
> Signed-off-by: Andrey Konovalov <andrey.konovalov at linaro.org>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/libcamera/pipeline/simple/simple.cpp | 63 ++++++++++++------------
> 1 file changed, 32 insertions(+), 31 deletions(-)
>
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index 04e77f7e..9c8f7ba3 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -270,17 +270,18 @@ public:
> std::vector<Configuration> configs_;
> std::map<PixelFormat, std::vector<const Configuration *>> formats_;
>
> + std::vector<std::unique_ptr<FrameBuffer>> conversionBuffers_;
> + std::queue<std::map<unsigned int, FrameBuffer *>> conversionQueue_;
> + bool useConversion_;
> +
> std::unique_ptr<Converter> converter_;
> - std::vector<std::unique_ptr<FrameBuffer>> converterBuffers_;
> - bool useConverter_;
> - std::queue<std::map<unsigned int, FrameBuffer *>> converterQueue_;
>
> private:
> void tryPipeline(unsigned int code, const Size &size);
> static std::vector<const MediaPad *> routedSourcePads(MediaPad *sink);
>
> - void converterInputDone(FrameBuffer *buffer);
> - void converterOutputDone(FrameBuffer *buffer);
> + void conversionInputDone(FrameBuffer *buffer);
> + void conversionOutputDone(FrameBuffer *buffer);
> };
>
> class SimpleCameraConfiguration : public CameraConfiguration
> @@ -504,8 +505,8 @@ int SimpleCameraData::init()
> << "Failed to create converter, disabling format conversion";
> converter_.reset();
> } else {
> - converter_->inputBufferReady.connect(this, &SimpleCameraData::converterInputDone);
> - converter_->outputBufferReady.connect(this, &SimpleCameraData::converterOutputDone);
> + converter_->inputBufferReady.connect(this, &SimpleCameraData::conversionInputDone);
> + converter_->outputBufferReady.connect(this, &SimpleCameraData::conversionOutputDone);
> }
> }
>
> @@ -741,7 +742,7 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)
> * point converting an erroneous buffer.
> */
> if (buffer->metadata().status != FrameMetadata::FrameSuccess) {
> - if (!useConverter_) {
> + if (!useConversion_) {
> /* No conversion, just complete the request. */
> Request *request = buffer->request();
> pipe->completeBuffer(request, buffer);
> @@ -757,16 +758,16 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)
> if (buffer->metadata().status != FrameMetadata::FrameCancelled)
> video_->queueBuffer(buffer);
>
> - if (converterQueue_.empty())
> + if (conversionQueue_.empty())
> return;
>
> Request *request = nullptr;
> - for (auto &item : converterQueue_.front()) {
> + for (auto &item : conversionQueue_.front()) {
> FrameBuffer *outputBuffer = item.second;
> request = outputBuffer->request();
> pipe->completeBuffer(request, outputBuffer);
> }
> - converterQueue_.pop();
> + conversionQueue_.pop();
>
> if (request)
> pipe->completeRequest(request);
> @@ -783,9 +784,9 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)
> */
> Request *request = buffer->request();
>
> - if (useConverter_ && !converterQueue_.empty()) {
> + if (useConversion_ && !conversionQueue_.empty()) {
> const std::map<unsigned int, FrameBuffer *> &outputs =
> - converterQueue_.front();
> + conversionQueue_.front();
> if (!outputs.empty()) {
> FrameBuffer *outputBuffer = outputs.begin()->second;
> if (outputBuffer)
> @@ -802,14 +803,14 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)
> * conversion is needed. If there's no queued request, just requeue the
> * captured buffer for capture.
> */
> - if (useConverter_) {
> - if (converterQueue_.empty()) {
> + if (useConversion_) {
> + if (conversionQueue_.empty()) {
> video_->queueBuffer(buffer);
> return;
> }
>
> - converter_->queueBuffers(buffer, converterQueue_.front());
> - converterQueue_.pop();
> + converter_->queueBuffers(buffer, conversionQueue_.front());
> + conversionQueue_.pop();
> return;
> }
>
> @@ -818,13 +819,13 @@ void SimpleCameraData::bufferReady(FrameBuffer *buffer)
> pipe->completeRequest(request);
> }
>
> -void SimpleCameraData::converterInputDone(FrameBuffer *buffer)
> +void SimpleCameraData::conversionInputDone(FrameBuffer *buffer)
> {
> /* Queue the input buffer back for capture. */
> video_->queueBuffer(buffer);
> }
>
> -void SimpleCameraData::converterOutputDone(FrameBuffer *buffer)
> +void SimpleCameraData::conversionOutputDone(FrameBuffer *buffer)
> {
> SimplePipelineHandler *pipe = SimpleCameraData::pipe();
>
> @@ -1190,14 +1191,14 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)
>
> /* Configure the converter if needed. */
> std::vector<std::reference_wrapper<StreamConfiguration>> outputCfgs;
> - data->useConverter_ = config->needConversion();
> + data->useConversion_ = config->needConversion();
>
> for (unsigned int i = 0; i < config->size(); ++i) {
> StreamConfiguration &cfg = config->at(i);
>
> cfg.setStream(&data->streams_[i]);
>
> - if (data->useConverter_)
> + if (data->useConversion_)
> outputCfgs.push_back(cfg);
> }
>
> @@ -1223,7 +1224,7 @@ int SimplePipelineHandler::exportFrameBuffers(Camera *camera, Stream *stream,
> * Export buffers on the converter or capture video node, depending on
> * whether the converter is used or not.
> */
> - if (data->useConverter_)
> + if (data->useConversion_)
> return data->converter_->exportBuffers(data->streamIndex(stream),
> count, buffers);
> else
> @@ -1244,13 +1245,13 @@ int SimplePipelineHandler::start(Camera *camera, [[maybe_unused]] const ControlL
> return -EBUSY;
> }
>
> - if (data->useConverter_) {
> + if (data->useConversion_) {
> /*
> * When using the converter allocate a fixed number of internal
> * buffers.
> */
> ret = video->allocateBuffers(kNumInternalBuffers,
> - &data->converterBuffers_);
> + &data->conversionBuffers_);
> } else {
> /* Otherwise, prepare for using buffers from the only stream. */
> Stream *stream = &data->streams_[0];
> @@ -1269,7 +1270,7 @@ int SimplePipelineHandler::start(Camera *camera, [[maybe_unused]] const ControlL
> return ret;
> }
>
> - if (data->useConverter_) {
> + if (data->useConversion_) {
> ret = data->converter_->start();
> if (ret < 0) {
> stop(camera);
> @@ -1277,7 +1278,7 @@ int SimplePipelineHandler::start(Camera *camera, [[maybe_unused]] const ControlL
> }
>
> /* Queue all internal buffers for capture. */
> - for (std::unique_ptr<FrameBuffer> &buffer : data->converterBuffers_)
> + for (std::unique_ptr<FrameBuffer> &buffer : data->conversionBuffers_)
> video->queueBuffer(buffer.get());
> }
>
> @@ -1289,7 +1290,7 @@ void SimplePipelineHandler::stopDevice(Camera *camera)
> SimpleCameraData *data = cameraData(camera);
> V4L2VideoDevice *video = data->video_;
>
> - if (data->useConverter_)
> + if (data->useConversion_)
> data->converter_->stop();
>
> video->streamOff();
> @@ -1297,7 +1298,7 @@ void SimplePipelineHandler::stopDevice(Camera *camera)
>
> video->bufferReady.disconnect(data, &SimpleCameraData::bufferReady);
>
> - data->converterBuffers_.clear();
> + data->conversionBuffers_.clear();
>
> releasePipeline(data);
> }
> @@ -1315,7 +1316,7 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)
> * queue, it will be handed to the converter in the capture
> * completion handler.
> */
> - if (data->useConverter_) {
> + if (data->useConversion_) {
> buffers.emplace(data->streamIndex(stream), buffer);
> } else {
> ret = data->video_->queueBuffer(buffer);
> @@ -1324,8 +1325,8 @@ int SimplePipelineHandler::queueRequestDevice(Camera *camera, Request *request)
> }
> }
>
> - if (data->useConverter_)
> - data->converterQueue_.push(std::move(buffers));
> + if (data->useConversion_)
> + data->conversionQueue_.push(std::move(buffers));
>
> return 0;
> }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list