VA-API
2.22.0
|
VP9 Encoding Picture Parameter Buffer Structure. More...
#include <va_enc_vp9.h>
Public Attributes | |
uint32_t | frame_width_src |
VASurfaceID | reference_frames [8] |
reference frame buffers Each entry of the array specifies the surface index of the picture that is referred by current picture or will be referred by any future picture. The valid entries take value from 0 to 127, inclusive. Non-valid entries, those do not point to pictures which are referred by current picture or future pictures, should take value 0xFF. Other values are not allowed. More... | |
uint8_t | refresh_frame_flags |
indicate which frames in DPB should be refreshed. same syntax and semantic as in VP9 code. | |
uint8_t | luma_ac_qindex |
Base Q index in the VP9 term. Added with per segment delta Q index to get Q index of Luma AC. | |
int8_t | luma_dc_qindex_delta |
int8_t | chroma_ac_qindex_delta |
int8_t | chroma_dc_qindex_delta |
uint8_t | filter_level |
filter level Corresponds to the same VP9 syntax element in frame header. | |
uint8_t | sharpness_level |
int8_t | ref_lf_delta [4] |
Loop filter level reference delta values. Contains a list of 4 delta values for reference frame based block-level loop filter adjustment. If no update, set to 0. value range [-63..63]. | |
int8_t | mode_lf_delta [2] |
Loop filter level mode delta values. Contains a list of 4 delta values for coding mode based MB-level loop filter adjustment. If no update, set to 0. value range [-63..63]. | |
uint16_t | bit_offset_ref_lf_delta |
uint16_t | bit_offset_mode_lf_delta |
uint16_t | bit_offset_lf_level |
uint16_t | bit_offset_qindex |
uint16_t | bit_offset_first_partition_size |
uint16_t | bit_offset_segmentation |
uint16_t | bit_size_segmentation |
length in bit of segmentation portion from the location in bit stream where segmentation_enabled syntax is coded. When auto_segmentation is enabled, GPU uses this bit size to locate and update the information after segmentation. | |
uint8_t | log2_tile_rows |
log2 of number of tile rows Corresponds to the same VP9 syntax element in frame header. value range [0..2] | |
uint8_t | log2_tile_columns |
log2 of number of tile columns Corresponds to the same VP9 syntax element in frame header. value range [0..6] | |
uint8_t | skip_frame_flag |
indicate frame-skip happens Application may choose to drop/skip one or mulitple encoded frames or to-be-encoded frame due to various reasons such as insufficient bandwidth. Application uses the following three flags to inform GPU about frame-skip. More... | |
uint8_t | number_skip_frames |
The number of frames skipped prior to the current frame. It includes only the skipped frames that were not counted before, and does not include the frame with skip_frame_flag == 2. Valid when skip_frame_flag = 1. | |
uint32_t | skip_frames_size |
When skip_frame_flag = 1, the size of the skipped frames in bits. It includes only the skipped frames that were not counted before, and does not include the frame size with skip_frame_flag = 2. When skip_frame_flag = 2, it is the size of the current skipped frame that is to be encrypted. | |
uint32_t | va_reserved [VA_PADDING_MEDIUM] |
Reserved bytes for future use, must be zero. | |
uint32_t | ref_frame_ctrl_l0: 3 |
Indiates which frames to be used as reference. (Ref_frame_ctrl & 0x01) ? 1: last frame as reference frame, 0: not. (Ref_frame_ctrl & 0x02) ? 1: golden frame as reference frame, 0: not. (Ref_frame_ctrl & 0x04) ? 1: alt frame as reference frame, 0: not. L0 is for forward prediction. L1 is for backward prediction. | |
uint32_t | ref_last_idx: 3 |
Last Reference Frame index Specifies the index to RefFrameList[] which points to the LAST reference frame. It corresponds to active_ref_idx[0] in VP9 code. | |
uint32_t | ref_last_sign_bias: 1 |
Specifies the Sign Bias of the LAST reference frame. It corresponds to ref_frame_sign_bias[LAST_FRAME] in VP9 code. | |
uint32_t | ref_gf_idx: 3 |
GOLDEN Reference Frame index Specifies the index to RefFrameList[] which points to the Golden reference frame. It corresponds to active_ref_idx[1] in VP9 code. | |
uint32_t | ref_gf_sign_bias: 1 |
Specifies the Sign Bias of the GOLDEN reference frame. It corresponds to ref_frame_sign_bias[GOLDEN_FRAME] in VP9 code. | |
uint32_t | ref_arf_idx: 3 |
Alternate Reference Frame index Specifies the index to RefFrameList[] which points to the Alternate reference frame. It corresponds to active_ref_idx[2] in VP9 code. | |
uint32_t | ref_arf_sign_bias: 1 |
Specifies the Sign Bias of the ALTERNATE reference frame. It corresponds to ref_frame_sign_bias[ALTREF_FRAME] in VP9 code. | |
uint32_t | frame_type: 1 |
uint32_t | show_frame: 1 |
show_frame 0: current frame is not for display 1: current frame is for display | |
uint32_t | error_resilient_mode: 1 |
uint32_t | intra_only: 1 |
Indicate intra-only for inter pictures. Must be 0 for key frames. 0: inter frame use both intra and inter blocks 1: inter frame use only intra blocks. | |
uint32_t | allow_high_precision_mv: 1 |
Indicate high precision mode for Motion Vector prediction 0: normal mode 1: high precision mode. | |
uint32_t | mcomp_filter_type: 3 |
Motion Compensation Filter type 0: eight-tap (only this mode is supported now.) 1: eight-tap-smooth 2: eight-tap-sharp 3: bilinear 4: switchable. | |
uint32_t | lossless_mode: 1 |
Specifies if the picture is coded in lossless mode. More... | |
uint32_t | comp_prediction_mode: 2 |
MV prediction mode. Corresponds to VP9 variable with same name. comp_prediction_mode = 0: single prediction ony, comp_prediction_mode = 1: compound prediction, comp_prediction_mode = 2: hybrid prediction. More... | |
uint32_t | auto_segmentation: 1 |
Indicate how segmentation is specified 0 application specifies segmentation partitioning and relevant parameters. 1 GPU may decide on segmentation. If application already provides segmentation information, GPU may choose to honor it and further split into more levels if possible. | |
uint32_t | super_frame_flag: 1 |
Indicate super frame syntax should be inserted 0 current frame is not encapsulated in super frame structure 1 current fame is to be encapsulated in super frame structure. super frame index syntax will be inserted by encoder at the end of current frame. | |
VP9 Encoding Picture Parameter Buffer Structure.
This structure conveys picture level parameters.
uint16_t VAEncPictureParameterBufferVP9::bit_offset_first_partition_size |
Offset from starting position of output bitstream in bits where First Partition Size should be inserted.
uint16_t VAEncPictureParameterBufferVP9::bit_offset_lf_level |
Offset from starting position of output bitstream in bits where (loop) filter_level should be inserted.
uint16_t VAEncPictureParameterBufferVP9::bit_offset_mode_lf_delta |
Offset from starting position of output bitstream in bits where mode_lf_delta[] should be inserted.
In BRC mode, always insert mode_lf_delta[] (This implies uncompressed header should have mode_ref_delta_enabled=1 and mode_ref_delta_update=1).
uint16_t VAEncPictureParameterBufferVP9::bit_offset_qindex |
Offset from starting position of output bitstream in bits where Base Qindex should be inserted.
uint16_t VAEncPictureParameterBufferVP9::bit_offset_ref_lf_delta |
Offset from starting position of output bitstream in bits where ref_lf_delta[] should be inserted. This offset should cover any metadata ahead of uncompressed header in inserted bit stream buffer (the offset should be same as that for final output bitstream buffer).
In BRC mode, always insert ref_lf_delta[] (This implies uncompressed header should have mode_ref_delta_enabled=1 and mode_ref_delta_update=1).
uint16_t VAEncPictureParameterBufferVP9::bit_offset_segmentation |
Offset from starting position of output bitstream in bits where segmentation_enabled is located in bitstream. When auto_segmentation is enabled, GPU uses this offset to locate and update the segmentation related information.
int8_t VAEncPictureParameterBufferVP9::chroma_ac_qindex_delta |
Q index delta from base Q index in the VP9 term for Chroma AC.
int8_t VAEncPictureParameterBufferVP9::chroma_dc_qindex_delta |
Q index delta from base Q index in the VP9 term for Chroma DC.
uint32_t VAEncPictureParameterBufferVP9::comp_prediction_mode |
MV prediction mode. Corresponds to VP9 variable with same name. comp_prediction_mode = 0: single prediction ony, comp_prediction_mode = 1: compound prediction, comp_prediction_mode = 2: hybrid prediction.
Not mandatory. App may suggest the setting based on power or performance. Kernal may use it as a guildline and decide the proper setting on its own.
uint32_t VAEncPictureParameterBufferVP9::error_resilient_mode |
The following fields correspond to the same VP9 syntax elements in the frame header.
uint32_t VAEncPictureParameterBufferVP9::frame_type |
Indicates if the current frame is a key frame or not. Corresponds to the same VP9 syntax element in frame tag.
uint32_t VAEncPictureParameterBufferVP9::frame_width_src |
VP9 encoder may support dynamic scaling function. If enabled (enable_dynamic_scaling is set), application may request GPU encodes picture with a different resolution from the raw source. GPU should handle the scaling process of source and all reference frames.
uint32_t VAEncPictureParameterBufferVP9::lossless_mode |
Specifies if the picture is coded in lossless mode.
lossless_mode = base_qindex == 0 && y_dc_delta_q == 0 \ && uv_dc_delta_q == 0 && uv_ac_delta_q == 0; Where base_qindex, y_dc_delta_q, uv_dc_delta_q and uv_ac_delta_q are all variables in VP9 code.
When enabled, tx_mode needs to be set to 4x4 only and all tu_size in CU record set to 4x4 for entire frame. Software also has to program such that final_qindex=0 and final_filter_level=0 following the Quant Scale and Filter Level Table in Segmentation State section. Hardware forces Hadamard Tx when this bit is set. When lossless_mode is on, BRC has to be turned off. 0: normal mode 1: lossless mode
int8_t VAEncPictureParameterBufferVP9::luma_dc_qindex_delta |
Q index delta from base Q index in the VP9 term for Luma DC.
VASurfaceID VAEncPictureParameterBufferVP9::reference_frames[8] |
reference frame buffers Each entry of the array specifies the surface index of the picture that is referred by current picture or will be referred by any future picture. The valid entries take value from 0 to 127, inclusive. Non-valid entries, those do not point to pictures which are referred by current picture or future pictures, should take value 0xFF. Other values are not allowed.
Application should update this array based on the refreshing information expected.
uint8_t VAEncPictureParameterBufferVP9::sharpness_level |
Controls the deblocking filter sensitivity. Corresponds to the same VP9 syntax element in frame header.
uint8_t VAEncPictureParameterBufferVP9::skip_frame_flag |
indicate frame-skip happens Application may choose to drop/skip one or mulitple encoded frames or to-be-encoded frame due to various reasons such as insufficient bandwidth. Application uses the following three flags to inform GPU about frame-skip.
value range of skip_frame_flag: [0..2] 0 - encode as normal, no skip; 1 - one or more frames were skipped by application prior to the current frame. Encode the current frame as normal. The driver will pass the number_skip_frames and skip_frames_size to bit rate control for adjustment. 2 - the current frame is to be skipped. Do not encode it but encrypt the packed header contents. This is for the secure encoding case where application generates a frame of all skipped blocks. The packed header will contain the skipped frame.