-
- Downloads
media: v4l2: Extend pixel formats to unify single/multi-planar handling (and more)
This is part of the multiplanar and singleplanar unification process. v4l2_ext_pix_format is supposed to work for both cases. We also add the concept of modifiers already employed in DRM to expose HW-specific formats (like tiled or compressed formats) and allow exchanging this information with the DRM subsystem in a consistent way. Note that only V4L2_BUF_TYPE_VIDEO_[OUTPUT,CAPTURE] are accepted in v4l2_ext_format, other types will be rejected if you use the {G,S,TRY}_EXT_PIX_FMT ioctls. New hooks have been added to v4l2_ioctl_ops to support those new ioctls in drivers, but, in the meantime, the core takes care of converting {S,G,TRY}_EXT_PIX_FMT requests into {S,G,TRY}_FMT so that old drivers can still work if the userspace app/lib uses the new ioctls. The conversion is also done the other around to allow userspace apps/libs using {S,G,TRY}_FMT to work with drivers implementing the _ext_ hooks. Signed-off-by:Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by:
Helen Koike <helen.koike@collabora.com> --- Changes in v6: The main change here was fixing the conversion, so planes reflects color planes, and to implement this properly I made major refactors compared to the previous version. - struct v4l2_plane_ext_pix_format removed, using struct v4l2_plane_pix_format instead (Tomasz) - refer to drm_fourcc.h in struct v4l2_ext_pix_format docs (Hans) - reorder colorimetry fields in struct v4l2_ext_pix_format (Hans) - do not set Ext ioctls as valid for vid_out_overlay (Tomasz) - refactor conversion functions, so planes are color planes (Tomasz) - Don't explicitly check for e->modifier != 0 in v4l2_ext_pix_format_to_format() (Tomasz) - Use "ef" for extended formats in the framework for consistency (Tomasz) - Handle xfer_func field in conversions (Tomasz) - Zero reserved fields in v4l_s_ext_pix_fmt() and v4l_try_ext_pix_fmt() (Tomasz) - Refactor format functions to use v4l_fmt_ioctl_via_ext() - Several fixes/refactoring/changes - Remove EXT API for touch devices Changes in v5: - change sizes and reorder fields to avoid holes in the struct and make it the same for 32 and 64 bits - removed __attribute__ ((packed)) from uapi structs - Fix doc warning from make htmldocs - Updated commit message with EXT_PIX prefix for the ioctls. Changes in v4: - Use v4l2_ext_pix_format directly in the ioctl, drop v4l2_ext_format, making V4L2_BUF_TYPE_VIDEO_[OUTPUT,CAPTURE] the only valid types. - Add reserved fields - Removed num_planes from struct v4l2_ext_pix_format - Removed flag field from struct v4l2_ext_pix_format, since the only defined value is V4L2_PIX_FMT_FLAG_PREMUL_ALPHA only used by vsp1, where we can use modifiers, or add it back later through the reserved bits. - In v4l2_ext_format_to_format(), check if modifier is != MOD_LINEAR && != MOD_INVALID - Fix type assignment in v4l_g_fmt_ext_pix() - Rebased on top of media/master (post 5.8-rc1) Changes in v3: - Rebased on top of media/master (post 5.4-rc1) Changes in v2: - Move the modifier in v4l2_ext_format (was formerly placed in v4l2_ext_plane) - Fix a few bugs in the converters and add a strict parameter to allow conversion of uninitialized/mis-initialized objects
Showing
- drivers/media/v4l2-core/v4l2-dev.c 21 additions, 6 deletionsdrivers/media/v4l2-core/v4l2-dev.c
- drivers/media/v4l2-core/v4l2-ioctl.c 512 additions, 26 deletionsdrivers/media/v4l2-core/v4l2-ioctl.c
- include/media/v4l2-ioctl.h 28 additions, 0 deletionsinclude/media/v4l2-ioctl.h
- include/uapi/linux/videodev2.h 41 additions, 0 deletionsinclude/uapi/linux/videodev2.h
Loading
Please register or sign in to comment