diff --git a/src/gallium/include/pipe/p_video_enums.h b/src/gallium/include/pipe/p_video_enums.h index 9823c518de4..bff95af6b76 100644 --- a/src/gallium/include/pipe/p_video_enums.h +++ b/src/gallium/include/pipe/p_video_enums.h @@ -285,6 +285,18 @@ enum pipe_video_enc_intra_refresh_mode PIPE_VIDEO_ENC_INTRA_REFRESH_MULTI_REF = 0x40000, }; +enum pipe_video_slice_mode +{ + /* + * Partitions the frame using block offsets and block numbers + */ + PIPE_VIDEO_SLICE_MODE_BLOCKS = 0, + /* + * Partitions the frame using max slice size per coded slice + */ + PIPE_VIDEO_SLICE_MODE_MAX_SLICE_SICE = 1, +}; + enum pipe_video_entrypoint { PIPE_VIDEO_ENTRYPOINT_UNKNOWN, diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h index 07831850455..1acf9fd20e8 100644 --- a/src/gallium/include/pipe/p_video_state.h +++ b/src/gallium/include/pipe/p_video_state.h @@ -627,9 +627,15 @@ struct pipe_h264_enc_picture_desc bool enable_vui; struct hash_table *frame_idx; + enum pipe_video_slice_mode slice_mode; + + /* Use with PIPE_VIDEO_SLICE_MODE_BLOCKS */ unsigned num_slice_descriptors; struct h264_slice_descriptor slices_descriptors[128]; + /* Use with PIPE_VIDEO_SLICE_MODE_MAX_SLICE_SICE */ + unsigned max_slice_bytes; + bool insert_aud_nalu; enum pipe_video_feedback_metadata_type requested_metadata; }; @@ -814,8 +820,14 @@ struct pipe_h265_enc_picture_desc bool not_referenced; struct hash_table *frame_idx; + enum pipe_video_slice_mode slice_mode; + + /* Use with PIPE_VIDEO_SLICE_MODE_BLOCKS */ unsigned num_slice_descriptors; struct h265_slice_descriptor slices_descriptors[128]; + + /* Use with PIPE_VIDEO_SLICE_MODE_MAX_SLICE_SICE */ + unsigned max_slice_bytes; enum pipe_video_feedback_metadata_type requested_metadata; };