media: hevc: Remove RPS named flags
Marking a picture as long-term reference is valid for DPB but not for RPS. Change flag name to match with the description in HEVC spec chapter "8.3.2 Decoding process for reference picture set". PocStCurrBefore, PocStCurrAfter, PocLtCurr lists could be built by the kernel from the DPB entries struct v4l2_hevc_dpb_entry, using the information in the rps field. This way RPS flags becomes useless and are removed. This patch breaks the staging HEVC API because it introduces a new flag, changes a field name in v4l2_hevc_dpb_entry structure and removes V4L2_HEVC_DPB_ENTRY_RPS_* flags. [hverkuil: fixed some typos] Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com> Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
da13c943da
commit
7a3b3dc3bb
@ -3166,11 +3166,11 @@ enum v4l2_mpeg_video_hevc_size_of_length_field -
|
||||
:c:func:`v4l2_timeval_to_ns()` function to convert the struct
|
||||
:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
|
||||
* - __u8
|
||||
- ``rps``
|
||||
- The reference set for the reference frame
|
||||
(V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_BEFORE,
|
||||
V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_AFTER or
|
||||
V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR)
|
||||
- ``flags``
|
||||
- Long term flag for the reference frame
|
||||
(V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE). The flag is set as
|
||||
described in the ITU HEVC specification chapter "8.3.2 Decoding
|
||||
process for reference picture set".
|
||||
* - __u8
|
||||
- ``field_pic``
|
||||
- Whether the reference is a field picture or a frame.
|
||||
|
@ -433,7 +433,7 @@ static int set_ref(struct hantro_ctx *ctx)
|
||||
chroma_addr = luma_addr + cr_offset;
|
||||
mv_addr = luma_addr + mv_offset;
|
||||
|
||||
if (dpb[i].rps == V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR)
|
||||
if (dpb[i].flags & V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE)
|
||||
dpb_longterm_e |= BIT(V4L2_HEVC_DPB_ENTRIES_NUM_MAX - 1 - i);
|
||||
|
||||
hantro_write_addr(vpu, G2_REF_LUMA_ADDR(i), luma_addr);
|
||||
|
@ -169,7 +169,7 @@ static void cedrus_h265_ref_pic_list_write(struct cedrus_dev *dev,
|
||||
unsigned int index = list[i];
|
||||
u8 value = list[i];
|
||||
|
||||
if (dpb[index].rps == V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR)
|
||||
if (dpb[index].flags & V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE)
|
||||
value |= VE_DEC_H265_SRAM_REF_PIC_LIST_LT_REF;
|
||||
|
||||
/* Each SRAM word gathers up to 4 references. */
|
||||
|
@ -127,15 +127,13 @@ struct v4l2_ctrl_hevc_pps {
|
||||
__u64 flags;
|
||||
};
|
||||
|
||||
#define V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_BEFORE 0x01
|
||||
#define V4L2_HEVC_DPB_ENTRY_RPS_ST_CURR_AFTER 0x02
|
||||
#define V4L2_HEVC_DPB_ENTRY_RPS_LT_CURR 0x03
|
||||
#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
|
||||
|
||||
#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
|
||||
|
||||
struct v4l2_hevc_dpb_entry {
|
||||
__u64 timestamp;
|
||||
__u8 rps;
|
||||
__u8 flags;
|
||||
__u8 field_pic;
|
||||
__u16 pic_order_cnt[2];
|
||||
__u8 padding[2];
|
||||
|
Loading…
Reference in New Issue
Block a user