xref: /aosp_15_r20/external/libva/va/va_enc_mpeg2.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * Copyright (c) 2012 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_enc_mpeg2.h
27*54e60f84SAndroid Build Coastguard Worker  * \brief The MPEG-2 encoding API
28*54e60f84SAndroid Build Coastguard Worker  *
29*54e60f84SAndroid Build Coastguard Worker  * This file contains the \ref api_enc_mpeg2 "MPEG-2 encoding API".
30*54e60f84SAndroid Build Coastguard Worker  */
31*54e60f84SAndroid Build Coastguard Worker 
32*54e60f84SAndroid Build Coastguard Worker #ifndef _VA_ENC_MPEG2_H_
33*54e60f84SAndroid Build Coastguard Worker #define _VA_ENC_MPEG2_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_enc_mpeg2 MPEG-2 encoding API
41*54e60f84SAndroid Build Coastguard Worker  *
42*54e60f84SAndroid Build Coastguard Worker  * @{
43*54e60f84SAndroid Build Coastguard Worker  */
44*54e60f84SAndroid Build Coastguard Worker 
45*54e60f84SAndroid Build Coastguard Worker /**
46*54e60f84SAndroid Build Coastguard Worker  * \brief MPEG-2 Quantization Matrix Buffer
47*54e60f84SAndroid Build Coastguard Worker  *
48*54e60f84SAndroid Build Coastguard Worker  */
49*54e60f84SAndroid Build Coastguard Worker typedef VAIQMatrixBufferMPEG2 VAQMatrixBufferMPEG2;
50*54e60f84SAndroid Build Coastguard Worker 
51*54e60f84SAndroid Build Coastguard Worker /**
52*54e60f84SAndroid Build Coastguard Worker  * \brief Packed header types specific to MPEG-2 encoding.
53*54e60f84SAndroid Build Coastguard Worker  *
54*54e60f84SAndroid Build Coastguard Worker  * Types of packed headers generally used for MPEG-2 encoding.
55*54e60f84SAndroid Build Coastguard Worker  */
56*54e60f84SAndroid Build Coastguard Worker typedef enum {
57*54e60f84SAndroid Build Coastguard Worker     /**
58*54e60f84SAndroid Build Coastguard Worker      * \brief Packed Sequence Parameter Set (SPS).
59*54e60f84SAndroid Build Coastguard Worker      *
60*54e60f84SAndroid Build Coastguard Worker      */
61*54e60f84SAndroid Build Coastguard Worker     VAEncPackedHeaderMPEG2_SPS = VAEncPackedHeaderSequence,
62*54e60f84SAndroid Build Coastguard Worker     /**
63*54e60f84SAndroid Build Coastguard Worker      * \brief Packed Picture Parameter Set (PPS).
64*54e60f84SAndroid Build Coastguard Worker      *
65*54e60f84SAndroid Build Coastguard Worker      */
66*54e60f84SAndroid Build Coastguard Worker     VAEncPackedHeaderMPEG2_PPS = VAEncPackedHeaderPicture,
67*54e60f84SAndroid Build Coastguard Worker     /**
68*54e60f84SAndroid Build Coastguard Worker      * \brief Packed slice header.
69*54e60f84SAndroid Build Coastguard Worker      *
70*54e60f84SAndroid Build Coastguard Worker      */
71*54e60f84SAndroid Build Coastguard Worker     VAEncPackedHeaderMPEG2_Slice = VAEncPackedHeaderSlice,
72*54e60f84SAndroid Build Coastguard Worker } VAEncPackedHeaderTypeMPEG2;
73*54e60f84SAndroid Build Coastguard Worker 
74*54e60f84SAndroid Build Coastguard Worker /**
75*54e60f84SAndroid Build Coastguard Worker  * \brief Sequence parameter for MPEG-2 encoding
76*54e60f84SAndroid Build Coastguard Worker  *
77*54e60f84SAndroid Build Coastguard Worker  * This structure holds information for \c sequence_header() and
78*54e60f84SAndroid Build Coastguard Worker  * sequence_extension().
79*54e60f84SAndroid Build Coastguard Worker  *
80*54e60f84SAndroid Build Coastguard Worker  * If packed sequence headers mode is used, i.e. if the encoding
81*54e60f84SAndroid Build Coastguard Worker  * pipeline was configured with the #VA_ENC_PACKED_HEADER_SEQUENCE
82*54e60f84SAndroid Build Coastguard Worker  * flag, then the driver expects two more buffers to be provided to
83*54e60f84SAndroid Build Coastguard Worker  * the same \c vaRenderPicture() as this buffer:
84*54e60f84SAndroid Build Coastguard Worker  * - a #VAEncPackedHeaderParameterBuffer with type set to
85*54e60f84SAndroid Build Coastguard Worker  *   VAEncPackedHeaderType::VAEncPackedHeaderSequence ;
86*54e60f84SAndroid Build Coastguard Worker  * - a #VAEncPackedHeaderDataBuffer which holds the actual packed
87*54e60f84SAndroid Build Coastguard Worker  *   header data.
88*54e60f84SAndroid Build Coastguard Worker  *
89*54e60f84SAndroid Build Coastguard Worker  */
90*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncSequenceParameterBufferMPEG2 {
91*54e60f84SAndroid Build Coastguard Worker     /** \brief Period between I frames. */
92*54e60f84SAndroid Build Coastguard Worker     uint32_t intra_period;
93*54e60f84SAndroid Build Coastguard Worker     /** \brief Period between I/P frames. */
94*54e60f84SAndroid Build Coastguard Worker     uint32_t ip_period;
95*54e60f84SAndroid Build Coastguard Worker     /** \brief Picture width.
96*54e60f84SAndroid Build Coastguard Worker      *
97*54e60f84SAndroid Build Coastguard Worker      * A 14bits unsigned inter, the lower 12bits
98*54e60f84SAndroid Build Coastguard Worker      * is horizontal_size_value, and the upper
99*54e60f84SAndroid Build Coastguard Worker      * 2bits is \c horizontal_size_extension
100*54e60f84SAndroid Build Coastguard Worker      *
101*54e60f84SAndroid Build Coastguard Worker      */
102*54e60f84SAndroid Build Coastguard Worker     uint16_t picture_width;
103*54e60f84SAndroid Build Coastguard Worker     /** \brief Picture height.
104*54e60f84SAndroid Build Coastguard Worker      *
105*54e60f84SAndroid Build Coastguard Worker      * A 14bits unsigned inter, the lower 12bits
106*54e60f84SAndroid Build Coastguard Worker      * is vertical_size_value, and the upper 2bits is
107*54e60f84SAndroid Build Coastguard Worker      * vertical_size_size_extension
108*54e60f84SAndroid Build Coastguard Worker      *
109*54e60f84SAndroid Build Coastguard Worker      */
110*54e60f84SAndroid Build Coastguard Worker     uint16_t picture_height;
111*54e60f84SAndroid Build Coastguard Worker     /**
112*54e60f84SAndroid Build Coastguard Worker      * \brief Initial bitrate set for this sequence in CBR or VBR modes.
113*54e60f84SAndroid Build Coastguard Worker      *
114*54e60f84SAndroid Build Coastguard Worker      * This field represents the initial bitrate value for this
115*54e60f84SAndroid Build Coastguard Worker      * sequence if CBR or VBR mode is used, i.e. if the encoder
116*54e60f84SAndroid Build Coastguard Worker      * pipeline was created with a #VAConfigAttribRateControl
117*54e60f84SAndroid Build Coastguard Worker      * attribute set to either \ref VA_RC_CBR or \ref VA_RC_VBR.
118*54e60f84SAndroid Build Coastguard Worker      *
119*54e60f84SAndroid Build Coastguard Worker      * bits_per_second may be derived from bit_rate.
120*54e60f84SAndroid Build Coastguard Worker      *
121*54e60f84SAndroid Build Coastguard Worker      */
122*54e60f84SAndroid Build Coastguard Worker     uint32_t bits_per_second;
123*54e60f84SAndroid Build Coastguard Worker     /**
124*54e60f84SAndroid Build Coastguard Worker      * \brief Frame rate
125*54e60f84SAndroid Build Coastguard Worker      *
126*54e60f84SAndroid Build Coastguard Worker      * Derived from frame_rate_value, frame_rate_extension_n and
127*54e60f84SAndroid Build Coastguard Worker      * frame_rate_extension_d
128*54e60f84SAndroid Build Coastguard Worker      *
129*54e60f84SAndroid Build Coastguard Worker      */
130*54e60f84SAndroid Build Coastguard Worker     float frame_rate;
131*54e60f84SAndroid Build Coastguard Worker     /** \brief Same as the element in sequence_header() */
132*54e60f84SAndroid Build Coastguard Worker     uint16_t aspect_ratio_information;
133*54e60f84SAndroid Build Coastguard Worker     /** \brief Define the size of VBV */
134*54e60f84SAndroid Build Coastguard Worker     uint32_t vbv_buffer_size;
135*54e60f84SAndroid Build Coastguard Worker 
136*54e60f84SAndroid Build Coastguard Worker     union {
137*54e60f84SAndroid Build Coastguard Worker         struct {
138*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Sequence extension() */
139*54e60f84SAndroid Build Coastguard Worker             uint32_t profile_and_level_indication   : 8;
140*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Sequence extension() */
141*54e60f84SAndroid Build Coastguard Worker             uint32_t progressive_sequence           : 1;
142*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Sequence extension() */
143*54e60f84SAndroid Build Coastguard Worker             uint32_t chroma_format                  : 2;
144*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Sequence extension() */
145*54e60f84SAndroid Build Coastguard Worker             uint32_t low_delay                      : 1;
146*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Sequence extension() */
147*54e60f84SAndroid Build Coastguard Worker             uint32_t frame_rate_extension_n         : 2;
148*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Sequence extension() */
149*54e60f84SAndroid Build Coastguard Worker             uint32_t frame_rate_extension_d         : 5;
150*54e60f84SAndroid Build Coastguard Worker         } bits;
151*54e60f84SAndroid Build Coastguard Worker         uint32_t value;
152*54e60f84SAndroid Build Coastguard Worker     } sequence_extension;
153*54e60f84SAndroid Build Coastguard Worker 
154*54e60f84SAndroid Build Coastguard Worker     /** \brief Flag to indicate the following GOP header are being updated */
155*54e60f84SAndroid Build Coastguard Worker     uint32_t new_gop_header;
156*54e60f84SAndroid Build Coastguard Worker 
157*54e60f84SAndroid Build Coastguard Worker     union {
158*54e60f84SAndroid Build Coastguard Worker         struct {
159*54e60f84SAndroid Build Coastguard Worker             /** \brief Time code */
160*54e60f84SAndroid Build Coastguard Worker             uint32_t time_code                      : 25;
161*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in GOP header */
162*54e60f84SAndroid Build Coastguard Worker             uint32_t closed_gop                     : 1;
163*54e60f84SAndroid Build Coastguard Worker             /** \brief SAme as the element in GOP header */
164*54e60f84SAndroid Build Coastguard Worker             uint32_t broken_link                    : 1;
165*54e60f84SAndroid Build Coastguard Worker         } bits;
166*54e60f84SAndroid Build Coastguard Worker         uint32_t value;
167*54e60f84SAndroid Build Coastguard Worker     } gop_header;
168*54e60f84SAndroid Build Coastguard Worker 
169*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
170*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
171*54e60f84SAndroid Build Coastguard Worker } VAEncSequenceParameterBufferMPEG2;
172*54e60f84SAndroid Build Coastguard Worker 
173*54e60f84SAndroid Build Coastguard Worker /**
174*54e60f84SAndroid Build Coastguard Worker  * \brief Picture parameter for MPEG-2 encoding
175*54e60f84SAndroid Build Coastguard Worker  *
176*54e60f84SAndroid Build Coastguard Worker  * This structure holds information for picture_header() and
177*54e60f84SAndroid Build Coastguard Worker  * picture_coding_extension()
178*54e60f84SAndroid Build Coastguard Worker  *
179*54e60f84SAndroid Build Coastguard Worker  * If packed picture headers mode is used, i.e. if the encoding
180*54e60f84SAndroid Build Coastguard Worker  * pipeline was configured with the #VA_ENC_PACKED_HEADER_PICTURE
181*54e60f84SAndroid Build Coastguard Worker  * flag, then the driver expects two more buffers to be provided to
182*54e60f84SAndroid Build Coastguard Worker  * the same \c vaRenderPicture() as this buffer:
183*54e60f84SAndroid Build Coastguard Worker  * - a #VAEncPackedHeaderParameterBuffer with type set to
184*54e60f84SAndroid Build Coastguard Worker  *   VAEncPackedHeaderType::VAEncPackedHeaderPicture ;
185*54e60f84SAndroid Build Coastguard Worker  * - a #VAEncPackedHeaderDataBuffer which holds the actual packed
186*54e60f84SAndroid Build Coastguard Worker  *   header data.
187*54e60f84SAndroid Build Coastguard Worker  *
188*54e60f84SAndroid Build Coastguard Worker  */
189*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncPictureParameterBufferMPEG2 {
190*54e60f84SAndroid Build Coastguard Worker     /** \brief Forward reference picture */
191*54e60f84SAndroid Build Coastguard Worker     VASurfaceID forward_reference_picture;
192*54e60f84SAndroid Build Coastguard Worker     /** \brief Backward reference picture */
193*54e60f84SAndroid Build Coastguard Worker     VASurfaceID backward_reference_picture;
194*54e60f84SAndroid Build Coastguard Worker     /** \brief Reconstructed(decoded) picture */
195*54e60f84SAndroid Build Coastguard Worker     VASurfaceID reconstructed_picture;
196*54e60f84SAndroid Build Coastguard Worker     /**
197*54e60f84SAndroid Build Coastguard Worker      * \brief Output encoded bitstream.
198*54e60f84SAndroid Build Coastguard Worker      *
199*54e60f84SAndroid Build Coastguard Worker      * \ref coded_buf has type #VAEncCodedBufferType. It should be
200*54e60f84SAndroid Build Coastguard Worker      * large enough to hold the compressed NAL slice and possibly SPS
201*54e60f84SAndroid Build Coastguard Worker      * and PPS NAL units.
202*54e60f84SAndroid Build Coastguard Worker      */
203*54e60f84SAndroid Build Coastguard Worker     VABufferID coded_buf;
204*54e60f84SAndroid Build Coastguard Worker     /**
205*54e60f84SAndroid Build Coastguard Worker      * \brief Flag to indicate the picture is the last one or not.
206*54e60f84SAndroid Build Coastguard Worker      *
207*54e60f84SAndroid Build Coastguard Worker      * This fields holds 0 if the picture to be encoded is not
208*54e60f84SAndroid Build Coastguard Worker      * the last one in the stream. Otherwise, it
209*54e60f84SAndroid Build Coastguard Worker      * is \ref MPEG2_LAST_PICTURE_EOSTREAM.
210*54e60f84SAndroid Build Coastguard Worker      */
211*54e60f84SAndroid Build Coastguard Worker     uint8_t last_picture;
212*54e60f84SAndroid Build Coastguard Worker     /** \brief Picture type */
213*54e60f84SAndroid Build Coastguard Worker     VAEncPictureType picture_type;
214*54e60f84SAndroid Build Coastguard Worker     /** \brief Same as the element in picture_header() */
215*54e60f84SAndroid Build Coastguard Worker     uint32_t temporal_reference;
216*54e60f84SAndroid Build Coastguard Worker     /** \brief Same as the element in picture_header() */
217*54e60f84SAndroid Build Coastguard Worker     uint32_t vbv_delay;
218*54e60f84SAndroid Build Coastguard Worker     /** \brief Same as the element in Picture coding extension */
219*54e60f84SAndroid Build Coastguard Worker     uint8_t f_code[2][2];
220*54e60f84SAndroid Build Coastguard Worker     union {
221*54e60f84SAndroid Build Coastguard Worker         struct {
222*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
223*54e60f84SAndroid Build Coastguard Worker             uint32_t intra_dc_precision             : 2;
224*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
225*54e60f84SAndroid Build Coastguard Worker             uint32_t picture_structure              : 2;
226*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
227*54e60f84SAndroid Build Coastguard Worker             uint32_t top_field_first                : 1;
228*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
229*54e60f84SAndroid Build Coastguard Worker             uint32_t frame_pred_frame_dct           : 1;
230*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
231*54e60f84SAndroid Build Coastguard Worker             uint32_t concealment_motion_vectors     : 1;
232*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
233*54e60f84SAndroid Build Coastguard Worker             uint32_t q_scale_type                   : 1;
234*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
235*54e60f84SAndroid Build Coastguard Worker             uint32_t intra_vlc_format               : 1;
236*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
237*54e60f84SAndroid Build Coastguard Worker             uint32_t alternate_scan                 : 1;
238*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
239*54e60f84SAndroid Build Coastguard Worker             uint32_t repeat_first_field             : 1;
240*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
241*54e60f84SAndroid Build Coastguard Worker             uint32_t progressive_frame              : 1;
242*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
243*54e60f84SAndroid Build Coastguard Worker             uint32_t composite_display_flag         : 1;
244*54e60f84SAndroid Build Coastguard Worker         } bits;
245*54e60f84SAndroid Build Coastguard Worker         uint32_t value;
246*54e60f84SAndroid Build Coastguard Worker     } picture_coding_extension;
247*54e60f84SAndroid Build Coastguard Worker 
248*54e60f84SAndroid Build Coastguard Worker     /* \brief Parameters for composite display
249*54e60f84SAndroid Build Coastguard Worker      *
250*54e60f84SAndroid Build Coastguard Worker      * Valid only when omposite_display_flag is 1
251*54e60f84SAndroid Build Coastguard Worker      */
252*54e60f84SAndroid Build Coastguard Worker     union {
253*54e60f84SAndroid Build Coastguard Worker         struct {
254*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
255*54e60f84SAndroid Build Coastguard Worker             uint32_t v_axis                         : 1;
256*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
257*54e60f84SAndroid Build Coastguard Worker             uint32_t field_sequence                 : 3;
258*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
259*54e60f84SAndroid Build Coastguard Worker             uint32_t sub_carrier                    : 1;
260*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
261*54e60f84SAndroid Build Coastguard Worker             uint32_t burst_amplitude                : 7;
262*54e60f84SAndroid Build Coastguard Worker             /** \brief Same as the element in Picture coding extension */
263*54e60f84SAndroid Build Coastguard Worker             uint32_t sub_carrier_phase              : 8;
264*54e60f84SAndroid Build Coastguard Worker         } bits;
265*54e60f84SAndroid Build Coastguard Worker         uint32_t value;
266*54e60f84SAndroid Build Coastguard Worker     } composite_display;
267*54e60f84SAndroid Build Coastguard Worker 
268*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
269*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
270*54e60f84SAndroid Build Coastguard Worker } VAEncPictureParameterBufferMPEG2;
271*54e60f84SAndroid Build Coastguard Worker 
272*54e60f84SAndroid Build Coastguard Worker /**
273*54e60f84SAndroid Build Coastguard Worker  * \brief Slice parameter for MPEG-2 encoding
274*54e60f84SAndroid Build Coastguard Worker  *
275*54e60f84SAndroid Build Coastguard Worker  */
276*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncSliceParameterBufferMPEG2 {
277*54e60f84SAndroid Build Coastguard Worker     /** \brief Starting MB address for this slice. */
278*54e60f84SAndroid Build Coastguard Worker     uint32_t macroblock_address;
279*54e60f84SAndroid Build Coastguard Worker     /** \brief Number of macroblocks in this slice. */
280*54e60f84SAndroid Build Coastguard Worker     uint32_t num_macroblocks;
281*54e60f84SAndroid Build Coastguard Worker     /** \brief Same as the element in slice() */
282*54e60f84SAndroid Build Coastguard Worker     int32_t quantiser_scale_code;
283*54e60f84SAndroid Build Coastguard Worker     /** \brief Flag to indicate intra slice */
284*54e60f84SAndroid Build Coastguard Worker     int32_t is_intra_slice;
285*54e60f84SAndroid Build Coastguard Worker 
286*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
287*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
288*54e60f84SAndroid Build Coastguard Worker } VAEncSliceParameterBufferMPEG2;
289*54e60f84SAndroid Build Coastguard Worker 
290*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncMiscParameterExtensionDataSeqDisplayMPEG2 {
291*54e60f84SAndroid Build Coastguard Worker     /** should always be 0x02 to identify it is Sequence Display Extension ISO-13818 */
292*54e60f84SAndroid Build Coastguard Worker     uint8_t extension_start_code_identifier;
293*54e60f84SAndroid Build Coastguard Worker     /** these field should follow ISO-13818 6.3.6 */
294*54e60f84SAndroid Build Coastguard Worker     uint8_t video_format;
295*54e60f84SAndroid Build Coastguard Worker     uint8_t colour_description;
296*54e60f84SAndroid Build Coastguard Worker     uint8_t colour_primaries;
297*54e60f84SAndroid Build Coastguard Worker     uint8_t transfer_characteristics;
298*54e60f84SAndroid Build Coastguard Worker     uint8_t matrix_coefficients;
299*54e60f84SAndroid Build Coastguard Worker     uint16_t display_horizontal_size;
300*54e60f84SAndroid Build Coastguard Worker     uint16_t display_vertical_size;
301*54e60f84SAndroid Build Coastguard Worker } VAEncMiscParameterExtensionDataSeqDisplayMPEG2;
302*54e60f84SAndroid Build Coastguard Worker /**@}*/
303*54e60f84SAndroid Build Coastguard Worker 
304*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
305*54e60f84SAndroid Build Coastguard Worker }
306*54e60f84SAndroid Build Coastguard Worker #endif
307*54e60f84SAndroid Build Coastguard Worker 
308*54e60f84SAndroid Build Coastguard Worker #endif /* _VA_ENC_MPEG2_H_ */
309