libcamera: converter: Utilise shared MediaDevice pointers

With the upcoming addition of V4L2 requests support, the converters need
to keep a handle to the corresponding media device.

Prepare for that by changing the constructor parameter from a raw
pointer to a shared pointer.

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:14 +01:00
parent 97227ebed3
commit 39c052c1e9
6 changed files with 14 additions and 12 deletions
+5 -4
View File
@@ -46,7 +46,7 @@ public:
Up,
};
Converter(MediaDevice *media, Features features = Feature::None);
Converter(std::shared_ptr<MediaDevice> media, Features features = Feature::None);
virtual ~Converter();
virtual int loadConfiguration(const std::string &filename) = 0;
@@ -107,7 +107,7 @@ public:
const std::vector<std::string> &compatibles() const { return compatibles_; }
static std::unique_ptr<Converter> create(MediaDevice *media);
static std::unique_ptr<Converter> create(std::shared_ptr<MediaDevice> media);
static std::vector<ConverterFactoryBase *> &factories();
static std::vector<std::string> names();
@@ -116,7 +116,8 @@ private:
static void registerType(ConverterFactoryBase *factory);
virtual std::unique_ptr<Converter> createInstance(MediaDevice *media) const = 0;
virtual std::unique_ptr<Converter>
createInstance(std::shared_ptr<MediaDevice> media) const = 0;
std::string name_;
std::vector<std::string> compatibles_;
@@ -131,7 +132,7 @@ public:
{
}
std::unique_ptr<Converter> createInstance(MediaDevice *media) const override
std::unique_ptr<Converter> createInstance(std::shared_ptr<MediaDevice> media) const override
{
return std::make_unique<_Converter>(media);
}
@@ -36,7 +36,7 @@ class V4L2M2MDevice;
class V4L2M2MConverter : public Converter
{
public:
V4L2M2MConverter(MediaDevice *media);
V4L2M2MConverter(std::shared_ptr<MediaDevice> media);
int loadConfiguration([[maybe_unused]] const std::string &filename) override { return 0; }
bool isValid() const override { return m2m_ != nullptr; }