From 9ce17de1fdae3099d195a0cd5620644275a4a88d Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Thu, 9 Nov 2023 18:57:55 -0500 Subject: [PATCH] pipe: Add max_slice_bytes for H264, HEVC encoding Reviewed-by: Jesse Natalie Reviewed-by: Ruijing Dong Part-of: --- src/gallium/include/pipe/p_video_enums.h | 12 ++++++++++++ src/gallium/include/pipe/p_video_state.h | 12 ++++++++++++ 2 files changed, 24 insertions(+) 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; };