mbox series

[PATCHv2,0/8] Add dynamic arrays and v4l2_ctrl_modify_dimensions

Message ID 20220711102111.2688139-1-hverkuil-cisco@xs4all.nl
Headers show
Series Add dynamic arrays and v4l2_ctrl_modify_dimensions | expand

Message

Hans Verkuil July 11, 2022, 10:21 a.m. UTC
This series adds support for dynamic array controls and for a
new v4l2_ctrl_modify_dimensions() function to modify the dimensions
of an array control by the driver.

The three dynamic array patches are identical to those used in the
stateless HEVC uAPI patches and are part of this pull request:

https://patchwork.linuxtv.org/project/linux-media/patch/8409c576-e2f3-489a-23df-dc16386aac13@xs4all.nl/

The remaining five patches build on those and add support for
v4l2_ctrl_modify_dimensions().

Note that patch 7 is one that I strongly believe is needed since
it adds no overhead and there is no other way to inform userspace
that the dimensions have changed. But if this is truly deemed
unacceptable, then it can be dropped.

Changes since v1:

- patch 6/8: simplify elems calculation, use cur2new to copy
  the updated current value to the new value (uses a memcpy
  internally), add missing lockdep_assert_held(), improve
  function description, call send_event to indicate that
  the current value has changed.

- patch 7/8: this just adds the new control flag since the
  send_event call is now added in the previous patch.

- patch 8/8: downsample the resolution to speed up
  vivid_update_format_cap().

Regards,

	Hans

Hans Verkuil (8):
  videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY
  v4l2-ctrls: add support for dynamically allocated arrays.
  vivid: add dynamic array test control
  v4l2-ctrls: allocate space for arrays
  v4l2-ctrls: alloc arrays in ctrl_ref
  v4l2-ctrls: add v4l2_ctrl_modify_dimensions
  v4l2-ctrls: add change flag for when dimensions change
  vivid: add pixel_array test control

 .../media/v4l/vidioc-dqevent.rst              |   5 +
 .../media/v4l/vidioc-queryctrl.rst            |   8 +
 .../media/videodev2.h.rst.exceptions          |   2 +
 drivers/media/test-drivers/vivid/vivid-core.h |   5 +-
 .../media/test-drivers/vivid/vivid-ctrls.c    |  29 +++
 .../media/test-drivers/vivid/vivid-vid-cap.c  |   4 +
 drivers/media/v4l2-core/v4l2-ctrls-api.c      | 140 ++++++++++---
 drivers/media/v4l2-core/v4l2-ctrls-core.c     | 188 +++++++++++++++---
 drivers/media/v4l2-core/v4l2-ctrls-priv.h     |   3 +-
 drivers/media/v4l2-core/v4l2-ctrls-request.c  |  13 +-
 include/media/v4l2-ctrls.h                    |  94 ++++++++-
 include/uapi/linux/videodev2.h                |   2 +
 12 files changed, 421 insertions(+), 72 deletions(-)