libcamera: pipeline: Utilise shared MediaDevice pointers
Adapt the PipelineHandler::acquireMediaDevice() support function to return a shared pointer instead of the underlying raw pointer. Propagate this update to all pipeline handlers that use the MediaDevice and store a std::shared_ptr<MediaDevice> accordingly. This is required to support media devices that are potentially shared among multiple pipeline handlers, like a dewarper implemented as v4l2 m2m device. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Isaac Scott <isaac.scott@ideasonboard.com>
This commit is contained in:
committed by
Stefan Klug
parent
4e720d5bae
commit
97227ebed3
@@ -38,8 +38,8 @@ public:
|
||||
virtual ~PipelineHandler();
|
||||
|
||||
virtual bool match(DeviceEnumerator *enumerator) = 0;
|
||||
MediaDevice *acquireMediaDevice(DeviceEnumerator *enumerator,
|
||||
const DeviceMatch &dm);
|
||||
std::shared_ptr<MediaDevice> acquireMediaDevice(DeviceEnumerator *enumerator,
|
||||
const DeviceMatch &dm);
|
||||
|
||||
bool acquire(Camera *camera);
|
||||
void release(Camera *camera);
|
||||
@@ -72,7 +72,7 @@ public:
|
||||
|
||||
protected:
|
||||
void registerCamera(std::shared_ptr<Camera> camera);
|
||||
void hotplugMediaDevice(MediaDevice *media);
|
||||
void hotplugMediaDevice(std::shared_ptr<MediaDevice> media);
|
||||
unsigned int useCount() const { return useCount_; }
|
||||
|
||||
virtual int queueRequestDevice(Camera *camera, Request *request) = 0;
|
||||
@@ -87,7 +87,7 @@ protected:
|
||||
private:
|
||||
void unlockMediaDevices();
|
||||
|
||||
void mediaDeviceDisconnected(MediaDevice *media);
|
||||
void mediaDeviceDisconnected(std::shared_ptr<MediaDevice> media);
|
||||
virtual void disconnect();
|
||||
|
||||
void doQueueRequest(Request *request);
|
||||
|
||||
Reference in New Issue
Block a user