VA-API 2.22.0
Loading...
Searching...
No Matches
va_fei_h264.h
Go to the documentation of this file.
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
29
30#ifndef VA_FEI_H264_H
31#define VA_FEI_H264_H
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#include <stdint.h>
38#include "va_fei.h"
39
45
47typedef struct _VAEncMiscParameterFEIFrameControlH264 {
48 uint32_t function; /* one of the VAConfigAttribFEIFunctionType values */
86
88 uint32_t num_mv_predictors_l0 : 16;
89 uint32_t num_mv_predictors_l1 : 16;
90
96 uint32_t search_path : 8;
101 uint32_t len_sp : 8;
102 uint32_t reserved0 : 16;
114 uint32_t sub_mb_part_mask : 7;
120 uint32_t intra_part_mask : 5;
122 uint32_t multi_pred_l0 : 1;
124 uint32_t multi_pred_l1 : 1;
130 uint32_t sub_pel_mode : 2;
134 uint32_t inter_sad : 2;
138 uint32_t intra_sad : 2;
142 uint32_t distortion_type : 1;
148 uint32_t adaptive_search : 1;
156 uint32_t mb_qp : 1;
158 uint32_t mb_input : 1;
161 uint32_t mb_size_ctrl : 1;
165 uint32_t reserved1 : 4;
166
168 uint32_t ref_width : 8;
169 uint32_t ref_height : 8;
182 uint32_t search_window : 4;
183 uint32_t reserved2 : 12;
184
188 uint32_t num_passes;
190 uint8_t *delta_qp;
191 uint32_t reserved3[VA_PADDING_LOW];
193
195typedef struct _VAEncFEIMBControlH264 {
197 uint32_t force_to_intra : 1;
199 uint32_t force_to_skip : 1;
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;
215 uint32_t max_size_in_word : 8;
217
218
222typedef struct _VAEncFEIMVPredictorH264 {
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;
237 VAMotionVector mv[4]; /* MaxNumPredictor is 4 */
239
263
271typedef 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
359typedef struct _VAEncFEIDistortionH264 {
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
374typedef struct _VAStatsStatisticsParameterH264 {
375 VAStatsStatisticsParameter stats_params;
376
377 uint32_t frame_qp : 8;
379 uint32_t len_sp : 8;
385 uint32_t search_path : 8;
386 uint32_t reserved0 : 8;
387
388 uint32_t sub_mb_part_mask : 7;
395 uint32_t sub_pel_mode : 2;
402 uint32_t inter_sad : 2;
409 uint32_t intra_sad : 2;
410 uint32_t adaptive_search : 1;
417 uint32_t mv_predictor_ctrl : 3;
418 uint32_t mb_qp : 1;
423 uint32_t ft_enable : 1;
430 uint32_t intra_part_mask : 5;
431 uint32_t reserved1 : 8;
432
434 uint32_t ref_width : 8;
435 uint32_t ref_height : 8;
448 uint32_t search_window : 4;
449 uint32_t reserved2 : 12;
450
452 uint32_t disable_mv_output : 1;
457 uint32_t reserved3 : 29;
458 uint32_t reserved4[2];
460
467typedef struct _VAStatsStatisticsH264 {
470 uint32_t inter_mode0 : 16;
471
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
485 uint32_t mb_is_flat : 1;
486 uint32_t reserved1 : 31;
487
491 uint32_t variance_8x8[4];
492
496 uint32_t pixel_average_8x8[4];
497} VAStatsStatisticsH264; // 64 bytes
498
500
501#ifdef __cplusplus
502}
503#endif
504
505#endif /* VA_FEI_H264_H */
#define VA_PADDING_LOW
Definition va.h:360
VAGenericID VABufferID
Definition va.h:2019
VAEncFEIDistortionH264 defines the data structure for VAEncFEIDistortionBufferType per 16x16 MB block...
Definition va_fei_h264.h:359
uint16_t inter_distortion[16]
Inter-prediction-distortion associated with motion vector i (co-located with subblock_4x4_i)....
Definition va_fei_h264.h:363
FEI output.
Definition va_fei_h264.h:271
FEI MB level control data structure.
Definition va_fei_h264.h:195
uint32_t force_to_intra
when set, correposndent MB is coded as intra
Definition va_fei_h264.h:197
uint32_t max_size_in_word
specifies the max size of each MB
Definition va_fei_h264.h:215
uint32_t target_size_in_word
when mb_size_ctrl is set, size here is used to budget accumulatively. Set to 0xFF if don't care.
Definition va_fei_h264.h:213
uint32_t force_to_nonskip
specifies whether this macroblock should be coded as a non-skipped macroblock.
Definition va_fei_h264.h:201
uint32_t force_to_skip
when set, correposndent MB is coded as skip
Definition va_fei_h264.h:199
Application can use this definition as reference to allocate the buffer based on MaxNumPredictor retu...
Definition va_fei_h264.h:222
VAMotionVector mv[4]
MV. MaxNumPredictor must be the returned value from attribute VAConfigAttribFEIMVPredictors query....
Definition va_fei_h264.h:237
FEI frame level control buffer for H.264.
Definition va_fei_h264.h:47
uint32_t ref_width
motion search window(ref_width * ref_height)
Definition va_fei_h264.h:168
uint32_t multi_pred_l1
Definition va_fei_h264.h:124
uint32_t sub_mb_part_mask
defines the bit-mask for disabling sub-partition The lower 4 bits are for the major partitions (sub-m...
Definition va_fei_h264.h:114
uint32_t intra_sad
Definition va_fei_h264.h:138
uint32_t mb_qp
Definition va_fei_h264.h:156
VABufferID mb_code_data
MBCode data output of MB ENC. Each 16x16 block has one MB Code data with layout VAEncFEIMBCodeH264 Bu...
Definition va_fei_h264.h:74
VABufferID qp
QP input buffer with layout VAEncQPBufferH264. It is valid only when mb_qp is set to 1....
Definition va_fei_h264.h:79
uint32_t search_path
motion search method definition 0: default value, diamond search 1: full search 2: diamond search
Definition va_fei_h264.h:96
uint32_t max_frame_size
max frame size control with multi passes QP setting
Definition va_fei_h264.h:186
VABufferID mv_predictor
MV predictor. It is valid only when mv_predictor_enable is set to 1. Each 16x16 block has one or more...
Definition va_fei_h264.h:85
uint32_t multi_pred_l0
Definition va_fei_h264.h:122
uint32_t num_passes
number of passes, every pass has different QP
Definition va_fei_h264.h:188
VABufferID distortion
distortion output of MB ENC or ENC_PAK. Each 16x16 block has one distortion data with VAEncFEIDistort...
Definition va_fei_h264.h:62
uint32_t search_window
predefined motion search windows. If selected, len_sp, window(ref_width * ref_eight) and search_path ...
Definition va_fei_h264.h:182
VABufferID mv_data
MVs data output of MB ENC. Each 16x16 block has one MVs data with layout VAMotionVector Buffer size s...
Definition va_fei_h264.h:68
uint32_t repartition_check_enable
Definition va_fei_h264.h:144
uint32_t adaptive_search
Definition va_fei_h264.h:148
uint32_t mb_size_ctrl
Definition va_fei_h264.h:161
uint32_t mb_input
Definition va_fei_h264.h:158
uint8_t * delta_qp
delta QP list for every pass
Definition va_fei_h264.h:190
uint32_t inter_sad
Definition va_fei_h264.h:134
uint32_t mv_predictor_enable
Definition va_fei_h264.h:154
VABufferID mb_ctrl
MB (16x16) control input buffer. It is valid only when (mb_input | mb_size_ctrl) is set to 1....
Definition va_fei_h264.h:56
uint32_t colocated_mb_distortion
Definition va_fei_h264.h:164
uint32_t intra_part_mask
Definition va_fei_h264.h:120
uint32_t distortion_type
Definition va_fei_h264.h:142
uint32_t len_sp
maximum number of Search Units, valid range is [1, 63] 0 is treated as 1. reference search locations ...
Definition va_fei_h264.h:101
uint32_t sub_pel_mode
Definition va_fei_h264.h:130
uint32_t num_mv_predictors_l0
number of MV predictors. It must not be greater than maximum supported MV predictor.
Definition va_fei_h264.h:88
Generic motion vector data structure.
Definition va.h:414
VAStatsStatisticsH264. H264 Statistics buffer layout for VAStatsStatisticsBufferType and VAStatsStati...
Definition va_fei_h264.h:467
uint32_t pixel_average_16x16
DWORD 11 pixel_average for block16x16.
Definition va_fei_h264.h:494
uint32_t best_inter_distortion1
future reference
Definition va_fei_h264.h:473
uint32_t pixel_average_8x8[4]
DWORD 12 ~ 15, pixel_average for block8x8.
Definition va_fei_h264.h:496
uint32_t variance_8x8[4]
DWORD 7 ~ 10, variance for block8x8.
Definition va_fei_h264.h:491
uint32_t variance_16x16
DWORD 6 variance for block16x16.
Definition va_fei_h264.h:489
uint32_t mb_is_flat
DWORD 5 flat info.
Definition va_fei_h264.h:485
uint32_t best_inter_distortion0
past reference
Definition va_fei_h264.h:469
Motion Vector and Statistics frame level controls. VAStatsStatisticsParameterBufferType for H264 16x1...
Definition va_fei_h264.h:374
uint32_t disable_statistics_output
StatisticsOutput. When set to 1, Statistics output is NOT provided.
Definition va_fei_h264.h:454
uint32_t intra_part_mask
luma intra mode partition mask xxxx1: luma_intra_16x16 disabled xxx1x: luma_intra_8x8 disabled xx1xx:...
Definition va_fei_h264.h:430
uint32_t search_path
motion search method definition 0: default value, diamond search 1: full search 2: diamond search
Definition va_fei_h264.h:385
uint32_t ref_width
motion search window(ref_width * ref_height)
Definition va_fei_h264.h:434
uint32_t search_window
predefined motion search windows. If selected, len_sp, window(ref_width * ref_eight) and search_path ...
Definition va_fei_h264.h:448
uint32_t inter_sad
distortion measure adjustment for inter search SAD comparison 00b: none 01b: reserved 10b: Haar trans...
Definition va_fei_h264.h:402
uint32_t len_sp
length of search path
Definition va_fei_h264.h:379
uint32_t sub_pel_mode
sub pixel mode definition 00b: integer mode searching 01b: half-pel mode searching 10b: reserved 11b:...
Definition va_fei_h264.h:395
uint32_t enable_8x8_statistics
block 8x8 data enabling in statistics output
Definition va_fei_h264.h:456
uint32_t disable_mv_output
MVOutput. When set to 1, MV output is NOT provided.
Definition va_fei_h264.h:452
uint32_t ft_enable
forward transform enable 0: disable 1: enable, needs frame_qp or mb_qp input for transform
Definition va_fei_h264.h:423
uint32_t intra_sad
distortion measure adjustment for intra search SAD comparison 00b: none 01b: reserved 10b: Haar trans...
Definition va_fei_h264.h:409
uint32_t mv_predictor_ctrl
indicate if future or/and past MV in mv_predictor buffer is valid. 0: MV predictor disabled 1: MV pre...
Definition va_fei_h264.h:417
Motion Vector and Statistics frame level controls. common part VAStatsStatisticsParameterBufferType f...
Definition va_fei.h:107
The FEI encoding common API.