diff options
author | Paul Elder <paul.elder@ideasonboard.com> | 2020-06-05 20:36:32 +0900 |
---|---|---|
committer | Paul Elder <paul.elder@ideasonboard.com> | 2020-06-09 14:51:02 +0900 |
commit | 5801dedd2a30e7123a0f78e6140c409c7c35988c (patch) | |
tree | ff52f40a886763a07874399f041d403c2fc3f1ae /test/v4l2_subdevice/v4l2_subdevice_test.cpp | |
parent | 82d9331efd2b25fc518858499f6d37716feae3b9 (diff) |
libcamera: CameraManager, PipelineHandler: Automatically map devnums to Camera
The V4L2 compatibility layer uses devnum to match video device nodes to
libcamera Cameras. Some pipeline handlers don't report a devnum for
their camera, which prevents the V4L2 compatibility layer from matching
video device nodes to these cameras. To fix this, we first allow the
camera manager to map multiple devnums to a camera. Next, we walk the
media device and entity list and tell the camera manager to map every
one of these devnums that is a video capture node to the camera.
Since we decided that all video capture nodes that belong to a camera
can be opened via the V4L2 compatibility layer to map to that camera, it
would cause confusion for users if some pipeline handlers decided that
only specific device nodes would map to the camera. To prevent this
confusion, remove the ability for pipeline handlers to declare their own
devnum-to-camera mapping. The only pipeline handler that declares the
devnum mapping is the UVC pipeline handler, so remove the devnum there.
We considered walking the media entity list and taking the devnum from
just the one with the default flag set, but we found that some drivers
(eg. vimc) don't set this flag for any entity. Instead, we take all the
video capture nodes (entities with the sink pad flag set).
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'test/v4l2_subdevice/v4l2_subdevice_test.cpp')
0 files changed, 0 insertions, 0 deletions