xref: /aosp_15_r20/external/libva/va/va_fei_h264.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * Copyright (c) 2007-2017 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_fei_h264.h
27*54e60f84SAndroid Build Coastguard Worker  * \brief The FEI encoding H264 special API
28*54e60f84SAndroid Build Coastguard Worker  */
29*54e60f84SAndroid Build Coastguard Worker 
30*54e60f84SAndroid Build Coastguard Worker #ifndef VA_FEI_H264_H
31*54e60f84SAndroid Build Coastguard Worker #define VA_FEI_H264_H
32*54e60f84SAndroid Build Coastguard Worker 
33*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
34*54e60f84SAndroid Build Coastguard Worker extern "C" {
35*54e60f84SAndroid Build Coastguard Worker #endif
36*54e60f84SAndroid Build Coastguard Worker 
37*54e60f84SAndroid Build Coastguard Worker #include <stdint.h>
38*54e60f84SAndroid Build Coastguard Worker #include "va_fei.h"
39*54e60f84SAndroid Build Coastguard Worker 
40*54e60f84SAndroid Build Coastguard Worker /**
41*54e60f84SAndroid Build Coastguard Worker  * \defgroup api_fei_h264 H.264 FEI encoding API
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 FEI frame level control buffer for H.264 */
47*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncMiscParameterFEIFrameControlH264 {
48*54e60f84SAndroid Build Coastguard Worker     uint32_t      function; /* one of the VAConfigAttribFEIFunctionType values */
49*54e60f84SAndroid Build Coastguard Worker     /** \brief MB (16x16) control input buffer. It is valid only when (mb_input | mb_size_ctrl)
50*54e60f84SAndroid Build Coastguard Worker      * is set to 1. The data in this buffer correspond to the input source. 16x16 MB is in raster scan order,
51*54e60f84SAndroid Build Coastguard Worker      * each MB control data structure is defined by VAEncFEIMBControlH264.
52*54e60f84SAndroid Build Coastguard Worker      * Buffer size shall not be less than the number of 16x16 blocks multiplied by
53*54e60f84SAndroid Build Coastguard Worker      * sizeof(VAEncFEIMBControlH264).
54*54e60f84SAndroid Build Coastguard Worker      * Note: if mb_qp is set, VAEncQPBufferH264 is expected.
55*54e60f84SAndroid Build Coastguard Worker      */
56*54e60f84SAndroid Build Coastguard Worker     VABufferID    mb_ctrl;
57*54e60f84SAndroid Build Coastguard Worker     /** \brief distortion output of MB ENC or ENC_PAK.
58*54e60f84SAndroid Build Coastguard Worker      * Each 16x16 block has one distortion data with VAEncFEIDistortionH264 layout
59*54e60f84SAndroid Build Coastguard Worker      * Buffer size shall not be less than the number of 16x16 blocks multiplied by
60*54e60f84SAndroid Build Coastguard Worker      * sizeof(VAEncFEIDistortionH264).
61*54e60f84SAndroid Build Coastguard Worker      */
62*54e60f84SAndroid Build Coastguard Worker     VABufferID    distortion;
63*54e60f84SAndroid Build Coastguard Worker     /** \brief MVs data output of MB ENC.
64*54e60f84SAndroid Build Coastguard Worker      * Each 16x16 block has one MVs data with layout VAMotionVector
65*54e60f84SAndroid Build Coastguard Worker      * Buffer size shall not be less than the number of 16x16 blocks multiplied by
66*54e60f84SAndroid Build Coastguard Worker      * sizeof(VAMotionVector) * 16.
67*54e60f84SAndroid Build Coastguard Worker      */
68*54e60f84SAndroid Build Coastguard Worker     VABufferID    mv_data;
69*54e60f84SAndroid Build Coastguard Worker     /** \brief MBCode data output of MB ENC.
70*54e60f84SAndroid Build Coastguard Worker      * Each 16x16 block has one MB Code data with layout VAEncFEIMBCodeH264
71*54e60f84SAndroid Build Coastguard Worker      * Buffer size shall not be less than the number of 16x16 blocks multiplied by
72*54e60f84SAndroid Build Coastguard Worker      * sizeof(VAEncFEIMBCodeH264).
73*54e60f84SAndroid Build Coastguard Worker      */
74*54e60f84SAndroid Build Coastguard Worker     VABufferID    mb_code_data;
75*54e60f84SAndroid Build Coastguard Worker     /** \brief QP input buffer with layout VAEncQPBufferH264. It is valid only when mb_qp is set to 1.
76*54e60f84SAndroid Build Coastguard Worker      * The data in this buffer correspond to the input source.
77*54e60f84SAndroid Build Coastguard Worker      * One QP per 16x16 block in raster scan order, each QP is a signed char (8-bit) value.
78*54e60f84SAndroid Build Coastguard Worker      **/
79*54e60f84SAndroid Build Coastguard Worker     VABufferID    qp;
80*54e60f84SAndroid Build Coastguard Worker     /** \brief MV predictor. It is valid only when mv_predictor_enable is set to 1.
81*54e60f84SAndroid Build Coastguard Worker      * Each 16x16 block has one or more pair of motion vectors and the corresponding
82*54e60f84SAndroid Build Coastguard Worker      * reference indexes as defined by VAEncFEIMVPredictorH264. 16x16 block is in raster scan order.
83*54e60f84SAndroid Build Coastguard Worker      * Buffer size shall not be less than the number of 16x16 blocks multiplied by
84*54e60f84SAndroid Build Coastguard Worker      * sizeof(VAEncFEIMVPredictorH264). */
85*54e60f84SAndroid Build Coastguard Worker     VABufferID    mv_predictor;
86*54e60f84SAndroid Build Coastguard Worker 
87*54e60f84SAndroid Build Coastguard Worker     /** \brief number of MV predictors. It must not be greater than maximum supported MV predictor. */
88*54e60f84SAndroid Build Coastguard Worker     uint32_t      num_mv_predictors_l0      : 16;
89*54e60f84SAndroid Build Coastguard Worker     uint32_t      num_mv_predictors_l1      : 16;
90*54e60f84SAndroid Build Coastguard Worker 
91*54e60f84SAndroid Build Coastguard Worker     /** \brief motion search method definition
92*54e60f84SAndroid Build Coastguard Worker      * 0: default value, diamond search
93*54e60f84SAndroid Build Coastguard Worker      * 1: full search
94*54e60f84SAndroid Build Coastguard Worker      * 2: diamond search
95*54e60f84SAndroid Build Coastguard Worker      **/
96*54e60f84SAndroid Build Coastguard Worker     uint32_t      search_path               : 8;
97*54e60f84SAndroid Build Coastguard Worker     /** \brief maximum number of Search Units, valid range is [1, 63]
98*54e60f84SAndroid Build Coastguard Worker      * 0 is treated as 1. reference search locations are grouped in a predefined pattern,
99*54e60f84SAndroid Build Coastguard Worker      * and all locations within the same group must be either all are chosen or all are skipped.
100*54e60f84SAndroid Build Coastguard Worker      * These predefined groups are called search unit (SU).*/
101*54e60f84SAndroid Build Coastguard Worker     uint32_t      len_sp                    : 8;
102*54e60f84SAndroid Build Coastguard Worker     uint32_t      reserved0                 : 16;
103*54e60f84SAndroid Build Coastguard Worker     /** \brief defines the bit-mask for disabling sub-partition
104*54e60f84SAndroid Build Coastguard Worker      * The lower 4 bits are for the major partitions (sub-macroblock) and the higher 3 bits for minor partitions (with sub-partition for 4x(8x8) sub-macroblocks.
105*54e60f84SAndroid Build Coastguard Worker      * xxxxxx1 : 16x16 sub-macroblock disabled
106*54e60f84SAndroid Build Coastguard Worker      * xxxxx1x : 2x(16x8) sub-macroblock within 16x16 disabled
107*54e60f84SAndroid Build Coastguard Worker      * xxxx1xx : 2x(8x16) sub-macroblock within 16x16 disabled
108*54e60f84SAndroid Build Coastguard Worker      * xxx1xxx : 1x(8x8) sub-partition for 4x(8x8) within 16x16 disabled
109*54e60f84SAndroid Build Coastguard Worker      * xx1xxxx : 2x(8x4) sub-partition for 4x(8x8) within 16x16 disabled
110*54e60f84SAndroid Build Coastguard Worker      * x1xxxxx : 2x(4x8) sub-partition for 4x(8x8) within 16x16 disabled
111*54e60f84SAndroid Build Coastguard Worker      * 1xxxxxx : 4x(4x4) sub-partition for 4x(8x8) within 16x16 disabled
112*54e60f84SAndroid Build Coastguard Worker      * 1111111 : Invalid
113*54e60f84SAndroid Build Coastguard Worker      * 0000000 : default value */
114*54e60f84SAndroid Build Coastguard Worker     uint32_t      sub_mb_part_mask          : 7;
115*54e60f84SAndroid Build Coastguard Worker     /** specifies which Luma Intra partition is enabled/disabled for intra mode decision.
116*54e60f84SAndroid Build Coastguard Worker      * xxxx1: luma_intra_16x16 disabled
117*54e60f84SAndroid Build Coastguard Worker      * xxx1x: luma_intra_8x8 disabled
118*54e60f84SAndroid Build Coastguard Worker      * xx1xx: luma_intra_4x4 disabled
119*54e60f84SAndroid Build Coastguard Worker      * xx111: intra prediction is disabled */
120*54e60f84SAndroid Build Coastguard Worker     uint32_t      intra_part_mask           : 5;
121*54e60f84SAndroid Build Coastguard Worker     /** when set to 1, neighbor MV will be used as predictor; when set to 0, no neighbor MV will be used as predictor.*/
122*54e60f84SAndroid Build Coastguard Worker     uint32_t      multi_pred_l0             : 1;
123*54e60f84SAndroid Build Coastguard Worker     /** when set to 1, neighbor MV will be used as predictor; when set to 0, no neighbor MV will be used as predictor.*/
124*54e60f84SAndroid Build Coastguard Worker     uint32_t      multi_pred_l1             : 1;
125*54e60f84SAndroid Build Coastguard Worker     /**defines the half/quarter pel modes. The mode is inclusive, ie., higher precision mode samples lower precision locations.
126*54e60f84SAndroid Build Coastguard Worker     * 00b: integer mode searching
127*54e60f84SAndroid Build Coastguard Worker     * 01b: half-pel mode searching
128*54e60f84SAndroid Build Coastguard Worker     * 10b: reserved
129*54e60f84SAndroid Build Coastguard Worker     * 11b: quarter-pel mode searching */
130*54e60f84SAndroid Build Coastguard Worker     uint32_t      sub_pel_mode              : 2;
131*54e60f84SAndroid Build Coastguard Worker     /** specifies distortion measure adjustments used for the inter motion search SAD comparison.
132*54e60f84SAndroid Build Coastguard Worker      * 00b: none
133*54e60f84SAndroid Build Coastguard Worker      * 10b: Haar transform adjusted*/
134*54e60f84SAndroid Build Coastguard Worker     uint32_t      inter_sad                 : 2;
135*54e60f84SAndroid Build Coastguard Worker     /** specifies distortion measure adjustments used for the intra motion search SAD comparison.
136*54e60f84SAndroid Build Coastguard Worker      * 00b: none
137*54e60f84SAndroid Build Coastguard Worker      * 10b: Haar transform adjusted*/
138*54e60f84SAndroid Build Coastguard Worker     uint32_t      intra_sad                 : 2;
139*54e60f84SAndroid Build Coastguard Worker     /** specifies if the output distortion is the raw distortion or cost adjusted distortion.
140*54e60f84SAndroid Build Coastguard Worker      * 0: Raw Distortion without Cost
141*54e60f84SAndroid Build Coastguard Worker      * 1: Distortion with added Cost */
142*54e60f84SAndroid Build Coastguard Worker     uint32_t      distortion_type           : 1;
143*54e60f84SAndroid Build Coastguard Worker     /** when set to 1, enables the additional calls on Fraction & Bidirectional Refinement*/
144*54e60f84SAndroid Build Coastguard Worker     uint32_t      repartition_check_enable  : 1;
145*54e60f84SAndroid Build Coastguard Worker     /** defines whether adaptive searching is enabled for IME(Integer Motion Estimation).
146*54e60f84SAndroid Build Coastguard Worker      * 0: disable
147*54e60f84SAndroid Build Coastguard Worker      * 1: enable  */
148*54e60f84SAndroid Build Coastguard Worker     uint32_t      adaptive_search           : 1;
149*54e60f84SAndroid Build Coastguard Worker     /** enables using the motion vector as an extra predictor provided by the host. If it is set,
150*54e60f84SAndroid Build Coastguard Worker      *  host needs to provide a buffer with motion vectors and the associated reference index for
151*54e60f84SAndroid Build Coastguard Worker      *  each 16x16 block as defined . The host can call processing function to get motion vectors and use as predictor.
152*54e60f84SAndroid Build Coastguard Worker      *  0: MV predictor disabled
153*54e60f84SAndroid Build Coastguard Worker      *  1: MV predictor enabled */
154*54e60f84SAndroid Build Coastguard Worker     uint32_t      mv_predictor_enable       : 1;
155*54e60f84SAndroid Build Coastguard Worker     /** enables using the QP buffer to set the QP for each block*/
156*54e60f84SAndroid Build Coastguard Worker     uint32_t      mb_qp                     : 1;
157*54e60f84SAndroid Build Coastguard Worker     /** enable mb_ctrl buffer to handle MB*/
158*54e60f84SAndroid Build Coastguard Worker     uint32_t      mb_input                  : 1;
159*54e60f84SAndroid Build Coastguard Worker     /** when this flag is set, mb_ctrl  must be set too and a buffer with per MB input
160*54e60f84SAndroid Build Coastguard Worker      * needs to be provided and MaxSizeInWord and */
161*54e60f84SAndroid Build Coastguard Worker     uint32_t      mb_size_ctrl              : 1;
162*54e60f84SAndroid Build Coastguard Worker     /** when this flag is set, extra distortion between the current MB and co-located MB is provided.
163*54e60f84SAndroid Build Coastguard Worker      *  Extra distortion output has performance impact, set it only when it is needed.*/
164*54e60f84SAndroid Build Coastguard Worker     uint32_t      colocated_mb_distortion   : 1;
165*54e60f84SAndroid Build Coastguard Worker     uint32_t      reserved1                 : 4;
166*54e60f84SAndroid Build Coastguard Worker 
167*54e60f84SAndroid Build Coastguard Worker     /** \brief motion search window(ref_width * ref_height) */
168*54e60f84SAndroid Build Coastguard Worker     uint32_t      ref_width                 : 8;
169*54e60f84SAndroid Build Coastguard Worker     uint32_t      ref_height                : 8;
170*54e60f84SAndroid Build Coastguard Worker     /** \brief predefined motion search windows. If selected, len_sp, window(ref_width * ref_eight)
171*54e60f84SAndroid Build Coastguard Worker      * and search_path setting are ignored.
172*54e60f84SAndroid Build Coastguard Worker      * 0: not use predefined search window
173*54e60f84SAndroid Build Coastguard Worker      * 1: Tiny, len_sp=4, 24x24 window and diamond search
174*54e60f84SAndroid Build Coastguard Worker      * 2: Small, len_sp=9, 28x28 window and diamond search
175*54e60f84SAndroid Build Coastguard Worker      * 3: Diamond, len_sp=16, 48x40 window and diamond search
176*54e60f84SAndroid Build Coastguard Worker      * 4: Large Diamond, len_sp=32, 48x40 window and diamond search
177*54e60f84SAndroid Build Coastguard Worker      * 5: Exhaustive, len_sp=48, 48x40 window and full search
178*54e60f84SAndroid Build Coastguard Worker      * 6: Extend Diamond, len_sp=16, 64x40 window and diamond search
179*54e60f84SAndroid Build Coastguard Worker      * 7: Extend Large Diamond, len_sp=32, 64x40 window and diamond search
180*54e60f84SAndroid Build Coastguard Worker      * 8: Extend Exhaustive, len_sp=48, 64x40 window and full search
181*54e60f84SAndroid Build Coastguard Worker      **/
182*54e60f84SAndroid Build Coastguard Worker     uint32_t      search_window             : 4;
183*54e60f84SAndroid Build Coastguard Worker     uint32_t      reserved2                 : 12;
184*54e60f84SAndroid Build Coastguard Worker 
185*54e60f84SAndroid Build Coastguard Worker     /** \brief max frame size control with multi passes QP setting */
186*54e60f84SAndroid Build Coastguard Worker     uint32_t      max_frame_size;
187*54e60f84SAndroid Build Coastguard Worker     /** \brief number of passes, every pass has different QP */
188*54e60f84SAndroid Build Coastguard Worker     uint32_t      num_passes;
189*54e60f84SAndroid Build Coastguard Worker     /** \brief delta QP list for every pass */
190*54e60f84SAndroid Build Coastguard Worker     uint8_t       *delta_qp;
191*54e60f84SAndroid Build Coastguard Worker     uint32_t      reserved3[VA_PADDING_LOW];
192*54e60f84SAndroid Build Coastguard Worker } VAEncMiscParameterFEIFrameControlH264;
193*54e60f84SAndroid Build Coastguard Worker 
194*54e60f84SAndroid Build Coastguard Worker /** \brief FEI MB level control data structure */
195*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncFEIMBControlH264 {
196*54e60f84SAndroid Build Coastguard Worker     /** \brief when set, correposndent MB is coded as intra */
197*54e60f84SAndroid Build Coastguard Worker     uint32_t force_to_intra                : 1;
198*54e60f84SAndroid Build Coastguard Worker     /** \brief when set, correposndent MB is coded as skip */
199*54e60f84SAndroid Build Coastguard Worker     uint32_t force_to_skip                 : 1;
200*54e60f84SAndroid Build Coastguard Worker     /** \brief specifies whether this macroblock should be coded as a non-skipped macroblock. */
201*54e60f84SAndroid Build Coastguard Worker     uint32_t force_to_nonskip              : 1;
202*54e60f84SAndroid Build Coastguard Worker     uint32_t enable_direct_bias_adjustment : 1;
203*54e60f84SAndroid Build Coastguard Worker     uint32_t enable_motion_bias_adjustment : 1;
204*54e60f84SAndroid Build Coastguard Worker     uint32_t ext_mv_cost_scaling_factor    : 3;
205*54e60f84SAndroid Build Coastguard Worker     uint32_t reserved0                     : 24;
206*54e60f84SAndroid Build Coastguard Worker 
207*54e60f84SAndroid Build Coastguard Worker     uint32_t reserved1;
208*54e60f84SAndroid Build Coastguard Worker 
209*54e60f84SAndroid Build Coastguard Worker     uint32_t reserved2;
210*54e60f84SAndroid Build Coastguard Worker 
211*54e60f84SAndroid Build Coastguard Worker     uint32_t reserved3                     : 16;
212*54e60f84SAndroid Build Coastguard Worker     /** \brief when mb_size_ctrl is set, size here is used to budget accumulatively. Set to 0xFF if don't care. */
213*54e60f84SAndroid Build Coastguard Worker     uint32_t target_size_in_word           : 8;
214*54e60f84SAndroid Build Coastguard Worker     /** \brief specifies the max size of each MB */
215*54e60f84SAndroid Build Coastguard Worker     uint32_t max_size_in_word              : 8;
216*54e60f84SAndroid Build Coastguard Worker } VAEncFEIMBControlH264;
217*54e60f84SAndroid Build Coastguard Worker 
218*54e60f84SAndroid Build Coastguard Worker 
219*54e60f84SAndroid Build Coastguard Worker /** \brief Application can use this definition as reference to allocate the buffer
220*54e60f84SAndroid Build Coastguard Worker  * based on MaxNumPredictor returned from attribute VAConfigAttribFEIMVPredictors query.
221*54e60f84SAndroid Build Coastguard Worker  **/
222*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncFEIMVPredictorH264 {
223*54e60f84SAndroid Build Coastguard Worker     /** \brief Reference index corresponding to the entry of RefPicList0 & RefPicList1 in VAEncSliceParameterBufferH264.
224*54e60f84SAndroid Build Coastguard Worker      * Note that RefPicList0 & RefPicList1 needs to be the same for all slices.
225*54e60f84SAndroid Build Coastguard Worker      * ref_idx_l0_x : index to RefPicList0; ref_idx_l1_x : index to RefPicList1; x : 0 - MaxNumPredictor.
226*54e60f84SAndroid Build Coastguard Worker      **/
227*54e60f84SAndroid Build Coastguard Worker     struct {
228*54e60f84SAndroid Build Coastguard Worker         uint8_t   ref_idx_l0    : 4;
229*54e60f84SAndroid Build Coastguard Worker         uint8_t   ref_idx_l1    : 4;
230*54e60f84SAndroid Build Coastguard Worker     } ref_idx[4]; /* index is predictor number */
231*54e60f84SAndroid Build Coastguard Worker     uint32_t reserved;
232*54e60f84SAndroid Build Coastguard Worker     /** \brief MV. MaxNumPredictor must be the returned value from attribute VAConfigAttribFEIMVPredictors query.
233*54e60f84SAndroid Build Coastguard Worker      * Even application doesn't use the maximum predictors, the VAFEIMVPredictorH264 structure size
234*54e60f84SAndroid Build Coastguard Worker      * has to be defined as maximum so each MB can be at a fixed location.
235*54e60f84SAndroid Build Coastguard Worker      * Note that 0x8000 must be used for correspondent intra block.
236*54e60f84SAndroid Build Coastguard Worker      **/
237*54e60f84SAndroid Build Coastguard Worker     VAMotionVector mv[4]; /* MaxNumPredictor is 4 */
238*54e60f84SAndroid Build Coastguard Worker } VAEncFEIMVPredictorH264;
239*54e60f84SAndroid Build Coastguard Worker 
240*54e60f84SAndroid Build Coastguard Worker /** \brief FEI output */
241*54e60f84SAndroid Build Coastguard Worker /**
242*54e60f84SAndroid Build Coastguard Worker  * Motion vector output is per 4x4 block. For each 4x4 block there is a pair of MVs
243*54e60f84SAndroid Build Coastguard Worker  * for RefPicList0 and RefPicList1 and each MV is 4 bytes including horizontal and vertical directions.
244*54e60f84SAndroid Build Coastguard Worker  * Depending on Subblock partition, for the shape that is not 4x4, the MV is replicated
245*54e60f84SAndroid Build Coastguard Worker  * so each 4x4 block has a pair of MVs. The 16x16 block has 32 MVs (128 bytes).
246*54e60f84SAndroid Build Coastguard Worker  * 0x8000 is used for correspondent intra block. The 16x16 block is in raster scan order,
247*54e60f84SAndroid Build Coastguard Worker  * within the 16x16 block, each 4x4 block MV is ordered as below in memory.
248*54e60f84SAndroid Build Coastguard Worker  * The buffer size shall be greater than or equal to the number of 16x16 blocks multiplied by 128 bytes.
249*54e60f84SAndroid Build Coastguard Worker  * Note that, when separate ENC and PAK is enabled, the exact layout of this buffer is needed for PAK input.
250*54e60f84SAndroid Build Coastguard Worker  * App can reuse this buffer, or copy to a different buffer as PAK input.
251*54e60f84SAndroid Build Coastguard Worker  * Layout is defined as Generic motion vector data structure VAMotionVector
252*54e60f84SAndroid Build Coastguard Worker  *                      16x16 Block
253*54e60f84SAndroid Build Coastguard Worker  *        -----------------------------------------
254*54e60f84SAndroid Build Coastguard Worker  *        |    1    |    2    |    5    |    6    |
255*54e60f84SAndroid Build Coastguard Worker  *        -----------------------------------------
256*54e60f84SAndroid Build Coastguard Worker  *        |    3    |    4    |    7    |    8    |
257*54e60f84SAndroid Build Coastguard Worker  *        -----------------------------------------
258*54e60f84SAndroid Build Coastguard Worker  *        |    9    |    10   |    13   |    14   |
259*54e60f84SAndroid Build Coastguard Worker  *        -----------------------------------------
260*54e60f84SAndroid Build Coastguard Worker  *        |    11   |    12   |    15   |    16   |
261*54e60f84SAndroid Build Coastguard Worker  *        -----------------------------------------
262*54e60f84SAndroid Build Coastguard Worker  **/
263*54e60f84SAndroid Build Coastguard Worker 
264*54e60f84SAndroid Build Coastguard Worker /** \brief VAEncFEIMBCodeH264 defines the data structure for VAEncFEIMBCodeBufferType per 16x16 MB block.
265*54e60f84SAndroid Build Coastguard Worker  * it is output buffer of ENC and ENC_PAK modes, it's also input buffer of PAK mode.
266*54e60f84SAndroid Build Coastguard Worker  * The 16x16 block is in raster scan order. Buffer size shall not be less than the number of 16x16 blocks
267*54e60f84SAndroid Build Coastguard Worker  * multiplied by sizeof(VAEncFEIMBCodeH264). Note that, when separate ENC and PAK is enabled,
268*54e60f84SAndroid Build Coastguard Worker  * the exact layout of this buffer is needed for PAK input. App can reuse this buffer,
269*54e60f84SAndroid Build Coastguard Worker  * or copy to a different buffer as PAK input, reserved elements must not be modified when used as PAK input.
270*54e60f84SAndroid Build Coastguard Worker  **/
271*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncFEIMBCodeH264 {
272*54e60f84SAndroid Build Coastguard Worker     //DWORD  0~2
273*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved0[3];
274*54e60f84SAndroid Build Coastguard Worker 
275*54e60f84SAndroid Build Coastguard Worker     //DWORD  3
276*54e60f84SAndroid Build Coastguard Worker     uint32_t    inter_mb_mode            : 2;
277*54e60f84SAndroid Build Coastguard Worker     uint32_t    mb_skip_flag             : 1;
278*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved1                : 1;
279*54e60f84SAndroid Build Coastguard Worker     uint32_t    intra_mb_mode            : 2;
280*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved2                : 1;
281*54e60f84SAndroid Build Coastguard Worker     uint32_t    field_mb_polarity_flag   : 1;
282*54e60f84SAndroid Build Coastguard Worker     uint32_t    mb_type                  : 5;
283*54e60f84SAndroid Build Coastguard Worker     uint32_t    intra_mb_flag            : 1;
284*54e60f84SAndroid Build Coastguard Worker     uint32_t    field_mb_flag            : 1;
285*54e60f84SAndroid Build Coastguard Worker     uint32_t    transform8x8_flag        : 1;
286*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved3                : 1;
287*54e60f84SAndroid Build Coastguard Worker     uint32_t    dc_block_coded_cr_flag   : 1;
288*54e60f84SAndroid Build Coastguard Worker     uint32_t    dc_block_coded_cb_flag   : 1;
289*54e60f84SAndroid Build Coastguard Worker     uint32_t    dc_block_coded_y_flag    : 1;
290*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved4                : 12;
291*54e60f84SAndroid Build Coastguard Worker 
292*54e60f84SAndroid Build Coastguard Worker     //DWORD 4
293*54e60f84SAndroid Build Coastguard Worker     uint32_t    horz_origin              : 8;
294*54e60f84SAndroid Build Coastguard Worker     uint32_t    vert_origin              : 8;
295*54e60f84SAndroid Build Coastguard Worker     uint32_t    cbp_y                    : 16;
296*54e60f84SAndroid Build Coastguard Worker 
297*54e60f84SAndroid Build Coastguard Worker     //DWORD 5
298*54e60f84SAndroid Build Coastguard Worker     uint32_t    cbp_cb                   : 16;
299*54e60f84SAndroid Build Coastguard Worker     uint32_t    cbp_cr                   : 16;
300*54e60f84SAndroid Build Coastguard Worker 
301*54e60f84SAndroid Build Coastguard Worker     //DWORD 6
302*54e60f84SAndroid Build Coastguard Worker     uint32_t    qp_prime_y               : 8;
303*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved5                : 17;
304*54e60f84SAndroid Build Coastguard Worker     uint32_t    mb_skip_conv_disable     : 1;
305*54e60f84SAndroid Build Coastguard Worker     uint32_t    is_last_mb               : 1;
306*54e60f84SAndroid Build Coastguard Worker     uint32_t    enable_coefficient_clamp : 1;
307*54e60f84SAndroid Build Coastguard Worker     uint32_t    direct8x8_pattern        : 4;
308*54e60f84SAndroid Build Coastguard Worker 
309*54e60f84SAndroid Build Coastguard Worker     //DWORD 7 8 and 9
310*54e60f84SAndroid Build Coastguard Worker     union {
311*54e60f84SAndroid Build Coastguard Worker         /* Intra MBs */
312*54e60f84SAndroid Build Coastguard Worker         struct {
313*54e60f84SAndroid Build Coastguard Worker             uint32_t   luma_intra_pred_modes0 : 16;
314*54e60f84SAndroid Build Coastguard Worker             uint32_t   luma_intra_pred_modes1 : 16;
315*54e60f84SAndroid Build Coastguard Worker 
316*54e60f84SAndroid Build Coastguard Worker             uint32_t   luma_intra_pred_modes2 : 16;
317*54e60f84SAndroid Build Coastguard Worker             uint32_t   luma_intra_pred_modes3 : 16;
318*54e60f84SAndroid Build Coastguard Worker 
319*54e60f84SAndroid Build Coastguard Worker             uint32_t   chroma_intra_pred_mode : 2;
320*54e60f84SAndroid Build Coastguard Worker             uint32_t   intra_pred_avail_flag  : 5;
321*54e60f84SAndroid Build Coastguard Worker             uint32_t   intra_pred_avail_flagF : 1;
322*54e60f84SAndroid Build Coastguard Worker             uint32_t   reserved6              : 24;
323*54e60f84SAndroid Build Coastguard Worker         } intra_mb;
324*54e60f84SAndroid Build Coastguard Worker 
325*54e60f84SAndroid Build Coastguard Worker         /* Inter MBs */
326*54e60f84SAndroid Build Coastguard Worker         struct {
327*54e60f84SAndroid Build Coastguard Worker             uint32_t   sub_mb_shapes          : 8;
328*54e60f84SAndroid Build Coastguard Worker             uint32_t   sub_mb_pred_modes      : 8;
329*54e60f84SAndroid Build Coastguard Worker             uint32_t   reserved7              : 16;
330*54e60f84SAndroid Build Coastguard Worker 
331*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l0_0           : 8;
332*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l0_1           : 8;
333*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l0_2           : 8;
334*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l0_3           : 8;
335*54e60f84SAndroid Build Coastguard Worker 
336*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l1_0           : 8;
337*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l1_1           : 8;
338*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l1_2           : 8;
339*54e60f84SAndroid Build Coastguard Worker             uint32_t   ref_idx_l1_3           : 8;
340*54e60f84SAndroid Build Coastguard Worker         } inter_mb;
341*54e60f84SAndroid Build Coastguard Worker     } mb_mode;
342*54e60f84SAndroid Build Coastguard Worker 
343*54e60f84SAndroid Build Coastguard Worker     //DWORD 10
344*54e60f84SAndroid Build Coastguard Worker     uint32_t   reserved8                 : 16;
345*54e60f84SAndroid Build Coastguard Worker     uint32_t   target_size_in_word       : 8;
346*54e60f84SAndroid Build Coastguard Worker     uint32_t   max_size_in_word          : 8;
347*54e60f84SAndroid Build Coastguard Worker 
348*54e60f84SAndroid Build Coastguard Worker     //DWORD 11~14
349*54e60f84SAndroid Build Coastguard Worker     uint32_t   reserved9[4];
350*54e60f84SAndroid Build Coastguard Worker 
351*54e60f84SAndroid Build Coastguard Worker     //DWORD 15
352*54e60f84SAndroid Build Coastguard Worker     uint32_t   reserved10;
353*54e60f84SAndroid Build Coastguard Worker } VAEncFEIMBCodeH264;        // 64 bytes
354*54e60f84SAndroid Build Coastguard Worker 
355*54e60f84SAndroid Build Coastguard Worker /** \brief VAEncFEIDistortionH264 defines the data structure for VAEncFEIDistortionBufferType per 16x16 MB block.
356*54e60f84SAndroid Build Coastguard Worker  * It is output buffer of ENC and ENC_PAK modes, The 16x16 block is in raster scan order.
357*54e60f84SAndroid Build Coastguard Worker  * Buffer size shall not be less than the number of 16x16 blocks multiple by sizeof(VAEncFEIDistortionH264).
358*54e60f84SAndroid Build Coastguard Worker  **/
359*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncFEIDistortionH264 {
360*54e60f84SAndroid Build Coastguard Worker     /** \brief Inter-prediction-distortion associated with motion vector i (co-located with subblock_4x4_i).
361*54e60f84SAndroid Build Coastguard Worker      * Its meaning is determined by sub-shape. It must be zero if the corresponding sub-shape is not chosen.
362*54e60f84SAndroid Build Coastguard Worker      **/
363*54e60f84SAndroid Build Coastguard Worker     uint16_t    inter_distortion[16];
364*54e60f84SAndroid Build Coastguard Worker     uint32_t    best_inter_distortion     : 16;
365*54e60f84SAndroid Build Coastguard Worker     uint32_t    best_intra_distortion     : 16;
366*54e60f84SAndroid Build Coastguard Worker     uint32_t    colocated_mb_distortion   : 16;
367*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved0                 : 16;
368*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved1[2];
369*54e60f84SAndroid Build Coastguard Worker } VAEncFEIDistortionH264;    // 48 bytes
370*54e60f84SAndroid Build Coastguard Worker 
371*54e60f84SAndroid Build Coastguard Worker /** \brief Motion Vector and Statistics frame level controls.
372*54e60f84SAndroid Build Coastguard Worker  * VAStatsStatisticsParameterBufferType for H264 16x16 block
373*54e60f84SAndroid Build Coastguard Worker  **/
374*54e60f84SAndroid Build Coastguard Worker typedef struct _VAStatsStatisticsParameterH264 {
375*54e60f84SAndroid Build Coastguard Worker     VAStatsStatisticsParameter stats_params;
376*54e60f84SAndroid Build Coastguard Worker 
377*54e60f84SAndroid Build Coastguard Worker     uint32_t    frame_qp                    : 8;
378*54e60f84SAndroid Build Coastguard Worker     /** \brief length of search path */
379*54e60f84SAndroid Build Coastguard Worker     uint32_t    len_sp                      : 8;
380*54e60f84SAndroid Build Coastguard Worker     /** \brief motion search method definition
381*54e60f84SAndroid Build Coastguard Worker      * 0: default value, diamond search
382*54e60f84SAndroid Build Coastguard Worker      * 1: full search
383*54e60f84SAndroid Build Coastguard Worker      * 2: diamond search
384*54e60f84SAndroid Build Coastguard Worker      **/
385*54e60f84SAndroid Build Coastguard Worker     uint32_t    search_path                 : 8;
386*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved0                   : 8;
387*54e60f84SAndroid Build Coastguard Worker 
388*54e60f84SAndroid Build Coastguard Worker     uint32_t    sub_mb_part_mask            : 7;
389*54e60f84SAndroid Build Coastguard Worker     /** \brief sub pixel mode definition
390*54e60f84SAndroid Build Coastguard Worker      * 00b: integer mode searching
391*54e60f84SAndroid Build Coastguard Worker      * 01b: half-pel mode searching
392*54e60f84SAndroid Build Coastguard Worker      * 10b: reserved
393*54e60f84SAndroid Build Coastguard Worker      * 11b: quarter-pel mode searching
394*54e60f84SAndroid Build Coastguard Worker      **/
395*54e60f84SAndroid Build Coastguard Worker     uint32_t    sub_pel_mode                : 2;
396*54e60f84SAndroid Build Coastguard Worker     /** \brief distortion measure adjustment for inter search SAD comparison
397*54e60f84SAndroid Build Coastguard Worker      * 00b: none
398*54e60f84SAndroid Build Coastguard Worker      * 01b: reserved
399*54e60f84SAndroid Build Coastguard Worker      * 10b: Haar transform adjusted
400*54e60f84SAndroid Build Coastguard Worker      * 11b: reserved
401*54e60f84SAndroid Build Coastguard Worker      **/
402*54e60f84SAndroid Build Coastguard Worker     uint32_t    inter_sad                   : 2;
403*54e60f84SAndroid Build Coastguard Worker     /** \brief distortion measure adjustment for intra search SAD comparison
404*54e60f84SAndroid Build Coastguard Worker      * 00b: none
405*54e60f84SAndroid Build Coastguard Worker      * 01b: reserved
406*54e60f84SAndroid Build Coastguard Worker      * 10b: Haar transform adjusted
407*54e60f84SAndroid Build Coastguard Worker      * 11b: reserved
408*54e60f84SAndroid Build Coastguard Worker      **/
409*54e60f84SAndroid Build Coastguard Worker     uint32_t    intra_sad                   : 2;
410*54e60f84SAndroid Build Coastguard Worker     uint32_t    adaptive_search             : 1;
411*54e60f84SAndroid Build Coastguard Worker     /** \brief indicate if future or/and past MV in mv_predictor buffer is valid.
412*54e60f84SAndroid Build Coastguard Worker      * 0: MV predictor disabled
413*54e60f84SAndroid Build Coastguard Worker      * 1: MV predictor enabled for past reference
414*54e60f84SAndroid Build Coastguard Worker      * 2: MV predictor enabled for future reference
415*54e60f84SAndroid Build Coastguard Worker      * 3: MV predictor enabled for both past and future references
416*54e60f84SAndroid Build Coastguard Worker      **/
417*54e60f84SAndroid Build Coastguard Worker     uint32_t    mv_predictor_ctrl           : 3;
418*54e60f84SAndroid Build Coastguard Worker     uint32_t    mb_qp                       : 1;
419*54e60f84SAndroid Build Coastguard Worker     /** \brief forward transform enable
420*54e60f84SAndroid Build Coastguard Worker      * 0: disable
421*54e60f84SAndroid Build Coastguard Worker      * 1: enable, needs frame_qp or mb_qp input for transform
422*54e60f84SAndroid Build Coastguard Worker      **/
423*54e60f84SAndroid Build Coastguard Worker     uint32_t    ft_enable                   : 1;
424*54e60f84SAndroid Build Coastguard Worker     /** \brief luma intra mode partition mask
425*54e60f84SAndroid Build Coastguard Worker      * xxxx1: luma_intra_16x16 disabled
426*54e60f84SAndroid Build Coastguard Worker      * xxx1x: luma_intra_8x8 disabled
427*54e60f84SAndroid Build Coastguard Worker      * xx1xx: luma_intra_4x4 disabled
428*54e60f84SAndroid Build Coastguard Worker      * xx111: intra prediction is disabled
429*54e60f84SAndroid Build Coastguard Worker      **/
430*54e60f84SAndroid Build Coastguard Worker     uint32_t    intra_part_mask             : 5;
431*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved1                   : 8;
432*54e60f84SAndroid Build Coastguard Worker 
433*54e60f84SAndroid Build Coastguard Worker     /** \brief motion search window(ref_width * ref_height) */
434*54e60f84SAndroid Build Coastguard Worker     uint32_t    ref_width                   : 8;
435*54e60f84SAndroid Build Coastguard Worker     uint32_t    ref_height                  : 8;
436*54e60f84SAndroid Build Coastguard Worker     /** \brief predefined motion search windows. If selected, len_sp, window(ref_width * ref_eight)
437*54e60f84SAndroid Build Coastguard Worker      * and search_path setting are ignored.
438*54e60f84SAndroid Build Coastguard Worker      * 0: not use predefined search window
439*54e60f84SAndroid Build Coastguard Worker      * 1: Tiny, len_sp=4, 24x24 window and diamond search
440*54e60f84SAndroid Build Coastguard Worker      * 2: Small, len_sp=9, 28x28 window and diamond search
441*54e60f84SAndroid Build Coastguard Worker      * 3: Diamond, len_sp=16, 48x40 window and diamond search
442*54e60f84SAndroid Build Coastguard Worker      * 4: Large Diamond, len_sp=32, 48x40 window and diamond search
443*54e60f84SAndroid Build Coastguard Worker      * 5: Exhaustive, len_sp=48, 48x40 window and full search
444*54e60f84SAndroid Build Coastguard Worker      * 6: Extend Diamond, len_sp=16, 64x40 window and diamond search
445*54e60f84SAndroid Build Coastguard Worker      * 7: Extend Large Diamond, len_sp=32, 64x40 window and diamond search
446*54e60f84SAndroid Build Coastguard Worker      * 8: Extend Exhaustive, len_sp=48, 64x40 window and full search
447*54e60f84SAndroid Build Coastguard Worker      **/
448*54e60f84SAndroid Build Coastguard Worker     uint32_t    search_window               : 4;
449*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved2                   : 12;
450*54e60f84SAndroid Build Coastguard Worker 
451*54e60f84SAndroid Build Coastguard Worker     /** \brief MVOutput. When set to 1, MV output is NOT provided */
452*54e60f84SAndroid Build Coastguard Worker     uint32_t    disable_mv_output           : 1;
453*54e60f84SAndroid Build Coastguard Worker     /** \brief StatisticsOutput. When set to 1, Statistics output is NOT provided. */
454*54e60f84SAndroid Build Coastguard Worker     uint32_t    disable_statistics_output   : 1;
455*54e60f84SAndroid Build Coastguard Worker     /** \brief block 8x8 data enabling in statistics output */
456*54e60f84SAndroid Build Coastguard Worker     uint32_t    enable_8x8_statistics       : 1;
457*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved3                   : 29;
458*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved4[2];
459*54e60f84SAndroid Build Coastguard Worker } VAStatsStatisticsParameterH264;
460*54e60f84SAndroid Build Coastguard Worker 
461*54e60f84SAndroid Build Coastguard Worker /** \brief VAStatsStatisticsH264. H264 Statistics buffer layout for VAStatsStatisticsBufferType
462*54e60f84SAndroid Build Coastguard Worker  * and VAStatsStatisticsBottomFieldBufferType(for interlaced only).
463*54e60f84SAndroid Build Coastguard Worker  * Statistics output is per 16x16 block. Data structure per 16x16 block is defined below.
464*54e60f84SAndroid Build Coastguard Worker  * The 16x16 block is in raster scan order. The buffer size shall be greater than or equal to
465*54e60f84SAndroid Build Coastguard Worker  * the number of 16x16 blocks multiplied by sizeof(VAStatsStatisticsH264).
466*54e60f84SAndroid Build Coastguard Worker  **/
467*54e60f84SAndroid Build Coastguard Worker typedef struct _VAStatsStatisticsH264 {
468*54e60f84SAndroid Build Coastguard Worker     /** \brief past reference  */
469*54e60f84SAndroid Build Coastguard Worker     uint32_t    best_inter_distortion0 : 16;
470*54e60f84SAndroid Build Coastguard Worker     uint32_t    inter_mode0            : 16;
471*54e60f84SAndroid Build Coastguard Worker 
472*54e60f84SAndroid Build Coastguard Worker     /** \brief future reference  */
473*54e60f84SAndroid Build Coastguard Worker     uint32_t    best_inter_distortion1 : 16;
474*54e60f84SAndroid Build Coastguard Worker     uint32_t    inter_mode1            : 16;
475*54e60f84SAndroid Build Coastguard Worker 
476*54e60f84SAndroid Build Coastguard Worker     uint32_t    best_intra_distortion  : 16;
477*54e60f84SAndroid Build Coastguard Worker     uint32_t    intra_mode             : 16;
478*54e60f84SAndroid Build Coastguard Worker 
479*54e60f84SAndroid Build Coastguard Worker     uint32_t    num_non_zero_coef      : 16;
480*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved0              : 16;
481*54e60f84SAndroid Build Coastguard Worker 
482*54e60f84SAndroid Build Coastguard Worker     uint32_t    sum_coef;
483*54e60f84SAndroid Build Coastguard Worker 
484*54e60f84SAndroid Build Coastguard Worker     /** \brief DWORD 5 flat info **/
485*54e60f84SAndroid Build Coastguard Worker     uint32_t    mb_is_flat             : 1;
486*54e60f84SAndroid Build Coastguard Worker     uint32_t    reserved1              : 31;
487*54e60f84SAndroid Build Coastguard Worker 
488*54e60f84SAndroid Build Coastguard Worker     /** \brief DWORD 6 variance for block16x16**/
489*54e60f84SAndroid Build Coastguard Worker     uint32_t    variance_16x16;
490*54e60f84SAndroid Build Coastguard Worker     /** \brief DWORD 7 ~ 10, variance for block8x8 **/
491*54e60f84SAndroid Build Coastguard Worker     uint32_t    variance_8x8[4];
492*54e60f84SAndroid Build Coastguard Worker 
493*54e60f84SAndroid Build Coastguard Worker     /** \brief DWORD 11 pixel_average for block16x16 **/
494*54e60f84SAndroid Build Coastguard Worker     uint32_t    pixel_average_16x16;
495*54e60f84SAndroid Build Coastguard Worker     /** \brief DWORD 12 ~ 15, pixel_average for block8x8 **/
496*54e60f84SAndroid Build Coastguard Worker     uint32_t    pixel_average_8x8[4];
497*54e60f84SAndroid Build Coastguard Worker } VAStatsStatisticsH264;  // 64 bytes
498*54e60f84SAndroid Build Coastguard Worker 
499*54e60f84SAndroid Build Coastguard Worker /**@}*/
500*54e60f84SAndroid Build Coastguard Worker 
501*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
502*54e60f84SAndroid Build Coastguard Worker }
503*54e60f84SAndroid Build Coastguard Worker #endif
504*54e60f84SAndroid Build Coastguard Worker 
505*54e60f84SAndroid Build Coastguard Worker #endif /* VA_FEI_H264_H */
506