media: uapi: h264: Add DPB entry field reference flags

Using the field information attached to v4l2 buffers is not enough to
determine the type of field referenced by a DPB entry: the decoded
frame might contain the full picture (both top and bottom fields)
but the reference only point to one of them.
Let's add new V4L2_H264_DPB_ENTRY_FLAG_ flags to express that.

[Keep only 2 flags and add some details about they mean]

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Jonas Karlman 2020-02-20 17:30:11 +01:00 committed by Mauro Carvalho Chehab
parent 62d1928531
commit 5e815fe05d
2 changed files with 18 additions and 0 deletions

View file

@ -2028,6 +2028,22 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
* - ``V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM``
- 0x00000004
- The DPB entry is a long term reference frame
* - ``V4L2_H264_DPB_ENTRY_FLAG_FIELD``
- 0x00000008
- The DPB entry is a field reference, which means only one of the field
will be used when decoding the new frame/field. When not set the DPB
entry is a frame reference (both fields will be used). Note that this
flag does not say anything about the number of fields contained in the
reference frame, it just describes the one used to decode the new
field/frame
* - ``V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_FIELD``
- 0x00000010
- The DPB entry is a bottom field reference (only the bottom field of the
reference frame is needed to decode the new frame/field). Only valid if
V4L2_H264_DPB_ENTRY_FLAG_FIELD is set. When
V4L2_H264_DPB_ENTRY_FLAG_FIELD is set but
V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_FIELD is not, that means the
DPB entry is a top field reference
``V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE (enum)``
Specifies the decoding mode to use. Currently exposes slice-based and

View file

@ -185,6 +185,8 @@ struct v4l2_ctrl_h264_slice_params {
#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x01
#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x02
#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x04
#define V4L2_H264_DPB_ENTRY_FLAG_FIELD 0x08
#define V4L2_H264_DPB_ENTRY_FLAG_BOTTOM_FIELD 0x10
struct v4l2_h264_dpb_entry {
__u64 reference_ts;