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:
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user