libcamera: v4l2_subdevice: Collect subdev capabilities

Collect subdev capabilities at open() time.

Model the V4L2SubdevCapabilties as V4L2Capability from the video
device class.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Jacopo Mondi 2022-03-30 11:08:43 +02:00 committed by Laurent Pinchart
parent 8695e02916
commit 39d4917619
2 changed files with 62 additions and 1 deletions

View file

@ -29,6 +29,17 @@ namespace libcamera {
class MediaDevice;
struct V4L2SubdeviceCapability final : v4l2_subdev_capability {
bool isReadOnly() const
{
return capabilities & V4L2_SUBDEV_CAP_RO_SUBDEV;
}
bool hasStreams() const
{
return capabilities & V4L2_SUBDEV_CAP_MPLEXED;
}
};
struct V4L2SubdeviceFormat {
uint32_t mbus_code;
Size size;
@ -70,6 +81,7 @@ public:
Whence whence = ActiveFormat);
const std::string &model();
const V4L2SubdeviceCapability &caps() const { return caps_; }
static std::unique_ptr<V4L2Subdevice>
fromEntityName(const MediaDevice *media, const std::string &entity);
@ -87,6 +99,7 @@ private:
const MediaEntity *entity_;
std::string model_;
struct V4L2SubdeviceCapability caps_;
};
} /* namespace libcamera */