xref: /aosp_15_r20/external/libva/va/va_dec_vp9.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * Copyright (c) 2014 Intel Corporation. All Rights Reserved.
3*54e60f84SAndroid Build Coastguard Worker  *
4*54e60f84SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*54e60f84SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the
6*54e60f84SAndroid Build Coastguard Worker  * "Software"), to deal in the Software without restriction, including
7*54e60f84SAndroid Build Coastguard Worker  * without limitation the rights to use, copy, modify, merge, publish,
8*54e60f84SAndroid Build Coastguard Worker  * distribute, sub license, and/or sell copies of the Software, and to
9*54e60f84SAndroid Build Coastguard Worker  * permit persons to whom the Software is furnished to do so, subject to
10*54e60f84SAndroid Build Coastguard Worker  * the following conditions:
11*54e60f84SAndroid Build Coastguard Worker  *
12*54e60f84SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the
13*54e60f84SAndroid Build Coastguard Worker  * next paragraph) shall be included in all copies or substantial portions
14*54e60f84SAndroid Build Coastguard Worker  * of the Software.
15*54e60f84SAndroid Build Coastguard Worker  *
16*54e60f84SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17*54e60f84SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18*54e60f84SAndroid Build Coastguard Worker  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19*54e60f84SAndroid Build Coastguard Worker  * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
20*54e60f84SAndroid Build Coastguard Worker  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21*54e60f84SAndroid Build Coastguard Worker  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22*54e60f84SAndroid Build Coastguard Worker  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*54e60f84SAndroid Build Coastguard Worker  */
24*54e60f84SAndroid Build Coastguard Worker 
25*54e60f84SAndroid Build Coastguard Worker /**
26*54e60f84SAndroid Build Coastguard Worker  * \file va_dec_vp9.h
27*54e60f84SAndroid Build Coastguard Worker  * \brief The VP9 decoding API
28*54e60f84SAndroid Build Coastguard Worker  *
29*54e60f84SAndroid Build Coastguard Worker  * This file contains the \ref api_dec_vp9 "VP9 decoding API".
30*54e60f84SAndroid Build Coastguard Worker  */
31*54e60f84SAndroid Build Coastguard Worker 
32*54e60f84SAndroid Build Coastguard Worker #ifndef VA_DEC_VP9_H
33*54e60f84SAndroid Build Coastguard Worker #define VA_DEC_VP9_H
34*54e60f84SAndroid Build Coastguard Worker 
35*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
36*54e60f84SAndroid Build Coastguard Worker extern "C" {
37*54e60f84SAndroid Build Coastguard Worker #endif
38*54e60f84SAndroid Build Coastguard Worker 
39*54e60f84SAndroid Build Coastguard Worker /**
40*54e60f84SAndroid Build Coastguard Worker  * \defgroup api_dec_vp9 VP9 decoding API
41*54e60f84SAndroid Build Coastguard Worker  *
42*54e60f84SAndroid Build Coastguard Worker  * This VP9 decoding API supports 8-bit 420 format only.
43*54e60f84SAndroid Build Coastguard Worker  *
44*54e60f84SAndroid Build Coastguard Worker  * @{
45*54e60f84SAndroid Build Coastguard Worker  */
46*54e60f84SAndroid Build Coastguard Worker 
47*54e60f84SAndroid Build Coastguard Worker 
48*54e60f84SAndroid Build Coastguard Worker 
49*54e60f84SAndroid Build Coastguard Worker 
50*54e60f84SAndroid Build Coastguard Worker /**
51*54e60f84SAndroid Build Coastguard Worker  * \brief VP9 Decoding Picture Parameter Buffer Structure
52*54e60f84SAndroid Build Coastguard Worker  *
53*54e60f84SAndroid Build Coastguard Worker  * This structure conveys picture level parameters.
54*54e60f84SAndroid Build Coastguard Worker  * App should send a surface with this data structure down to VAAPI once
55*54e60f84SAndroid Build Coastguard Worker  * per frame.
56*54e60f84SAndroid Build Coastguard Worker  *
57*54e60f84SAndroid Build Coastguard Worker  */
58*54e60f84SAndroid Build Coastguard Worker typedef struct  _VADecPictureParameterBufferVP9 {
59*54e60f84SAndroid Build Coastguard Worker     /** \brief picture width
60*54e60f84SAndroid Build Coastguard Worker      *  Picture original resolution. The value may not be multiple of 8.
61*54e60f84SAndroid Build Coastguard Worker      */
62*54e60f84SAndroid Build Coastguard Worker     uint16_t                frame_width;
63*54e60f84SAndroid Build Coastguard Worker     /** \brief picture height
64*54e60f84SAndroid Build Coastguard Worker      *  Picture original resolution. The value may not be multiple of 8.
65*54e60f84SAndroid Build Coastguard Worker      */
66*54e60f84SAndroid Build Coastguard Worker     uint16_t                frame_height;
67*54e60f84SAndroid Build Coastguard Worker 
68*54e60f84SAndroid Build Coastguard Worker     /** \brief Surface indices of reference frames in DPB.
69*54e60f84SAndroid Build Coastguard Worker      *
70*54e60f84SAndroid Build Coastguard Worker      *  Each entry of the list specifies the surface index of the picture
71*54e60f84SAndroid Build Coastguard Worker      *  that is referred by current picture or will be referred by any future
72*54e60f84SAndroid Build Coastguard Worker      *  picture.
73*54e60f84SAndroid Build Coastguard Worker      *  Application who calls this API should update this list based on the
74*54e60f84SAndroid Build Coastguard Worker      *  refreshing information from VP9 bitstream.
75*54e60f84SAndroid Build Coastguard Worker      */
76*54e60f84SAndroid Build Coastguard Worker     VASurfaceID             reference_frames[8];
77*54e60f84SAndroid Build Coastguard Worker 
78*54e60f84SAndroid Build Coastguard Worker     union {
79*54e60f84SAndroid Build Coastguard Worker         struct {
80*54e60f84SAndroid Build Coastguard Worker             /** \brief flags for current picture
81*54e60f84SAndroid Build Coastguard Worker              *  same syntax and semantic as those in VP9 code
82*54e60f84SAndroid Build Coastguard Worker              */
83*54e60f84SAndroid Build Coastguard Worker             uint32_t        subsampling_x                               : 1;
84*54e60f84SAndroid Build Coastguard Worker             uint32_t        subsampling_y                               : 1;
85*54e60f84SAndroid Build Coastguard Worker             uint32_t        frame_type                                  : 1;
86*54e60f84SAndroid Build Coastguard Worker             uint32_t        show_frame                                  : 1;
87*54e60f84SAndroid Build Coastguard Worker             uint32_t        error_resilient_mode                        : 1;
88*54e60f84SAndroid Build Coastguard Worker             uint32_t        intra_only                                  : 1;
89*54e60f84SAndroid Build Coastguard Worker             uint32_t        allow_high_precision_mv                     : 1;
90*54e60f84SAndroid Build Coastguard Worker             uint32_t        mcomp_filter_type                           : 3;
91*54e60f84SAndroid Build Coastguard Worker             uint32_t        frame_parallel_decoding_mode                : 1;
92*54e60f84SAndroid Build Coastguard Worker             uint32_t        reset_frame_context                         : 2;
93*54e60f84SAndroid Build Coastguard Worker             uint32_t        refresh_frame_context                       : 1;
94*54e60f84SAndroid Build Coastguard Worker             uint32_t        frame_context_idx                           : 2;
95*54e60f84SAndroid Build Coastguard Worker             uint32_t        segmentation_enabled                        : 1;
96*54e60f84SAndroid Build Coastguard Worker 
97*54e60f84SAndroid Build Coastguard Worker             /** \brief corresponds to variable temporal_update in VP9 code.
98*54e60f84SAndroid Build Coastguard Worker              */
99*54e60f84SAndroid Build Coastguard Worker             uint32_t        segmentation_temporal_update                : 1;
100*54e60f84SAndroid Build Coastguard Worker             /** \brief corresponds to variable update_mb_segmentation_map
101*54e60f84SAndroid Build Coastguard Worker              *  in VP9 code.
102*54e60f84SAndroid Build Coastguard Worker              */
103*54e60f84SAndroid Build Coastguard Worker             uint32_t        segmentation_update_map                     : 1;
104*54e60f84SAndroid Build Coastguard Worker 
105*54e60f84SAndroid Build Coastguard Worker             /** \brief Index of reference_frames[] and points to the
106*54e60f84SAndroid Build Coastguard Worker              *  LAST reference frame.
107*54e60f84SAndroid Build Coastguard Worker              *  It corresponds to active_ref_idx[0] in VP9 code.
108*54e60f84SAndroid Build Coastguard Worker              */
109*54e60f84SAndroid Build Coastguard Worker             uint32_t        last_ref_frame                              : 3;
110*54e60f84SAndroid Build Coastguard Worker             /** \brief Sign Bias of the LAST reference frame.
111*54e60f84SAndroid Build Coastguard Worker              *  It corresponds to ref_frame_sign_bias[LAST_FRAME] in VP9 code.
112*54e60f84SAndroid Build Coastguard Worker              */
113*54e60f84SAndroid Build Coastguard Worker             uint32_t        last_ref_frame_sign_bias                    : 1;
114*54e60f84SAndroid Build Coastguard Worker             /** \brief Index of reference_frames[] and points to the
115*54e60f84SAndroid Build Coastguard Worker              *  GOLDERN reference frame.
116*54e60f84SAndroid Build Coastguard Worker              *  It corresponds to active_ref_idx[1] in VP9 code.
117*54e60f84SAndroid Build Coastguard Worker              */
118*54e60f84SAndroid Build Coastguard Worker             uint32_t        golden_ref_frame                            : 3;
119*54e60f84SAndroid Build Coastguard Worker             /** \brief Sign Bias of the GOLDERN reference frame.
120*54e60f84SAndroid Build Coastguard Worker              *  Corresponds to ref_frame_sign_bias[GOLDERN_FRAME] in VP9 code.
121*54e60f84SAndroid Build Coastguard Worker              */
122*54e60f84SAndroid Build Coastguard Worker             uint32_t        golden_ref_frame_sign_bias                  : 1;
123*54e60f84SAndroid Build Coastguard Worker             /** \brief Index of reference_frames[] and points to the
124*54e60f84SAndroid Build Coastguard Worker              *  ALTERNATE reference frame.
125*54e60f84SAndroid Build Coastguard Worker              *  Corresponds to active_ref_idx[2] in VP9 code.
126*54e60f84SAndroid Build Coastguard Worker              */
127*54e60f84SAndroid Build Coastguard Worker             uint32_t        alt_ref_frame                               : 3;
128*54e60f84SAndroid Build Coastguard Worker             /** \brief Sign Bias of the ALTERNATE reference frame.
129*54e60f84SAndroid Build Coastguard Worker              *  Corresponds to ref_frame_sign_bias[ALTREF_FRAME] in VP9 code.
130*54e60f84SAndroid Build Coastguard Worker              */
131*54e60f84SAndroid Build Coastguard Worker             uint32_t        alt_ref_frame_sign_bias                     : 1;
132*54e60f84SAndroid Build Coastguard Worker             /** \brief Lossless Mode
133*54e60f84SAndroid Build Coastguard Worker              *  LosslessFlag = base_qindex == 0 &&
134*54e60f84SAndroid Build Coastguard Worker              *                 y_dc_delta_q == 0 &&
135*54e60f84SAndroid Build Coastguard Worker              *                 uv_dc_delta_q == 0 &&
136*54e60f84SAndroid Build Coastguard Worker              *                 uv_ac_delta_q == 0;
137*54e60f84SAndroid Build Coastguard Worker              *  Where base_qindex, y_dc_delta_q, uv_dc_delta_q and uv_ac_delta_q
138*54e60f84SAndroid Build Coastguard Worker              *  are all variables in VP9 code.
139*54e60f84SAndroid Build Coastguard Worker              */
140*54e60f84SAndroid Build Coastguard Worker             uint32_t        lossless_flag                               : 1;
141*54e60f84SAndroid Build Coastguard Worker         } bits;
142*54e60f84SAndroid Build Coastguard Worker         uint32_t            value;
143*54e60f84SAndroid Build Coastguard Worker     } pic_fields;
144*54e60f84SAndroid Build Coastguard Worker 
145*54e60f84SAndroid Build Coastguard Worker     /* following parameters have same syntax with those in VP9 code */
146*54e60f84SAndroid Build Coastguard Worker     uint8_t                 filter_level;
147*54e60f84SAndroid Build Coastguard Worker     uint8_t                 sharpness_level;
148*54e60f84SAndroid Build Coastguard Worker 
149*54e60f84SAndroid Build Coastguard Worker     /** \brief number of tile rows specified by (1 << log2_tile_rows).
150*54e60f84SAndroid Build Coastguard Worker      *  It corresponds the variable with same name in VP9 code.
151*54e60f84SAndroid Build Coastguard Worker      */
152*54e60f84SAndroid Build Coastguard Worker     uint8_t                 log2_tile_rows;
153*54e60f84SAndroid Build Coastguard Worker     /** \brief number of tile columns specified by (1 << log2_tile_columns).
154*54e60f84SAndroid Build Coastguard Worker      *  It corresponds the variable with same name in VP9 code.
155*54e60f84SAndroid Build Coastguard Worker      */
156*54e60f84SAndroid Build Coastguard Worker     uint8_t                 log2_tile_columns;
157*54e60f84SAndroid Build Coastguard Worker     /** \brief Number of bytes taken up by the uncompressed frame header,
158*54e60f84SAndroid Build Coastguard Worker      *  which corresponds to byte length of function
159*54e60f84SAndroid Build Coastguard Worker      *  read_uncompressed_header() in VP9 code.
160*54e60f84SAndroid Build Coastguard Worker      *  Specifically, it is the byte count from bit stream buffer start to
161*54e60f84SAndroid Build Coastguard Worker      *  the last byte of uncompressed frame header.
162*54e60f84SAndroid Build Coastguard Worker      *  If there are other meta data in the buffer before uncompressed header,
163*54e60f84SAndroid Build Coastguard Worker      *  its size should be also included here.
164*54e60f84SAndroid Build Coastguard Worker      */
165*54e60f84SAndroid Build Coastguard Worker     uint8_t                 frame_header_length_in_bytes;
166*54e60f84SAndroid Build Coastguard Worker 
167*54e60f84SAndroid Build Coastguard Worker     /** \brief The byte count of compressed header the bitstream buffer,
168*54e60f84SAndroid Build Coastguard Worker      *  which corresponds to syntax first_partition_size in code.
169*54e60f84SAndroid Build Coastguard Worker      */
170*54e60f84SAndroid Build Coastguard Worker     uint16_t                first_partition_size;
171*54e60f84SAndroid Build Coastguard Worker 
172*54e60f84SAndroid Build Coastguard Worker     /** These values are segment probabilities with same names in VP9
173*54e60f84SAndroid Build Coastguard Worker      *  function setup_segmentation(). They should be parsed directly from
174*54e60f84SAndroid Build Coastguard Worker      *  bitstream by application.
175*54e60f84SAndroid Build Coastguard Worker      */
176*54e60f84SAndroid Build Coastguard Worker     uint8_t                 mb_segment_tree_probs[7];
177*54e60f84SAndroid Build Coastguard Worker     uint8_t                 segment_pred_probs[3];
178*54e60f84SAndroid Build Coastguard Worker 
179*54e60f84SAndroid Build Coastguard Worker     /** \brief VP9 Profile definition
180*54e60f84SAndroid Build Coastguard Worker      *  value range [0..3].
181*54e60f84SAndroid Build Coastguard Worker       */
182*54e60f84SAndroid Build Coastguard Worker     uint8_t                 profile;
183*54e60f84SAndroid Build Coastguard Worker 
184*54e60f84SAndroid Build Coastguard Worker     /** \brief VP9 bit depth per sample
185*54e60f84SAndroid Build Coastguard Worker      *  same for both luma and chroma samples.
186*54e60f84SAndroid Build Coastguard Worker      */
187*54e60f84SAndroid Build Coastguard Worker     uint8_t                 bit_depth;
188*54e60f84SAndroid Build Coastguard Worker 
189*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
190*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_MEDIUM];
191*54e60f84SAndroid Build Coastguard Worker 
192*54e60f84SAndroid Build Coastguard Worker } VADecPictureParameterBufferVP9;
193*54e60f84SAndroid Build Coastguard Worker 
194*54e60f84SAndroid Build Coastguard Worker 
195*54e60f84SAndroid Build Coastguard Worker 
196*54e60f84SAndroid Build Coastguard Worker /**
197*54e60f84SAndroid Build Coastguard Worker  * \brief VP9 Segmentation Parameter Data Structure
198*54e60f84SAndroid Build Coastguard Worker  *
199*54e60f84SAndroid Build Coastguard Worker  * This structure conveys per segment parameters.
200*54e60f84SAndroid Build Coastguard Worker  * 8 of this data structure will be included in VASegmentationParameterBufferVP9
201*54e60f84SAndroid Build Coastguard Worker  * and sent to API in a single buffer.
202*54e60f84SAndroid Build Coastguard Worker  *
203*54e60f84SAndroid Build Coastguard Worker  */
204*54e60f84SAndroid Build Coastguard Worker typedef struct  _VASegmentParameterVP9 {
205*54e60f84SAndroid Build Coastguard Worker     union {
206*54e60f84SAndroid Build Coastguard Worker         struct {
207*54e60f84SAndroid Build Coastguard Worker             /** \brief Indicates if per segment reference frame indicator
208*54e60f84SAndroid Build Coastguard Worker              *  is enabled.
209*54e60f84SAndroid Build Coastguard Worker              *  Corresponding to variable feature_enabled when
210*54e60f84SAndroid Build Coastguard Worker              *  j == SEG_LVL_REF_FRAME in function setup_segmentation() VP9 code.
211*54e60f84SAndroid Build Coastguard Worker              */
212*54e60f84SAndroid Build Coastguard Worker             uint16_t        segment_reference_enabled                   : 1;
213*54e60f84SAndroid Build Coastguard Worker             /** \brief Specifies per segment reference indication.
214*54e60f84SAndroid Build Coastguard Worker              *  0: reserved
215*54e60f84SAndroid Build Coastguard Worker              *  1: Last ref
216*54e60f84SAndroid Build Coastguard Worker              *  2: golden
217*54e60f84SAndroid Build Coastguard Worker              *  3: altref
218*54e60f84SAndroid Build Coastguard Worker              *  Value can be derived from variable data when
219*54e60f84SAndroid Build Coastguard Worker              *  j == SEG_LVL_REF_FRAME in function setup_segmentation() VP9 code.
220*54e60f84SAndroid Build Coastguard Worker              */
221*54e60f84SAndroid Build Coastguard Worker             uint16_t        segment_reference                           : 2;
222*54e60f84SAndroid Build Coastguard Worker             /** \brief Indicates if per segment skip feature is enabled.
223*54e60f84SAndroid Build Coastguard Worker              *  Corresponding to variable feature_enabled when
224*54e60f84SAndroid Build Coastguard Worker              *  j == SEG_LVL_SKIP in function setup_segmentation() VP9 code.
225*54e60f84SAndroid Build Coastguard Worker              */
226*54e60f84SAndroid Build Coastguard Worker             uint16_t        segment_reference_skipped                   : 1;
227*54e60f84SAndroid Build Coastguard Worker         } fields;
228*54e60f84SAndroid Build Coastguard Worker         uint16_t            value;
229*54e60f84SAndroid Build Coastguard Worker     } segment_flags;
230*54e60f84SAndroid Build Coastguard Worker 
231*54e60f84SAndroid Build Coastguard Worker     /** \brief Specifies the filter level information per segment.
232*54e60f84SAndroid Build Coastguard Worker      *  The value corresponds to variable lfi->lvl[seg][ref][mode] in VP9 code,
233*54e60f84SAndroid Build Coastguard Worker      *  where m is [ref], and n is [mode] in FilterLevel[m][n].
234*54e60f84SAndroid Build Coastguard Worker      */
235*54e60f84SAndroid Build Coastguard Worker     uint8_t                 filter_level[4][2];
236*54e60f84SAndroid Build Coastguard Worker     /** \brief Specifies per segment Luma AC quantization scale.
237*54e60f84SAndroid Build Coastguard Worker      *  Corresponding to y_dequant[qindex][1] in vp9_mb_init_quantizer()
238*54e60f84SAndroid Build Coastguard Worker      *  function of VP9 code.
239*54e60f84SAndroid Build Coastguard Worker      */
240*54e60f84SAndroid Build Coastguard Worker     int16_t                 luma_ac_quant_scale;
241*54e60f84SAndroid Build Coastguard Worker     /** \brief Specifies per segment Luma DC quantization scale.
242*54e60f84SAndroid Build Coastguard Worker      *  Corresponding to y_dequant[qindex][0] in vp9_mb_init_quantizer()
243*54e60f84SAndroid Build Coastguard Worker      *  function of VP9 code.
244*54e60f84SAndroid Build Coastguard Worker      */
245*54e60f84SAndroid Build Coastguard Worker     int16_t                 luma_dc_quant_scale;
246*54e60f84SAndroid Build Coastguard Worker     /** \brief Specifies per segment Chroma AC quantization scale.
247*54e60f84SAndroid Build Coastguard Worker      *  Corresponding to uv_dequant[qindex][1] in vp9_mb_init_quantizer()
248*54e60f84SAndroid Build Coastguard Worker      *  function of VP9 code.
249*54e60f84SAndroid Build Coastguard Worker      */
250*54e60f84SAndroid Build Coastguard Worker     int16_t                 chroma_ac_quant_scale;
251*54e60f84SAndroid Build Coastguard Worker     /** \brief Specifies per segment Chroma DC quantization scale.
252*54e60f84SAndroid Build Coastguard Worker      *  Corresponding to uv_dequant[qindex][0] in vp9_mb_init_quantizer()
253*54e60f84SAndroid Build Coastguard Worker      *  function of VP9 code.
254*54e60f84SAndroid Build Coastguard Worker      */
255*54e60f84SAndroid Build Coastguard Worker     int16_t                 chroma_dc_quant_scale;
256*54e60f84SAndroid Build Coastguard Worker 
257*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
258*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
259*54e60f84SAndroid Build Coastguard Worker 
260*54e60f84SAndroid Build Coastguard Worker } VASegmentParameterVP9;
261*54e60f84SAndroid Build Coastguard Worker 
262*54e60f84SAndroid Build Coastguard Worker 
263*54e60f84SAndroid Build Coastguard Worker 
264*54e60f84SAndroid Build Coastguard Worker /**
265*54e60f84SAndroid Build Coastguard Worker  * \brief VP9 Slice Parameter Buffer Structure
266*54e60f84SAndroid Build Coastguard Worker  *
267*54e60f84SAndroid Build Coastguard Worker  * This structure conveys parameters related to segmentation data and should be
268*54e60f84SAndroid Build Coastguard Worker  * sent once per frame.
269*54e60f84SAndroid Build Coastguard Worker  *
270*54e60f84SAndroid Build Coastguard Worker  * When segmentation is disabled, only SegParam[0] has valid values,
271*54e60f84SAndroid Build Coastguard Worker  * all other entries should be populated with 0.
272*54e60f84SAndroid Build Coastguard Worker  * Otherwise, all eight entries should be valid.
273*54e60f84SAndroid Build Coastguard Worker  *
274*54e60f84SAndroid Build Coastguard Worker  * Slice data buffer of VASliceDataBufferType is used
275*54e60f84SAndroid Build Coastguard Worker  * to send the bitstream which should include whole or part of partition 0
276*54e60f84SAndroid Build Coastguard Worker  * (at least compressed header) to the end of frame.
277*54e60f84SAndroid Build Coastguard Worker  *
278*54e60f84SAndroid Build Coastguard Worker  */
279*54e60f84SAndroid Build Coastguard Worker typedef struct _VASliceParameterBufferVP9 {
280*54e60f84SAndroid Build Coastguard Worker     /** \brief The byte count of current frame in the bitstream buffer,
281*54e60f84SAndroid Build Coastguard Worker      *  starting from first byte of the buffer.
282*54e60f84SAndroid Build Coastguard Worker      *  It uses the name slice_data_size to be consitent with other codec,
283*54e60f84SAndroid Build Coastguard Worker      *  but actually means frame_data_size.
284*54e60f84SAndroid Build Coastguard Worker      */
285*54e60f84SAndroid Build Coastguard Worker     uint32_t slice_data_size;
286*54e60f84SAndroid Build Coastguard Worker     /**
287*54e60f84SAndroid Build Coastguard Worker      * offset to the first byte of partition data (control partition)
288*54e60f84SAndroid Build Coastguard Worker      */
289*54e60f84SAndroid Build Coastguard Worker     uint32_t slice_data_offset;
290*54e60f84SAndroid Build Coastguard Worker     /**
291*54e60f84SAndroid Build Coastguard Worker      * see VA_SLICE_DATA_FLAG_XXX definitions
292*54e60f84SAndroid Build Coastguard Worker      */
293*54e60f84SAndroid Build Coastguard Worker     uint32_t slice_data_flag;
294*54e60f84SAndroid Build Coastguard Worker 
295*54e60f84SAndroid Build Coastguard Worker     /**
296*54e60f84SAndroid Build Coastguard Worker      * \brief per segment information
297*54e60f84SAndroid Build Coastguard Worker      */
298*54e60f84SAndroid Build Coastguard Worker     VASegmentParameterVP9   seg_param[8];
299*54e60f84SAndroid Build Coastguard Worker 
300*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
301*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
302*54e60f84SAndroid Build Coastguard Worker 
303*54e60f84SAndroid Build Coastguard Worker } VASliceParameterBufferVP9;
304*54e60f84SAndroid Build Coastguard Worker 
305*54e60f84SAndroid Build Coastguard Worker 
306*54e60f84SAndroid Build Coastguard Worker /**@}*/
307*54e60f84SAndroid Build Coastguard Worker 
308*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
309*54e60f84SAndroid Build Coastguard Worker }
310*54e60f84SAndroid Build Coastguard Worker #endif
311*54e60f84SAndroid Build Coastguard Worker 
312*54e60f84SAndroid Build Coastguard Worker #endif /* VA_DEC_VP9_H */
313