pub type VADecPictureParameterBufferAV1 = _VADecPictureParameterBufferAV1;Expand description
\brief AV1 Decoding Picture Parameter Buffer Structure
This structure conveys picture level parameters and should be sent once per frame.
Aliased Type§
#[repr(C)]pub struct VADecPictureParameterBufferAV1 {Show 49 fields
pub profile: u8,
pub order_hint_bits_minus_1: u8,
pub bit_depth_idx: u8,
pub matrix_coefficients: u8,
pub seq_info_fields: _VADecPictureParameterBufferAV1__bindgen_ty_1,
pub current_frame: u32,
pub current_display_picture: u32,
pub anchor_frames_num: u8,
pub anchor_frames_list: *mut u32,
pub frame_width_minus1: u16,
pub frame_height_minus1: u16,
pub output_frame_width_in_tiles_minus_1: u16,
pub output_frame_height_in_tiles_minus_1: u16,
pub ref_frame_map: [u32; 8],
pub ref_frame_idx: [u8; 7],
pub primary_ref_frame: u8,
pub order_hint: u8,
pub seg_info: _VASegmentationStructAV1,
pub film_grain_info: _VAFilmGrainStructAV1,
pub tile_cols: u8,
pub tile_rows: u8,
pub width_in_sbs_minus_1: [u16; 63],
pub height_in_sbs_minus_1: [u16; 63],
pub tile_count_minus_1: u16,
pub context_update_tile_id: u16,
pub pic_info_fields: _VADecPictureParameterBufferAV1__bindgen_ty_2,
pub superres_scale_denominator: u8,
pub interp_filter: u8,
pub filter_level: [u8; 2],
pub filter_level_u: u8,
pub filter_level_v: u8,
pub loop_filter_info_fields: _VADecPictureParameterBufferAV1__bindgen_ty_3,
pub ref_deltas: [i8; 8],
pub mode_deltas: [i8; 2],
pub base_qindex: u8,
pub y_dc_delta_q: i8,
pub u_dc_delta_q: i8,
pub u_ac_delta_q: i8,
pub v_dc_delta_q: i8,
pub v_ac_delta_q: i8,
pub qmatrix_fields: _VADecPictureParameterBufferAV1__bindgen_ty_4,
pub mode_control_fields: _VADecPictureParameterBufferAV1__bindgen_ty_5,
pub cdef_damping_minus_3: u8,
pub cdef_bits: u8,
pub cdef_y_strengths: [u8; 8],
pub cdef_uv_strengths: [u8; 8],
pub loop_restoration_fields: _VADecPictureParameterBufferAV1__bindgen_ty_6,
pub wm: [_VAWarpedMotionParamsAV1; 7],
pub va_reserved: [u32; 8],
}Fields§
§profile: u8\brief AV1 bit stream profile
order_hint_bits_minus_1: u8§bit_depth_idx: u8\brief bit depth index value range [0..2] 0 - bit depth 8; 1 - bit depth 10; 2 - bit depth 12;
matrix_coefficients: u8\brief corresponds to AV1 spec variable of the same name.
seq_info_fields: _VADecPictureParameterBufferAV1__bindgen_ty_1§current_frame: u32\brief buffer description of decoded current picture
current_display_picture: u32\brief display buffer of current picture Used for film grain applied decoded picture. Valid only when apply_grain equals 1.
anchor_frames_num: u8\brief number of anchor frames for large scale tile This parameter gives the number of entries of anchor_frames_list[]. Value range [0..128].
anchor_frames_list: *mut u32\brief anchor frame list for large scale tile For large scale tile applications, the anchor frames could come from previously decoded frames in current sequence (aka. internal), or from external sources. For external anchor frames, application should call API vaCreateBuffer() to generate frame buffers and populate them with pixel frames. And this process may happen multiple times. The array anchor_frames_list[] is used to register all the available anchor frames from both external and internal, up to the current frame instance. If a previously registerred anchor frame is no longer needed, it should be removed from the list. But it does not prevent applications from relacing the frame buffer with new anchor frames. Please note that the internal anchor frames may not still be present in the current DPB buffer. But if it is in the anchor_frames_list[], it should not be replaced with other frames or removed from memory until it is not shown in the list. This number of entries of the list is given by parameter anchor_frames_num.
frame_width_minus1: u16\brief Picture resolution minus 1 Picture original resolution. If SuperRes is enabled, this is the upscaled resolution. value range [0..65535]
frame_height_minus1: u16§output_frame_width_in_tiles_minus_1: u16\brief Output frame buffer size in unit of tiles Valid only when large_scale_tile equals 1. value range [0..65535]
output_frame_height_in_tiles_minus_1: u16§ref_frame_map: [u32; 8]\brief Surface indices of reference frames in DPB.
Contains a list of uncompressed frame buffer surface indices as references. Application needs to make sure all the entries point to valid frames except for intra frames by checking ref_frame_id[]. If missing frame is identified, application may choose to perform error recovery by pointing problematic index to an alternative frame buffer. Driver is not responsible to validate reference frames’ id.
ref_frame_idx: [u8; 7]\brief Reference frame indices.
Contains a list of indices into ref_frame_map[8]. It specifies the reference frame correspondence. The indices of the array are defined as [LAST_FRAME – LAST_FRAME, LAST2_FRAME – LAST_FRAME, …, ALTREF_FRAME – LAST_FRAME], where each symbol is defined as: enum{INTRA_FRAME = 0, LAST_FRAME, LAST2_FRAME, LAST3_FRAME, GOLDEN_FRAME, BWDREF_FRAME, ALTREF2_FRAME, ALTREF_FRAME};
primary_ref_frame: u8\brief primary reference frame index Index into ref_frame_idx[], specifying which reference frame contains propagated info that should be loaded at the start of the frame. When value equals PRIMARY_REF_NONE (7), it indicates there is no primary reference frame. value range [0..7]
order_hint: u8§seg_info: _VASegmentationStructAV1§film_grain_info: _VAFilmGrainStructAV1§tile_cols: u8\brief tile structure When uniform_tile_spacing_flag == 1, width_in_sbs_minus_1[] and height_in_sbs_minus_1[] should be ignored, which will be generated by driver based on tile_cols and tile_rows.
tile_rows: u8§width_in_sbs_minus_1: [u16; 63]§height_in_sbs_minus_1: [u16; 63]§tile_count_minus_1: u16\brief number of tiles minus 1 in large scale tile list Same as AV1 semantic element. Valid only when large_scale_tiles == 1.
context_update_tile_id: u16§pic_info_fields: _VADecPictureParameterBufferAV1__bindgen_ty_2§superres_scale_denominator: u8\brief Supper resolution scale denominator. When use_superres=1, superres_scale_denominator must be in the range [9..16]. When use_superres=0, superres_scale_denominator must be 8.
interp_filter: u8\brief Interpolation filter. value range [0..4]
filter_level: [u8; 2]\brief luma loop filter levels. value range [0..63].
filter_level_u: u8\brief chroma loop filter levels. value range [0..63].
filter_level_v: u8§loop_filter_info_fields: _VADecPictureParameterBufferAV1__bindgen_ty_3§ref_deltas: [i8; 8]\brief The adjustment needed for the filter level based on the chosen reference frame. value range [-64..63].
mode_deltas: [i8; 2]\brief The adjustment needed for the filter level based on the chosen mode. value range [-64..63].
base_qindex: u8\brief quantization / /** \brief Y AC index value range [0..255]
y_dc_delta_q: i8\brief Y DC delta from Y AC value range [-64..63]
u_dc_delta_q: i8\brief U DC delta from Y AC value range [-64..63]
u_ac_delta_q: i8\brief U AC delta from Y AC value range [-64..63]
v_dc_delta_q: i8\brief V DC delta from Y AC value range [-64..63]
v_ac_delta_q: i8\brief V AC delta from Y AC value range [-64..63]
qmatrix_fields: _VADecPictureParameterBufferAV1__bindgen_ty_4§mode_control_fields: _VADecPictureParameterBufferAV1__bindgen_ty_5§cdef_damping_minus_3: u8\brief CDEF parameters
cdef_bits: u8§cdef_y_strengths: [u8; 8]Encode cdef strength:
The cdef_y_strengths[] and cdef_uv_strengths[] are expected to be packed with both primary and secondary strength. The secondary strength is given in the lower two bits and the primary strength is given in the next four bits.
cdef_y_strengths[] & cdef_uv_strengths[] should be derived as: (cdef_y_strengths[]) = (cdef_y_pri_strength[] << 2) | (cdef_y_sec_strength[] & 0x03) (cdef_uv_strengths[]) = (cdef_uv_pri_strength[] << 2) | (cdef_uv_sec_strength[] & 0x03) In which, cdef_y_pri_strength[]/cdef_y_sec_strength[]/cdef_uv_pri_strength[]/cdef_uv_sec_strength[] are variables defined in AV1 Spec 5.9.19. The cdef_y_strengths[] & cdef_uv_strengths[] are corresponding to LIBAOM variables cm->cdef_strengths[] & cm->cdef_uv_strengths[] respectively.
cdef_uv_strengths: [u8; 8]§loop_restoration_fields: _VADecPictureParameterBufferAV1__bindgen_ty_6§wm: [_VAWarpedMotionParamsAV1; 7]\brief global motion
va_reserved: [u32; 8]\brief Reserved bytes for future use, must be zero