Some drivers firmwares parse by themselves slice header and need num_delta_pocs_of_ref_rps_idx value to parse slice header short_term_ref_pic_set(). Use one of the 4 reserved bytes to store this value without changing the v4l2_ctrl_hevc_decode_params structure size and padding. This value also exist in DXVA API.
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -2385,6 +2385,9 @@ struct v4l2_ctrl_hevc_slice_params { · 2384 unmodified lines | |||
| 2385 | * @poc_st_curr_after: provides the index of the short term after references | 2385 | * @poc_st_curr_after: provides the index of the short term after references |
| 2386 | * in DPB array | 2386 | * in DPB array |
| 2387 | * @poc_lt_curr: provides the index of the long term references in DPB array | 2387 | * @poc_lt_curr: provides the index of the long term references in DPB array |
| 2388 | * @num_delta_pocs_of_ref_rps_idx: same as the derived value NumDeltaPocs[RefRpsIdx], | ||
| 2389 | * can be used to parse the RPS data in slice headers | ||
| 2390 | * instead of skipping it with @short_term_ref_pic_set_size. | ||
| 2388 | * @reserved: padding field. Should be zeroed by applications. | 2391 | * @reserved: padding field. Should be zeroed by applications. |
| 2389 | * @dpb: the decoded picture buffer, for meta-data about reference frames | 2392 | * @dpb: the decoded picture buffer, for meta-data about reference frames |
| 2390 | * @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{} | 2393 | * @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{} |
| @@ -2400,7 +2403,8 @@ struct v4l2_ctrl_hevc_decode_params { · 9 unmodified lines | |||
| 2400 | __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; | 2403 | __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2401 | __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; | 2404 | __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2402 | __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; | 2405 | __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2403 | __u8 reserved[4]; | 2406 | __u8 num_delta_pocs_of_ref_rps_idx; |
| 2407 | __u8 reserved[3]; | ||
| 2404 | struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; | 2408 | struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2405 | __u64 flags; | 2409 | __u64 flags; |
| 2406 | }; | 2410 | }; |