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 | 2385 | * @poc_st_curr_after: provides the index of the short term after references |
| 2386 | 2386 | * in DPB array |
| 2387 | 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 | 2391 | * @reserved: padding field. Should be zeroed by applications. |
| 2389 | 2392 | * @dpb: the decoded picture buffer, for meta-data about reference frames |
| 2390 | 2393 | * @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{} |
| @@ -2400,7 +2403,8 @@ struct v4l2_ctrl_hevc_decode_params { · 9 unmodified lines | ||
| 2400 | 2403 | __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2401 | 2404 | __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2402 | 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 | 2408 | struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; |
| 2405 | 2409 | __u64 flags; |
| 2406 | 2410 | }; |