libcamera: converter: Add V4L2 request support

Add V4L2 request support to the V4L2M2MConverter class. Extend the
functions related to buffer queuing with an optional request parameter
that gets passed to the lower layers.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>
This commit is contained in:
Stefan Klug
2025-11-25 17:28:16 +01:00
parent cdc2620549
commit 041625628c
4 changed files with 18 additions and 7 deletions

View File

@@ -22,6 +22,7 @@
#include <libcamera/base/signal.h>
#include <libcamera/geometry.h>
#include "libcamera/internal/v4l2_request.h"
namespace libcamera {
@@ -79,7 +80,8 @@ public:
virtual void stop() = 0;
virtual int queueBuffers(FrameBuffer *input,
const std::map<const Stream *, FrameBuffer *> &outputs) = 0;
const std::map<const Stream *, FrameBuffer *> &outputs,
const V4L2Request *request = nullptr) = 0;
virtual int setInputCrop(const Stream *stream, Rectangle *rect) = 0;
virtual std::pair<Rectangle, Rectangle> inputCropBounds() = 0;

View File

@@ -66,7 +66,8 @@ public:
Alignment align = Alignment::Down) override;
int queueBuffers(FrameBuffer *input,
const std::map<const Stream *, FrameBuffer *> &outputs) override;
const std::map<const Stream *, FrameBuffer *> &outputs,
const V4L2Request *request = nullptr) override;
int setInputCrop(const Stream *stream, Rectangle *rect) override;
std::pair<Rectangle, Rectangle> inputCropBounds() override { return inputCropBounds_; }
@@ -88,7 +89,8 @@ private:
int start();
void stop();
int queueBuffers(FrameBuffer *input, FrameBuffer *output);
int queueBuffers(FrameBuffer *input, FrameBuffer *output,
const V4L2Request *request = nullptr);
int setInputSelection(unsigned int target, Rectangle *rect);
int getInputSelection(unsigned int target, Rectangle *rect);