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