use crate::bindings;
pub struct VP9PicFields(bindings::_VADecPictureParameterBufferVP9__bindgen_ty_1);
impl VP9PicFields {
#[allow(clippy::too_many_arguments)]
pub fn new(
subsampling_x: u32,
subsampling_y: u32,
frame_type: u32,
show_frame: u32,
error_resilient_mode: u32,
intra_only: u32,
allow_high_precision_mv: u32,
mcomp_filter_type: u32,
frame_parallel_decoding_mode: u32,
reset_frame_context: u32,
refresh_frame_context: u32,
frame_context_idx: u32,
segmentation_enabled: u32,
segmentation_temporal_update: u32,
segmentation_update_map: u32,
last_ref_frame: u32,
last_ref_frame_sign_bias: u32,
golden_ref_frame: u32,
golden_ref_frame_sign_bias: u32,
alt_ref_frame: u32,
alt_ref_frame_sign_bias: u32,
lossless_flag: u32,
) -> Self {
let _bitfield_1 =
bindings::_VADecPictureParameterBufferVP9__bindgen_ty_1__bindgen_ty_1::new_bitfield_1(
subsampling_x,
subsampling_y,
frame_type,
show_frame,
error_resilient_mode,
intra_only,
allow_high_precision_mv,
mcomp_filter_type,
frame_parallel_decoding_mode,
reset_frame_context,
refresh_frame_context,
frame_context_idx,
segmentation_enabled,
segmentation_temporal_update,
segmentation_update_map,
last_ref_frame,
last_ref_frame_sign_bias,
golden_ref_frame,
golden_ref_frame_sign_bias,
alt_ref_frame,
alt_ref_frame_sign_bias,
lossless_flag,
);
Self(bindings::_VADecPictureParameterBufferVP9__bindgen_ty_1 {
bits: bindings::_VADecPictureParameterBufferVP9__bindgen_ty_1__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
},
})
}
pub fn inner(&mut self) -> &bindings::_VADecPictureParameterBufferVP9__bindgen_ty_1 {
&self.0
}
}
pub struct PictureParameterBufferVP9(Box<bindings::VADecPictureParameterBufferVP9>);
impl PictureParameterBufferVP9 {
#[allow(clippy::too_many_arguments)]
pub fn new(
frame_width: u16,
frame_height: u16,
reference_frames: [bindings::VASurfaceID; 8],
pic_fields: &VP9PicFields,
filter_level: u8,
sharpness_level: u8,
log2_tile_rows: u8,
log2_tile_columns: u8,
frame_header_length_in_bytes: u8,
first_partition_size: u16,
mb_segment_tree_probs: [u8; 7usize],
segment_pred_probs: [u8; 3usize],
profile: u8,
bit_depth: u8,
) -> Self {
let pic_fields = pic_fields.0;
Self(Box::new(bindings::VADecPictureParameterBufferVP9 {
frame_width,
frame_height,
reference_frames,
pic_fields,
filter_level,
sharpness_level,
log2_tile_rows,
log2_tile_columns,
frame_header_length_in_bytes,
first_partition_size,
mb_segment_tree_probs,
segment_pred_probs,
profile,
bit_depth,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VADecPictureParameterBufferVP9 {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VADecPictureParameterBufferVP9 {
self.0.as_ref()
}
}
pub struct VP9SegmentFlags(bindings::_VASegmentParameterVP9__bindgen_ty_1);
impl VP9SegmentFlags {
pub fn new(
segment_reference_enabled: u16,
segment_reference: u16,
segment_reference_skipped: u16,
) -> Self {
let _bitfield_1 =
bindings::_VASegmentParameterVP9__bindgen_ty_1__bindgen_ty_1::new_bitfield_1(
segment_reference_enabled,
segment_reference,
segment_reference_skipped,
);
Self(bindings::_VASegmentParameterVP9__bindgen_ty_1 {
fields: bindings::_VASegmentParameterVP9__bindgen_ty_1__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
__bindgen_padding_0: Default::default(),
},
})
}
pub fn inner(&mut self) -> &bindings::_VASegmentParameterVP9__bindgen_ty_1 {
&self.0
}
}
pub struct SegmentParameterVP9(bindings::VASegmentParameterVP9);
impl SegmentParameterVP9 {
pub fn new(
segment_flags: &VP9SegmentFlags,
filter_level: [[u8; 2usize]; 4usize],
luma_ac_quant_scale: i16,
luma_dc_quant_scale: i16,
chroma_ac_quant_scale: i16,
chroma_dc_quant_scale: i16,
) -> Self {
let segment_flags = segment_flags.0;
Self(bindings::VASegmentParameterVP9 {
segment_flags,
filter_level,
luma_ac_quant_scale,
luma_dc_quant_scale,
chroma_ac_quant_scale,
chroma_dc_quant_scale,
va_reserved: Default::default(),
})
}
}
pub struct SliceParameterBufferVP9(Box<bindings::VASliceParameterBufferVP9>);
impl SliceParameterBufferVP9 {
pub fn new(
slice_data_size: u32,
slice_data_offset: u32,
slice_data_flag: u32,
seg_param: [SegmentParameterVP9; 8usize],
) -> Self {
let seg_param = seg_param.map(|param| param.0);
Self(Box::new(bindings::VASliceParameterBufferVP9 {
slice_data_size,
slice_data_offset,
slice_data_flag,
seg_param,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VASliceParameterBufferVP9 {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VASliceParameterBufferVP9 {
self.0.as_ref()
}
}
pub struct CodedBufferVP9Status(Box<bindings::VACodedBufferVP9Status>);
impl CodedBufferVP9Status {
pub fn new(
base_qp_index: u16,
loop_filter_level: u8,
long_term_indication: u8,
next_frame_width: u16,
next_frame_height: u16,
) -> Self {
Self(Box::new(bindings::VACodedBufferVP9Status {
base_qp_index,
loop_filter_level,
long_term_indication,
next_frame_width,
next_frame_height,
va_reserved: Default::default(),
}))
}
}
pub struct EncSequenceParameterBufferVP9(Box<bindings::VAEncSequenceParameterBufferVP9>);
impl EncSequenceParameterBufferVP9 {
pub fn new(
max_frame_width: u32,
max_frame_height: u32,
kf_auto: u32,
kf_min_dist: u32,
kf_max_dist: u32,
bits_per_second: u32,
intra_period: u32,
) -> Self {
Self(Box::new(bindings::VAEncSequenceParameterBufferVP9 {
max_frame_width,
max_frame_height,
kf_auto,
kf_min_dist,
kf_max_dist,
bits_per_second,
intra_period,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAEncSequenceParameterBufferVP9 {
&mut self.0
}
}
pub struct VP9EncRefFlags(bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_1);
impl VP9EncRefFlags {
#[allow(clippy::too_many_arguments)]
pub fn new(
force_kf: u32,
ref_frame_ctrl_l0: u32,
ref_frame_ctrl_l1: u32,
ref_last_idx: u32,
ref_last_sign_bias: u32,
ref_gf_idx: u32,
ref_gf_sign_bias: u32,
ref_arf_idx: u32,
ref_arf_sign_bias: u32,
temporal_id: u32,
) -> Self {
let _bitfield_1 =
bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_1__bindgen_ty_1::new_bitfield_1(
force_kf,
ref_frame_ctrl_l0,
ref_frame_ctrl_l1,
ref_last_idx,
ref_last_sign_bias,
ref_gf_idx,
ref_gf_sign_bias,
ref_arf_idx,
ref_arf_sign_bias,
temporal_id,
Default::default(),
);
Self(bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_1 {
bits: bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_1__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
},
})
}
}
pub struct VP9EncPicFlags(bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_2);
impl VP9EncPicFlags {
#[allow(clippy::too_many_arguments)]
pub fn new(
frame_type: u32,
show_frame: u32,
error_resilient_mode: u32,
intra_only: u32,
allow_high_precision_mv: u32,
mcomp_filter_type: u32,
frame_parallel_decoding_mode: u32,
reset_frame_context: u32,
refresh_frame_context: u32,
frame_context_idx: u32,
segmentation_enabled: u32,
segmentation_temporal_update: u32,
segmentation_update_map: u32,
lossless_mode: u32,
comp_prediction_mode: u32,
auto_segmentation: u32,
super_frame_flag: u32,
) -> Self {
let _bitfield_1 =
bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_2__bindgen_ty_1::new_bitfield_1(
frame_type,
show_frame,
error_resilient_mode,
intra_only,
allow_high_precision_mv,
mcomp_filter_type,
frame_parallel_decoding_mode,
reset_frame_context,
refresh_frame_context,
frame_context_idx,
segmentation_enabled,
segmentation_temporal_update,
segmentation_update_map,
lossless_mode,
comp_prediction_mode,
auto_segmentation,
super_frame_flag,
Default::default(),
);
Self(bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_2 {
bits: bindings::_VAEncPictureParameterBufferVP9__bindgen_ty_2__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
},
})
}
}
pub struct EncPictureParameterBufferVP9(Box<bindings::VAEncPictureParameterBufferVP9>);
impl EncPictureParameterBufferVP9 {
#[allow(clippy::too_many_arguments)]
pub fn new(
frame_width_src: u32,
frame_height_src: u32,
frame_width_dst: u32,
frame_height_dst: u32,
reconstructed_frame: bindings::VASurfaceID,
reference_frames: [bindings::VASurfaceID; 8usize],
coded_buf: bindings::VABufferID,
ref_flags: &VP9EncRefFlags,
pic_flags: &VP9EncPicFlags,
refresh_frame_flags: u8,
luma_ac_qindex: u8,
luma_dc_qindex_delta: i8,
chroma_ac_qindex_delta: i8,
chroma_dc_qindex_delta: i8,
filter_level: u8,
sharpness_level: u8,
ref_lf_delta: [i8; 4usize],
mode_lf_delta: [i8; 2usize],
bit_offset_ref_lf_delta: u16,
bit_offset_mode_lf_delta: u16,
bit_offset_lf_level: u16,
bit_offset_qindex: u16,
bit_offset_first_partition_size: u16,
bit_offset_segmentation: u16,
bit_size_segmentation: u16,
log2_tile_rows: u8,
log2_tile_columns: u8,
skip_frame_flag: u8,
number_skip_frames: u8,
skip_frames_size: u32,
) -> Self {
let ref_flags = ref_flags.0;
let pic_flags = pic_flags.0;
Self(Box::new(bindings::VAEncPictureParameterBufferVP9 {
frame_width_src,
frame_height_src,
frame_width_dst,
frame_height_dst,
reconstructed_frame,
reference_frames,
coded_buf,
ref_flags,
pic_flags,
refresh_frame_flags,
luma_ac_qindex,
luma_dc_qindex_delta,
chroma_ac_qindex_delta,
chroma_dc_qindex_delta,
filter_level,
sharpness_level,
ref_lf_delta,
mode_lf_delta,
bit_offset_ref_lf_delta,
bit_offset_mode_lf_delta,
bit_offset_lf_level,
bit_offset_qindex,
bit_offset_first_partition_size,
bit_offset_segmentation,
bit_size_segmentation,
log2_tile_rows,
log2_tile_columns,
skip_frame_flag,
number_skip_frames,
skip_frames_size,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAEncPictureParameterBufferVP9 {
&mut self.0
}
}