xref: /aosp_15_r20/external/mesa3d/src/vulkan/runtime/vk_video.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2021 Red Hat
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
6*61046927SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
7*61046927SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*61046927SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
9*61046927SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
10*61046927SAndroid Build Coastguard Worker  *
11*61046927SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the next
12*61046927SAndroid Build Coastguard Worker  * paragraph) shall be included in all copies or substantial portions of the
13*61046927SAndroid Build Coastguard Worker  * Software.
14*61046927SAndroid Build Coastguard Worker  *
15*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*61046927SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*61046927SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*61046927SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*61046927SAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20*61046927SAndroid Build Coastguard Worker  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21*61046927SAndroid Build Coastguard Worker  * IN THE SOFTWARE.
22*61046927SAndroid Build Coastguard Worker  */
23*61046927SAndroid Build Coastguard Worker #ifndef VK_VIDEO_H
24*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H
25*61046927SAndroid Build Coastguard Worker 
26*61046927SAndroid Build Coastguard Worker #include "vk_object.h"
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
29*61046927SAndroid Build Coastguard Worker extern "C" {
30*61046927SAndroid Build Coastguard Worker #endif
31*61046927SAndroid Build Coastguard Worker 
32*61046927SAndroid Build Coastguard Worker struct vk_video_h264_sps {
33*61046927SAndroid Build Coastguard Worker    StdVideoH264SequenceParameterSet base;
34*61046927SAndroid Build Coastguard Worker    int32_t offsets_for_ref_frame[256];
35*61046927SAndroid Build Coastguard Worker    StdVideoH264ScalingLists scaling_lists;
36*61046927SAndroid Build Coastguard Worker    StdVideoH264SequenceParameterSetVui vui;
37*61046927SAndroid Build Coastguard Worker    StdVideoH264HrdParameters vui_hrd_parameters;
38*61046927SAndroid Build Coastguard Worker };
39*61046927SAndroid Build Coastguard Worker 
40*61046927SAndroid Build Coastguard Worker struct vk_video_h264_pps {
41*61046927SAndroid Build Coastguard Worker    StdVideoH264PictureParameterSet base;
42*61046927SAndroid Build Coastguard Worker    StdVideoH264ScalingLists scaling_lists;
43*61046927SAndroid Build Coastguard Worker };
44*61046927SAndroid Build Coastguard Worker 
45*61046927SAndroid Build Coastguard Worker struct vk_video_h265_vps {
46*61046927SAndroid Build Coastguard Worker    StdVideoH265VideoParameterSet base;
47*61046927SAndroid Build Coastguard Worker    StdVideoH265DecPicBufMgr dec_pic_buf_mgr;
48*61046927SAndroid Build Coastguard Worker    StdVideoH265SubLayerHrdParameters hrd_parameters_nal;
49*61046927SAndroid Build Coastguard Worker    StdVideoH265SubLayerHrdParameters hrd_parameters_vcl;
50*61046927SAndroid Build Coastguard Worker    StdVideoH265HrdParameters hrd_parameters;
51*61046927SAndroid Build Coastguard Worker    StdVideoH265ProfileTierLevel tier_level;
52*61046927SAndroid Build Coastguard Worker };
53*61046927SAndroid Build Coastguard Worker 
54*61046927SAndroid Build Coastguard Worker struct vk_video_h265_sps {
55*61046927SAndroid Build Coastguard Worker    StdVideoH265SequenceParameterSet base;
56*61046927SAndroid Build Coastguard Worker    StdVideoH265ProfileTierLevel tier_level;
57*61046927SAndroid Build Coastguard Worker    StdVideoH265DecPicBufMgr dec_pic_buf_mgr;
58*61046927SAndroid Build Coastguard Worker    StdVideoH265ScalingLists scaling_lists;
59*61046927SAndroid Build Coastguard Worker    StdVideoH265ShortTermRefPicSet short_term_ref_pic_set;
60*61046927SAndroid Build Coastguard Worker    StdVideoH265LongTermRefPicsSps long_term_ref_pics_sps;
61*61046927SAndroid Build Coastguard Worker    StdVideoH265SubLayerHrdParameters hrd_parameters_nal;
62*61046927SAndroid Build Coastguard Worker    StdVideoH265SubLayerHrdParameters hrd_parameters_vcl;
63*61046927SAndroid Build Coastguard Worker    StdVideoH265HrdParameters hrd_parameters;
64*61046927SAndroid Build Coastguard Worker    StdVideoH265SequenceParameterSetVui vui;
65*61046927SAndroid Build Coastguard Worker    StdVideoH265PredictorPaletteEntries palette_entries;
66*61046927SAndroid Build Coastguard Worker };
67*61046927SAndroid Build Coastguard Worker 
68*61046927SAndroid Build Coastguard Worker struct vk_video_h265_pps {
69*61046927SAndroid Build Coastguard Worker    StdVideoH265PictureParameterSet base;
70*61046927SAndroid Build Coastguard Worker    StdVideoH265ScalingLists scaling_lists;
71*61046927SAndroid Build Coastguard Worker    StdVideoH265PredictorPaletteEntries palette_entries;
72*61046927SAndroid Build Coastguard Worker };
73*61046927SAndroid Build Coastguard Worker 
74*61046927SAndroid Build Coastguard Worker struct vk_video_av1_seq_hdr {
75*61046927SAndroid Build Coastguard Worker    StdVideoAV1SequenceHeader base;
76*61046927SAndroid Build Coastguard Worker    StdVideoAV1ColorConfig color_config;
77*61046927SAndroid Build Coastguard Worker    StdVideoAV1TimingInfo timing_info;
78*61046927SAndroid Build Coastguard Worker };
79*61046927SAndroid Build Coastguard Worker 
80*61046927SAndroid Build Coastguard Worker struct vk_video_session {
81*61046927SAndroid Build Coastguard Worker    struct vk_object_base base;
82*61046927SAndroid Build Coastguard Worker    VkVideoSessionCreateFlagsKHR flags;
83*61046927SAndroid Build Coastguard Worker    VkVideoCodecOperationFlagsKHR op;
84*61046927SAndroid Build Coastguard Worker    VkExtent2D max_coded;
85*61046927SAndroid Build Coastguard Worker    VkFormat picture_format;
86*61046927SAndroid Build Coastguard Worker    VkFormat ref_format;
87*61046927SAndroid Build Coastguard Worker    uint32_t max_dpb_slots;
88*61046927SAndroid Build Coastguard Worker    uint32_t max_active_ref_pics;
89*61046927SAndroid Build Coastguard Worker 
90*61046927SAndroid Build Coastguard Worker    struct {
91*61046927SAndroid Build Coastguard Worker       VkVideoEncodeUsageFlagsKHR video_usage_hints;
92*61046927SAndroid Build Coastguard Worker       VkVideoEncodeContentFlagsKHR video_content_hints;
93*61046927SAndroid Build Coastguard Worker       VkVideoEncodeTuningModeKHR tuning_mode;
94*61046927SAndroid Build Coastguard Worker    } enc_usage;
95*61046927SAndroid Build Coastguard Worker    union {
96*61046927SAndroid Build Coastguard Worker       struct {
97*61046927SAndroid Build Coastguard Worker          StdVideoH264ProfileIdc profile_idc;
98*61046927SAndroid Build Coastguard Worker       } h264;
99*61046927SAndroid Build Coastguard Worker       struct {
100*61046927SAndroid Build Coastguard Worker          StdVideoH265ProfileIdc profile_idc;
101*61046927SAndroid Build Coastguard Worker       } h265;
102*61046927SAndroid Build Coastguard Worker       struct {
103*61046927SAndroid Build Coastguard Worker          StdVideoAV1Profile profile;
104*61046927SAndroid Build Coastguard Worker          int film_grain_support;
105*61046927SAndroid Build Coastguard Worker       } av1;
106*61046927SAndroid Build Coastguard Worker    };
107*61046927SAndroid Build Coastguard Worker };
108*61046927SAndroid Build Coastguard Worker 
109*61046927SAndroid Build Coastguard Worker struct vk_video_session_parameters {
110*61046927SAndroid Build Coastguard Worker    struct vk_object_base base;
111*61046927SAndroid Build Coastguard Worker    VkVideoCodecOperationFlagsKHR op;
112*61046927SAndroid Build Coastguard Worker    union {
113*61046927SAndroid Build Coastguard Worker       struct {
114*61046927SAndroid Build Coastguard Worker          uint32_t max_h264_sps_count;
115*61046927SAndroid Build Coastguard Worker          uint32_t max_h264_pps_count;
116*61046927SAndroid Build Coastguard Worker 
117*61046927SAndroid Build Coastguard Worker          uint32_t h264_sps_count;
118*61046927SAndroid Build Coastguard Worker          struct vk_video_h264_sps *h264_sps;
119*61046927SAndroid Build Coastguard Worker          uint32_t h264_pps_count;
120*61046927SAndroid Build Coastguard Worker          struct vk_video_h264_pps *h264_pps;
121*61046927SAndroid Build Coastguard Worker       } h264_dec;
122*61046927SAndroid Build Coastguard Worker 
123*61046927SAndroid Build Coastguard Worker       struct {
124*61046927SAndroid Build Coastguard Worker          uint32_t max_h265_vps_count;
125*61046927SAndroid Build Coastguard Worker          uint32_t max_h265_sps_count;
126*61046927SAndroid Build Coastguard Worker          uint32_t max_h265_pps_count;
127*61046927SAndroid Build Coastguard Worker 
128*61046927SAndroid Build Coastguard Worker          uint32_t h265_vps_count;
129*61046927SAndroid Build Coastguard Worker          struct vk_video_h265_vps *h265_vps;
130*61046927SAndroid Build Coastguard Worker          uint32_t h265_sps_count;
131*61046927SAndroid Build Coastguard Worker          struct vk_video_h265_sps *h265_sps;
132*61046927SAndroid Build Coastguard Worker          uint32_t h265_pps_count;
133*61046927SAndroid Build Coastguard Worker          struct vk_video_h265_pps *h265_pps;
134*61046927SAndroid Build Coastguard Worker       } h265_dec;
135*61046927SAndroid Build Coastguard Worker 
136*61046927SAndroid Build Coastguard Worker       struct {
137*61046927SAndroid Build Coastguard Worker          struct vk_video_av1_seq_hdr seq_hdr;
138*61046927SAndroid Build Coastguard Worker       } av1_dec;
139*61046927SAndroid Build Coastguard Worker 
140*61046927SAndroid Build Coastguard Worker       struct {
141*61046927SAndroid Build Coastguard Worker          uint32_t max_h264_sps_count;
142*61046927SAndroid Build Coastguard Worker          uint32_t max_h264_pps_count;
143*61046927SAndroid Build Coastguard Worker 
144*61046927SAndroid Build Coastguard Worker          uint32_t h264_sps_count;
145*61046927SAndroid Build Coastguard Worker          struct vk_video_h264_sps *h264_sps;
146*61046927SAndroid Build Coastguard Worker          uint32_t h264_pps_count;
147*61046927SAndroid Build Coastguard Worker          struct vk_video_h264_pps *h264_pps;
148*61046927SAndroid Build Coastguard Worker          StdVideoH264ProfileIdc profile_idc;
149*61046927SAndroid Build Coastguard Worker       } h264_enc;
150*61046927SAndroid Build Coastguard Worker 
151*61046927SAndroid Build Coastguard Worker       struct {
152*61046927SAndroid Build Coastguard Worker          uint32_t max_h265_vps_count;
153*61046927SAndroid Build Coastguard Worker          uint32_t max_h265_sps_count;
154*61046927SAndroid Build Coastguard Worker          uint32_t max_h265_pps_count;
155*61046927SAndroid Build Coastguard Worker 
156*61046927SAndroid Build Coastguard Worker          uint32_t h265_vps_count;
157*61046927SAndroid Build Coastguard Worker          struct vk_video_h265_vps *h265_vps;
158*61046927SAndroid Build Coastguard Worker          uint32_t h265_sps_count;
159*61046927SAndroid Build Coastguard Worker          struct vk_video_h265_sps *h265_sps;
160*61046927SAndroid Build Coastguard Worker          uint32_t h265_pps_count;
161*61046927SAndroid Build Coastguard Worker          struct vk_video_h265_pps *h265_pps;
162*61046927SAndroid Build Coastguard Worker       } h265_enc;
163*61046927SAndroid Build Coastguard Worker    };
164*61046927SAndroid Build Coastguard Worker };
165*61046927SAndroid Build Coastguard Worker 
166*61046927SAndroid Build Coastguard Worker VkResult vk_video_session_init(struct vk_device *device,
167*61046927SAndroid Build Coastguard Worker                                struct vk_video_session *vid,
168*61046927SAndroid Build Coastguard Worker                                const VkVideoSessionCreateInfoKHR *create_info);
169*61046927SAndroid Build Coastguard Worker 
170*61046927SAndroid Build Coastguard Worker VkResult vk_video_session_parameters_init(struct vk_device *device,
171*61046927SAndroid Build Coastguard Worker                                           struct vk_video_session_parameters *params,
172*61046927SAndroid Build Coastguard Worker                                           const struct vk_video_session *vid,
173*61046927SAndroid Build Coastguard Worker                                           const struct vk_video_session_parameters *templ,
174*61046927SAndroid Build Coastguard Worker                                           const VkVideoSessionParametersCreateInfoKHR *create_info);
175*61046927SAndroid Build Coastguard Worker 
176*61046927SAndroid Build Coastguard Worker VkResult vk_video_session_parameters_update(struct vk_video_session_parameters *params,
177*61046927SAndroid Build Coastguard Worker                                             const VkVideoSessionParametersUpdateInfoKHR *update);
178*61046927SAndroid Build Coastguard Worker 
179*61046927SAndroid Build Coastguard Worker void vk_video_session_parameters_finish(struct vk_device *device,
180*61046927SAndroid Build Coastguard Worker                                         struct vk_video_session_parameters *params);
181*61046927SAndroid Build Coastguard Worker 
182*61046927SAndroid Build Coastguard Worker void vk_video_derive_h264_scaling_list(const StdVideoH264SequenceParameterSet *sps,
183*61046927SAndroid Build Coastguard Worker                                        const StdVideoH264PictureParameterSet *pps,
184*61046927SAndroid Build Coastguard Worker                                        StdVideoH264ScalingLists *list);
185*61046927SAndroid Build Coastguard Worker 
186*61046927SAndroid Build Coastguard Worker const StdVideoH264SequenceParameterSet *
187*61046927SAndroid Build Coastguard Worker vk_video_find_h264_dec_std_sps(const struct vk_video_session_parameters *params,
188*61046927SAndroid Build Coastguard Worker                                uint32_t id);
189*61046927SAndroid Build Coastguard Worker const StdVideoH264PictureParameterSet *
190*61046927SAndroid Build Coastguard Worker vk_video_find_h264_dec_std_pps(const struct vk_video_session_parameters *params,
191*61046927SAndroid Build Coastguard Worker                                uint32_t id);
192*61046927SAndroid Build Coastguard Worker const StdVideoH265VideoParameterSet *
193*61046927SAndroid Build Coastguard Worker vk_video_find_h265_dec_std_vps(const struct vk_video_session_parameters *params,
194*61046927SAndroid Build Coastguard Worker                                uint32_t id);
195*61046927SAndroid Build Coastguard Worker const StdVideoH265SequenceParameterSet *
196*61046927SAndroid Build Coastguard Worker vk_video_find_h265_dec_std_sps(const struct vk_video_session_parameters *params,
197*61046927SAndroid Build Coastguard Worker                                uint32_t id);
198*61046927SAndroid Build Coastguard Worker const StdVideoH265PictureParameterSet *
199*61046927SAndroid Build Coastguard Worker vk_video_find_h265_dec_std_pps(const struct vk_video_session_parameters *params,
200*61046927SAndroid Build Coastguard Worker                                uint32_t id);
201*61046927SAndroid Build Coastguard Worker 
202*61046927SAndroid Build Coastguard Worker struct vk_video_h265_slice_params {
203*61046927SAndroid Build Coastguard Worker    uint32_t slice_size;
204*61046927SAndroid Build Coastguard Worker 
205*61046927SAndroid Build Coastguard Worker    uint8_t first_slice_segment_in_pic_flag;
206*61046927SAndroid Build Coastguard Worker    StdVideoH265SliceType slice_type;
207*61046927SAndroid Build Coastguard Worker    uint8_t dependent_slice_segment;
208*61046927SAndroid Build Coastguard Worker    uint8_t temporal_mvp_enable;
209*61046927SAndroid Build Coastguard Worker    uint8_t loop_filter_across_slices_enable;
210*61046927SAndroid Build Coastguard Worker    int32_t pic_order_cnt_lsb;
211*61046927SAndroid Build Coastguard Worker    uint8_t sao_luma_flag;
212*61046927SAndroid Build Coastguard Worker    uint8_t sao_chroma_flag;
213*61046927SAndroid Build Coastguard Worker    uint8_t collocated_list;
214*61046927SAndroid Build Coastguard Worker    uint32_t collocated_ref_idx;
215*61046927SAndroid Build Coastguard Worker    uint8_t mvd_l1_zero_flag;
216*61046927SAndroid Build Coastguard Worker 
217*61046927SAndroid Build Coastguard Worker    uint8_t num_ref_idx_l0_active;
218*61046927SAndroid Build Coastguard Worker    uint8_t num_ref_idx_l1_active;
219*61046927SAndroid Build Coastguard Worker    uint8_t rpl_modification_flag[2];
220*61046927SAndroid Build Coastguard Worker    uint8_t cabac_init_idc;
221*61046927SAndroid Build Coastguard Worker    int8_t slice_qp_delta;
222*61046927SAndroid Build Coastguard Worker    int8_t slice_cb_qp_offset;
223*61046927SAndroid Build Coastguard Worker    int8_t slice_cr_qp_offset;
224*61046927SAndroid Build Coastguard Worker    int8_t max_num_merge_cand;
225*61046927SAndroid Build Coastguard Worker    uint32_t slice_data_bytes_offset;
226*61046927SAndroid Build Coastguard Worker    uint8_t disable_deblocking_filter_idc;
227*61046927SAndroid Build Coastguard Worker    int8_t tc_offset_div2;
228*61046927SAndroid Build Coastguard Worker    int8_t beta_offset_div2;
229*61046927SAndroid Build Coastguard Worker    uint32_t slice_segment_address;
230*61046927SAndroid Build Coastguard Worker 
231*61046927SAndroid Build Coastguard Worker    uint8_t luma_log2_weight_denom;
232*61046927SAndroid Build Coastguard Worker    uint8_t chroma_log2_weight_denom;
233*61046927SAndroid Build Coastguard Worker    uint8_t luma_weight_l0_flag[16];
234*61046927SAndroid Build Coastguard Worker    int16_t luma_weight_l0[16];
235*61046927SAndroid Build Coastguard Worker    int16_t luma_offset_l0[16];
236*61046927SAndroid Build Coastguard Worker    uint8_t chroma_weight_l0_flag[16];
237*61046927SAndroid Build Coastguard Worker    int16_t chroma_weight_l0[16][2];
238*61046927SAndroid Build Coastguard Worker    int16_t chroma_offset_l0[16][2];
239*61046927SAndroid Build Coastguard Worker    uint8_t luma_weight_l1_flag[16];
240*61046927SAndroid Build Coastguard Worker    int16_t luma_weight_l1[16];
241*61046927SAndroid Build Coastguard Worker    int16_t luma_offset_l1[16];
242*61046927SAndroid Build Coastguard Worker    uint8_t chroma_weight_l1_flag[16];
243*61046927SAndroid Build Coastguard Worker    int16_t chroma_weight_l1[16][2];
244*61046927SAndroid Build Coastguard Worker    int16_t chroma_offset_l1[16][2];
245*61046927SAndroid Build Coastguard Worker 
246*61046927SAndroid Build Coastguard Worker    int8_t delta_luma_weight_l0[16];
247*61046927SAndroid Build Coastguard Worker    int8_t delta_luma_weight_l1[16];
248*61046927SAndroid Build Coastguard Worker    int8_t delta_chroma_weight_l0[16][2];
249*61046927SAndroid Build Coastguard Worker    int8_t delta_chroma_weight_l1[16][2];
250*61046927SAndroid Build Coastguard Worker    int16_t delta_chroma_offset_l0[16][2];
251*61046927SAndroid Build Coastguard Worker    int16_t delta_chroma_offset_l1[16][2];
252*61046927SAndroid Build Coastguard Worker };
253*61046927SAndroid Build Coastguard Worker 
254*61046927SAndroid Build Coastguard Worker void
255*61046927SAndroid Build Coastguard Worker vk_video_parse_h265_slice_header(const struct VkVideoDecodeInfoKHR *frame_info,
256*61046927SAndroid Build Coastguard Worker                                  const VkVideoDecodeH265PictureInfoKHR *pic_info,
257*61046927SAndroid Build Coastguard Worker                                  const StdVideoH265SequenceParameterSet *sps,
258*61046927SAndroid Build Coastguard Worker                                  const StdVideoH265PictureParameterSet *pps,
259*61046927SAndroid Build Coastguard Worker                                  void *slice_data,
260*61046927SAndroid Build Coastguard Worker                                  uint32_t slice_size,
261*61046927SAndroid Build Coastguard Worker                                  struct vk_video_h265_slice_params *params);
262*61046927SAndroid Build Coastguard Worker 
263*61046927SAndroid Build Coastguard Worker 
264*61046927SAndroid Build Coastguard Worker struct vk_video_h265_reference {
265*61046927SAndroid Build Coastguard Worker    const VkVideoPictureResourceInfoKHR *pPictureResource;
266*61046927SAndroid Build Coastguard Worker    StdVideoDecodeH265ReferenceInfoFlags flags;
267*61046927SAndroid Build Coastguard Worker    uint32_t slot_index;
268*61046927SAndroid Build Coastguard Worker    int32_t pic_order_cnt;
269*61046927SAndroid Build Coastguard Worker };
270*61046927SAndroid Build Coastguard Worker 
271*61046927SAndroid Build Coastguard Worker int vk_video_h265_poc_by_slot(const struct VkVideoDecodeInfoKHR *frame_info, int slot);
272*61046927SAndroid Build Coastguard Worker 
273*61046927SAndroid Build Coastguard Worker void vk_fill_video_h265_reference_info(const VkVideoDecodeInfoKHR *frame_info,
274*61046927SAndroid Build Coastguard Worker                                        const struct VkVideoDecodeH265PictureInfoKHR *pic,
275*61046927SAndroid Build Coastguard Worker                                        const struct vk_video_h265_slice_params *slice_params,
276*61046927SAndroid Build Coastguard Worker                                        struct vk_video_h265_reference ref_slots[][8]);
277*61046927SAndroid Build Coastguard Worker 
278*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H264_MACROBLOCK_WIDTH 16
279*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H264_MACROBLOCK_HEIGHT 16
280*61046927SAndroid Build Coastguard Worker 
281*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H265_CTU_MAX_WIDTH 64
282*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_H265_CTU_MAX_HEIGHT 64
283*61046927SAndroid Build Coastguard Worker 
284*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_AV1_BLOCK_WIDTH 128
285*61046927SAndroid Build Coastguard Worker #define VK_VIDEO_AV1_BLOCK_HEIGHT 128
286*61046927SAndroid Build Coastguard Worker 
287*61046927SAndroid Build Coastguard Worker void
288*61046927SAndroid Build Coastguard Worker vk_video_get_profile_alignments(const VkVideoProfileListInfoKHR *profile_list,
289*61046927SAndroid Build Coastguard Worker                                 uint32_t *width_align_out, uint32_t *height_align_out);
290*61046927SAndroid Build Coastguard Worker 
291*61046927SAndroid Build Coastguard Worker uint8_t
292*61046927SAndroid Build Coastguard Worker vk_video_get_h264_level(StdVideoH264LevelIdc level);
293*61046927SAndroid Build Coastguard Worker 
294*61046927SAndroid Build Coastguard Worker const StdVideoH264SequenceParameterSet *
295*61046927SAndroid Build Coastguard Worker vk_video_find_h264_enc_std_sps(const struct vk_video_session_parameters *params,
296*61046927SAndroid Build Coastguard Worker                                uint32_t id);
297*61046927SAndroid Build Coastguard Worker const StdVideoH264PictureParameterSet *
298*61046927SAndroid Build Coastguard Worker vk_video_find_h264_enc_std_pps(const struct vk_video_session_parameters *params,
299*61046927SAndroid Build Coastguard Worker                                uint32_t id);
300*61046927SAndroid Build Coastguard Worker 
301*61046927SAndroid Build Coastguard Worker const StdVideoH265VideoParameterSet *
302*61046927SAndroid Build Coastguard Worker vk_video_find_h265_enc_std_vps(const struct vk_video_session_parameters *params,
303*61046927SAndroid Build Coastguard Worker                                uint32_t id);
304*61046927SAndroid Build Coastguard Worker const StdVideoH265SequenceParameterSet *
305*61046927SAndroid Build Coastguard Worker vk_video_find_h265_enc_std_sps(const struct vk_video_session_parameters *params,
306*61046927SAndroid Build Coastguard Worker                                uint32_t id);
307*61046927SAndroid Build Coastguard Worker const StdVideoH265PictureParameterSet *
308*61046927SAndroid Build Coastguard Worker vk_video_find_h265_enc_std_pps(const struct vk_video_session_parameters *params,
309*61046927SAndroid Build Coastguard Worker                                uint32_t id);
310*61046927SAndroid Build Coastguard Worker 
311*61046927SAndroid Build Coastguard Worker void
312*61046927SAndroid Build Coastguard Worker vk_video_encode_h264_sps(const StdVideoH264SequenceParameterSet *sps,
313*61046927SAndroid Build Coastguard Worker                          size_t size_limit,
314*61046927SAndroid Build Coastguard Worker                          size_t *data_size_ptr,
315*61046927SAndroid Build Coastguard Worker                          void *data_ptr);
316*61046927SAndroid Build Coastguard Worker 
317*61046927SAndroid Build Coastguard Worker void
318*61046927SAndroid Build Coastguard Worker vk_video_encode_h264_pps(const StdVideoH264PictureParameterSet *pps,
319*61046927SAndroid Build Coastguard Worker                          bool high_profile,
320*61046927SAndroid Build Coastguard Worker                          size_t size_limit,
321*61046927SAndroid Build Coastguard Worker                          size_t *data_size_ptr,
322*61046927SAndroid Build Coastguard Worker                          void *data_ptr);
323*61046927SAndroid Build Coastguard Worker 
324*61046927SAndroid Build Coastguard Worker unsigned
325*61046927SAndroid Build Coastguard Worker vk_video_get_h265_nal_unit(const StdVideoEncodeH265PictureInfo *pic_info);
326*61046927SAndroid Build Coastguard Worker 
327*61046927SAndroid Build Coastguard Worker void
328*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_vps(const StdVideoH265VideoParameterSet *vps,
329*61046927SAndroid Build Coastguard Worker                          size_t size_limit,
330*61046927SAndroid Build Coastguard Worker                          size_t *data_size,
331*61046927SAndroid Build Coastguard Worker                          void *data_ptr);
332*61046927SAndroid Build Coastguard Worker void
333*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_sps(const StdVideoH265SequenceParameterSet *sps,
334*61046927SAndroid Build Coastguard Worker                          size_t size_limit,
335*61046927SAndroid Build Coastguard Worker                          size_t* pDataSize,
336*61046927SAndroid Build Coastguard Worker                          void* pData);
337*61046927SAndroid Build Coastguard Worker 
338*61046927SAndroid Build Coastguard Worker void
339*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_pps(const StdVideoH265PictureParameterSet *pps,
340*61046927SAndroid Build Coastguard Worker                          size_t size_limit,
341*61046927SAndroid Build Coastguard Worker                          size_t *data_size,
342*61046927SAndroid Build Coastguard Worker                          void *data_ptr);
343*61046927SAndroid Build Coastguard Worker 
344*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
345*61046927SAndroid Build Coastguard Worker }
346*61046927SAndroid Build Coastguard Worker #endif
347*61046927SAndroid Build Coastguard Worker 
348*61046927SAndroid Build Coastguard Worker void
349*61046927SAndroid Build Coastguard Worker vk_video_encode_h264_slice_header(const StdVideoEncodeH264PictureInfo *pic_info,
350*61046927SAndroid Build Coastguard Worker                                   const StdVideoH264SequenceParameterSet *sps,
351*61046927SAndroid Build Coastguard Worker                                   const StdVideoH264PictureParameterSet *pps,
352*61046927SAndroid Build Coastguard Worker                                   const StdVideoEncodeH264SliceHeader *slice_header,
353*61046927SAndroid Build Coastguard Worker                                   const int8_t slice_qp_delta,
354*61046927SAndroid Build Coastguard Worker                                   size_t *data_size_ptr,
355*61046927SAndroid Build Coastguard Worker                                   void *data_ptr);
356*61046927SAndroid Build Coastguard Worker 
357*61046927SAndroid Build Coastguard Worker void
358*61046927SAndroid Build Coastguard Worker vk_video_encode_h265_slice_header(const StdVideoEncodeH265PictureInfo *pic_info,
359*61046927SAndroid Build Coastguard Worker                                   const StdVideoH265VideoParameterSet *vps,
360*61046927SAndroid Build Coastguard Worker                                   const StdVideoH265SequenceParameterSet *sps,
361*61046927SAndroid Build Coastguard Worker                                   const StdVideoH265PictureParameterSet *pps,
362*61046927SAndroid Build Coastguard Worker                                   const StdVideoEncodeH265SliceSegmentHeader *slice_header,
363*61046927SAndroid Build Coastguard Worker                                   const int8_t slice_qp_delta,
364*61046927SAndroid Build Coastguard Worker                                   size_t *data_size_ptr,
365*61046927SAndroid Build Coastguard Worker                                   void *data_ptr);
366*61046927SAndroid Build Coastguard Worker #endif
367