VA-API 2.22.0
Loading...
Searching...
No Matches
va_enc_h264.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2007-2011 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
32#ifndef VA_ENC_H264_H
33#define VA_ENC_H264_H
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
58#define H264_LAST_PICTURE_EOSEQ 0x01
64#define H264_LAST_PICTURE_EOSTREAM 0x02
79typedef enum {
125 VAEncPackedHeaderH264_SEI va_deprecated_enum = (0x80000000 | 1),
127
148typedef struct _VAEncSequenceParameterBufferH264 {
152 uint8_t level_idc;
154 uint32_t intra_period;
158 uint32_t ip_period;
177
178 union {
179 struct {
181 uint32_t chroma_format_idc : 2;
193 uint32_t pic_order_cnt_type : 2;
198 } bits;
199 uint32_t value;
200 } seq_fields;
201
206
216 int32_t offset_for_ref_frame[256];
237 union {
238 struct {
252 uint32_t low_delay_hrd_flag : 1;
256 uint32_t reserved : 16;
257 } bits;
258 uint32_t value;
259 } vui_fields;
263 uint32_t sar_width;
265 uint32_t sar_height;
269 uint32_t time_scale;
270
272 uint32_t va_reserved[VA_PADDING_LOW];
275
296typedef struct _VAEncPictureParameterBufferH264 {
304 VAPictureH264 CurrPic;
313 VAPictureH264 ReferenceFrames[16];
322
327
336
340 uint16_t frame_num;
341
343 uint8_t pic_init_qp;
352
357
358 union {
359 struct {
361 uint32_t idr_pic_flag : 1;
363 uint32_t reference_pic_flag : 2;
367 uint32_t weighted_pred_flag : 1;
382 } bits;
383 uint32_t value;
384 } pic_fields;
385
387 uint32_t va_reserved[VA_PADDING_LOW];
389
390typedef struct _VAEncQPBufferH264 {
391 /*
392 * \brief This structure holds QP per 16x16 macroblock. Buffer size shall be
393 * sufficient to fit the slice or frame to be encoded depending on if it is a
394 * slice level or frame level encoding.
395 */
396 uint8_t qp;
397} VAEncQPBufferH264;
398
420typedef struct _VAEncSliceParameterBufferH264 {
441 uint8_t slice_type;
445 uint16_t idr_pic_id;
446
457 int32_t delta_pic_order_cnt[2];
462 uint8_t direct_spatial_mv_pred_flag;
482 VAPictureH264 RefPicList0[32];
484 VAPictureH264 RefPicList1[32];
496 signed short luma_weight_l0[32];
498 signed short luma_offset_l0[32];
502 signed short chroma_weight_l0[32][2];
504 signed short chroma_offset_l0[32][2];
508 signed short luma_weight_l1[32];
510 signed short luma_offset_l1[32];
514 signed short chroma_weight_l1[32][2];
516 signed short chroma_offset_l1[32][2];
531
533 uint32_t va_reserved[VA_PADDING_LOW];
536
547#define VA_MB_PRED_AVAIL_TOP_LEFT (1 << 2)
549#define VA_MB_PRED_AVAIL_TOP (1 << 4)
551#define VA_MB_PRED_AVAIL_TOP_RIGHT (1 << 3)
553#define VA_MB_PRED_AVAIL_LEFT (1 << 6)
566typedef struct _VAEncMacroblockParameterBufferH264 {
574 uint8_t qp;
575
576 union {
579 union {
580 struct {
599 uint32_t pred_avail_flags : 8;
600 } bits;
601 uint32_t value;
602 } intra_fields;
607 union {
608 struct {
609 uint32_t reserved;
610 } bits;
611 uint32_t value;
612 } inter_fields;
614 } info;
615
617 uint32_t va_reserved[VA_PADDING_LOW];
619
626typedef struct _VAEncMiscParameterSubMbPartPelH264 {
627 uint32_t disable_inter_sub_mb_partition;
628 union {
629 struct {
630 uint32_t disable_16x16_inter_mb_partition : 1;
631 uint32_t disable_16x8_inter_mb_partition : 1;
632 uint32_t disable_8x16_inter_mb_partition : 1;
633 uint32_t disable_8x8_inter_mb_partition : 1;
634 uint32_t disable_8x4_inter_mb_partition : 1;
635 uint32_t disable_4x8_inter_mb_partition : 1;
636 uint32_t disable_4x4_inter_mb_partition : 1;
637 uint32_t reserved : 1;
638 } bits;
639 uint8_t value;
640 } inter_sub_mb_partition_mask;
641
650 uint8_t sub_pel_mode;
651 uint8_t reserved[3];
655#ifdef __cplusplus
656}
657#endif
658
659#endif /* VA_ENC_H264_H */
#define VA_PADDING_LOW
Definition va.h:360
VAGenericID VABufferID
Definition va.h:2019
@ VAEncPackedHeaderPicture
Packed picture header.
Definition va.h:2400
@ VAEncPackedHeaderSequence
Packed sequence header.
Definition va.h:2398
@ VAEncPackedHeaderSlice
Packed slice header.
Definition va.h:2402
VAEncPackedHeaderTypeH264
Packed header types specific to H.264 encoding.
Definition va_enc_h264.h:79
@ VAEncPackedHeaderH264_SPS
Packed Sequence Parameter Set (SPS).
Definition va_enc_h264.h:88
@ VAEncPackedHeaderH264_Slice
Packed slice header.
Definition va_enc_h264.h:110
@ va_deprecated_enum
Packed Supplemental Enhancement Information (SEI).
Definition va_enc_h264.h:125
@ VAEncPackedHeaderH264_PPS
Packed Picture Parameter Set (PPS).
Definition va_enc_h264.h:97
Macroblock parameter for H.264 encoding in baseline, main & high profiles.
Definition va_enc_h264.h:566
uint32_t pred_avail_override_flag
Flag specified to override MB neighbour availability bits from VME stage.
Definition va_enc_h264.h:589
uint32_t pred_avail_flags
Bitwise representation of which macroblocks are available for intra prediction.
Definition va_enc_h264.h:599
uint8_t qp
Quantization parameter.
Definition va_enc_h264.h:574
MB partition modes and 1/2 1/4 motion search configuration.
Definition va_enc_h264.h:626
uint32_t enable_sub_pel_mode
Precison of motion search 0:Integer mode searching 1:Half-pel mode searching 2:Reserved 3:Quarter-pel...
Definition va_enc_h264.h:649
Picture parameter for H.264 encoding in baseline, main & high profiles.
Definition va_enc_h264.h:296
uint32_t entropy_coding_mode_flag
Selects CAVLC (0) or CABAC (1) entropy coding mode.
Definition va_enc_h264.h:365
uint32_t weighted_bipred_idc
Range: 0 to 2, inclusive.
Definition va_enc_h264.h:369
uint32_t pic_scaling_matrix_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:381
int8_t chroma_qp_index_offset
Range: -12 to 12, inclusive.
Definition va_enc_h264.h:354
uint8_t num_ref_idx_l0_active_minus1
Maximum reference index for reference picture list 0. Range: 0 to 31, inclusive.
Definition va_enc_h264.h:347
uint32_t deblocking_filter_control_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:375
uint8_t num_ref_idx_l1_active_minus1
Maximum reference index for reference picture list 1. Range: 0 to 31, inclusive.
Definition va_enc_h264.h:351
uint16_t frame_num
The picture identifier. Range: 0 to , inclusive.
Definition va_enc_h264.h:340
uint32_t reference_pic_flag
Is picture a reference picture?
Definition va_enc_h264.h:363
uint8_t pic_init_qp
pic_init_qp_minus26 + 26.
Definition va_enc_h264.h:343
uint32_t transform_8x8_mode_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:373
uint32_t constrained_intra_pred_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:371
VABufferID coded_buf
Output encoded bitstream.
Definition va_enc_h264.h:321
uint32_t redundant_pic_cnt_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:377
VAPictureH264 CurrPic
Information about the picture to be encoded.
Definition va_enc_h264.h:304
uint8_t pic_parameter_set_id
The picture parameter set referred to in the slice header.
Definition va_enc_h264.h:324
uint32_t pic_order_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:379
uint8_t last_picture
OR'd flags describing whether the picture is the last one or not.
Definition va_enc_h264.h:335
uint32_t idr_pic_flag
Is picture an IDR picture?
Definition va_enc_h264.h:361
uint8_t seq_parameter_set_id
The active sequence parameter set. Range: 0 to 31, inclusive.
Definition va_enc_h264.h:326
uint32_t weighted_pred_flag
Is weighted prediction applied to P slices?
Definition va_enc_h264.h:367
int8_t second_chroma_qp_index_offset
Range: -12 to 12, inclusive.
Definition va_enc_h264.h:356
Sequence parameter for H.264 encoding in baseline, main & high profiles.
Definition va_enc_h264.h:148
uint8_t level_idc
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:152
uint32_t mb_adaptive_frame_field_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:185
uint32_t delta_pic_order_always_zero_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:197
uint32_t reserved
Reserved for future use, must be zero.
Definition va_enc_h264.h:256
uint8_t aspect_ratio_idc
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:261
int32_t offset_for_top_to_bottom_field
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:214
uint32_t frame_crop_top_offset
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:228
uint32_t direct_8x8_inference_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:189
uint32_t time_scale
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:269
uint8_t num_ref_frames_in_pic_order_cnt_cycle
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:210
uint32_t frame_crop_bottom_offset
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:230
uint32_t intra_period
Period between I frames.
Definition va_enc_h264.h:154
uint8_t bit_depth_luma_minus8
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:203
uint32_t intra_idr_period
Period between IDR frames.
Definition va_enc_h264.h:156
uint32_t bitstream_restriction_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:244
uint32_t frame_mbs_only_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:183
uint32_t sar_height
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:265
uint32_t motion_vectors_over_pic_boundaries_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:254
int32_t offset_for_non_ref_pic
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:212
uint8_t vui_parameters_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:236
uint32_t frame_crop_left_offset
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:224
uint8_t bit_depth_chroma_minus8
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:205
uint32_t num_units_in_tick
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:267
uint16_t picture_height_in_mbs
Picture height in macroblocks.
Definition va_enc_h264.h:176
uint32_t bits_per_second
Initial bitrate set for this sequence in CBR or VBR modes.
Definition va_enc_h264.h:170
uint32_t frame_crop_right_offset
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:226
uint32_t timing_info_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:242
uint32_t fixed_frame_rate_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:250
uint32_t log2_max_mv_length_vertical
Range: 0 to 16, inclusive.
Definition va_enc_h264.h:248
uint32_t low_delay_hrd_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:252
uint32_t ip_period
Period between I/P frames.
Definition va_enc_h264.h:158
uint32_t max_num_ref_frames
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:172
uint32_t log2_max_mv_length_horizontal
Range: 0 to 16, inclusive.
Definition va_enc_h264.h:246
uint32_t pic_order_cnt_type
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:193
uint8_t seq_parameter_set_id
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:150
uint32_t log2_max_frame_num_minus4
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:191
uint32_t sar_width
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:263
uint32_t log2_max_pic_order_cnt_lsb_minus4
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:195
uint16_t picture_width_in_mbs
Picture width in macroblocks.
Definition va_enc_h264.h:174
uint32_t chroma_format_idc
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:181
uint32_t aspect_ratio_info_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:240
uint32_t seq_scaling_matrix_present_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:187
uint8_t frame_cropping_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:222
Slice parameter for H.264 encoding in baseline, main & high profiles.
Definition va_enc_h264.h:420
uint32_t num_macroblocks
Number of macroblocks in this slice.
Definition va_enc_h264.h:424
uint8_t chroma_weight_l1_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:512
VABufferID macroblock_info
Per-MB encoder configuration buffer, or VA_INVALID_ID.
Definition va_enc_h264.h:437
uint8_t num_ref_idx_l1_active_minus1
Maximum reference index for reference picture list 1. Range: 0 to 31, inclusive.
Definition va_enc_h264.h:480
uint16_t pic_order_cnt_lsb
The picture order count modulo MaxPicOrderCntLsb.
Definition va_enc_h264.h:450
int32_t delta_pic_order_cnt_bottom
Valid if pic_order_present_flag and this is a bottom field.
Definition va_enc_h264.h:452
int8_t slice_beta_offset_div2
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:530
uint8_t luma_log2_weight_denom
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:490
uint8_t chroma_weight_l0_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:500
uint8_t cabac_init_idc
Range: 0 to 2, inclusive.
Definition va_enc_h264.h:520
uint8_t luma_weight_l0_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:494
uint8_t luma_weight_l1_flag
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:506
uint8_t chroma_log2_weight_denom
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:492
int8_t slice_alpha_c0_offset_div2
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:528
uint8_t num_ref_idx_l0_active_minus1
Maximum reference index for reference picture list 0. Range: 0 to 31, inclusive.
Definition va_enc_h264.h:476
uint8_t slice_type
Slice type. Range: 0..2, 5..7, i.e. no switching slices.
Definition va_enc_h264.h:441
int8_t slice_qp_delta
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:522
uint16_t idr_pic_id
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:445
uint8_t num_ref_idx_active_override_flag
Specifies if _VAEncPictureParameterBufferH264::num_ref_idx_l0_active_minus1 or _VAEncPictureParameter...
Definition va_enc_h264.h:472
uint8_t disable_deblocking_filter_idc
Range: 0 to 2, inclusive.
Definition va_enc_h264.h:526
uint8_t pic_parameter_set_id
Same as the H.264 bitstream syntax element.
Definition va_enc_h264.h:443
uint32_t macroblock_address
Starting MB address for this slice.
Definition va_enc_h264.h:422