use crate::bindings;
pub struct VP8PicFields(bindings::_VAPictureParameterBufferVP8__bindgen_ty_1);
impl VP8PicFields {
#[allow(clippy::too_many_arguments)]
pub fn new(
key_frame: u32,
version: u32,
segmentation_enabled: u32,
update_mb_segmentation_map: u32,
update_segment_feature_data: u32,
filter_type: u32,
sharpness_level: u32,
loop_filter_adj_enable: u32,
mode_ref_lf_delta_update: u32,
sign_bias_golden: u32,
sign_bias_alternate: u32,
mb_no_coeff_skip: u32,
loop_filter_disable: u32,
) -> Self {
let _bitfield_1 =
bindings::_VAPictureParameterBufferVP8__bindgen_ty_1__bindgen_ty_1::new_bitfield_1(
key_frame,
version,
segmentation_enabled,
update_mb_segmentation_map,
update_segment_feature_data,
filter_type,
sharpness_level,
loop_filter_adj_enable,
mode_ref_lf_delta_update,
sign_bias_golden,
sign_bias_alternate,
mb_no_coeff_skip,
loop_filter_disable,
);
Self(bindings::_VAPictureParameterBufferVP8__bindgen_ty_1 {
bits: bindings::_VAPictureParameterBufferVP8__bindgen_ty_1__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
__bindgen_padding_0: Default::default(),
},
})
}
pub fn inner(&self) -> &bindings::_VAPictureParameterBufferVP8__bindgen_ty_1 {
&self.0
}
}
pub struct BoolCoderContextVPX(bindings::VABoolCoderContextVPX);
impl BoolCoderContextVPX {
pub fn new(range: u8, value: u8, count: u8) -> Self {
Self(bindings::VABoolCoderContextVPX {
range,
value,
count,
})
}
}
pub struct PictureParameterBufferVP8(Box<bindings::VAPictureParameterBufferVP8>);
impl PictureParameterBufferVP8 {
#[allow(clippy::too_many_arguments)]
pub fn new(
frame_width: u32,
frame_height: u32,
last_ref_frame: bindings::VASurfaceID,
golden_ref_frame: bindings::VASurfaceID,
alt_ref_frame: bindings::VASurfaceID,
pic_fields: &VP8PicFields,
mb_segment_tree_probs: [u8; 3usize],
loop_filter_level: [u8; 4usize],
loop_filter_deltas_ref_frame: [i8; 4usize],
loop_filter_deltas_mode: [i8; 4usize],
prob_skip_false: u8,
prob_intra: u8,
prob_last: u8,
prob_gf: u8,
y_mode_probs: [u8; 4usize],
uv_mode_probs: [u8; 3usize],
mv_probs: [[u8; 19usize]; 2usize],
bool_coder_ctx: &BoolCoderContextVPX,
) -> Self {
let pic_fields = pic_fields.0;
let bool_coder_ctx = bool_coder_ctx.0;
Self(Box::new(bindings::VAPictureParameterBufferVP8 {
frame_width,
frame_height,
last_ref_frame,
golden_ref_frame,
alt_ref_frame,
out_of_loop_frame: bindings::constants::VA_INVALID_SURFACE,
pic_fields,
mb_segment_tree_probs,
loop_filter_level,
loop_filter_deltas_ref_frame,
loop_filter_deltas_mode,
prob_skip_false,
prob_intra,
prob_last,
prob_gf,
y_mode_probs,
uv_mode_probs,
mv_probs,
bool_coder_ctx,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAPictureParameterBufferVP8 {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VAPictureParameterBufferVP8 {
self.0.as_ref()
}
}
pub struct SliceParameterBufferVP8(Box<bindings::VASliceParameterBufferVP8>);
impl SliceParameterBufferVP8 {
pub fn new(
slice_data_size: u32,
slice_data_offset: u32,
slice_data_flag: u32,
macroblock_offset: u32,
num_of_partitions: u8,
partition_size: [u32; 9usize],
) -> Self {
Self(Box::new(bindings::VASliceParameterBufferVP8 {
slice_data_size,
slice_data_offset,
slice_data_flag,
macroblock_offset,
num_of_partitions,
partition_size,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VASliceParameterBufferVP8 {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VASliceParameterBufferVP8 {
self.0.as_ref()
}
}
pub struct IQMatrixBufferVP8(Box<bindings::VAIQMatrixBufferVP8>);
impl IQMatrixBufferVP8 {
pub fn new(quantization_index: [[u16; 6usize]; 4usize]) -> Self {
Self(Box::new(bindings::VAIQMatrixBufferVP8 {
quantization_index,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAIQMatrixBufferVP8 {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VAIQMatrixBufferVP8 {
self.0.as_ref()
}
}
pub struct ProbabilityDataBufferVP8(Box<bindings::VAProbabilityDataBufferVP8>);
impl ProbabilityDataBufferVP8 {
pub fn new(dct_coeff_probs: [[[[u8; 11usize]; 3usize]; 8usize]; 4usize]) -> Self {
Self(Box::new(bindings::VAProbabilityDataBufferVP8 {
dct_coeff_probs,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAProbabilityDataBufferVP8 {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VAProbabilityDataBufferVP8 {
self.0.as_ref()
}
}
pub struct EncSequenceParameterBufferVP8(Box<bindings::VAEncSequenceParameterBufferVP8>);
impl EncSequenceParameterBufferVP8 {
#[allow(clippy::too_many_arguments)]
pub fn new(
frame_width: u32,
frame_height: u32,
frame_width_scale: u32,
frame_height_scale: u32,
error_resilient: u32,
kf_auto: u32,
kf_min_dist: u32,
kf_max_dist: u32,
bits_per_second: u32,
intra_period: u32,
reference_frames: [bindings::VASurfaceID; 4usize],
) -> Self {
Self(Box::new(bindings::VAEncSequenceParameterBufferVP8 {
frame_width,
frame_height,
frame_width_scale,
frame_height_scale,
error_resilient,
kf_auto,
kf_min_dist,
kf_max_dist,
bits_per_second,
intra_period,
reference_frames,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAEncSequenceParameterBufferVP8 {
&mut self.0
}
}
pub struct VP8EncRefFlags(bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_1);
impl VP8EncRefFlags {
pub fn new(
force_kf: u32,
no_ref_last: u32,
no_ref_gf: u32,
no_ref_arf: u32,
temporal_id: u32,
first_ref: u32,
second_ref: u32,
) -> Self {
let _bitfield_1 =
bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_1__bindgen_ty_1::new_bitfield_1(
force_kf,
no_ref_last,
no_ref_gf,
no_ref_arf,
temporal_id,
first_ref,
second_ref,
Default::default(),
);
Self(bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_1 {
bits: bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_1__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
},
})
}
}
pub struct VP8EncPicFlags(bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_2);
impl VP8EncPicFlags {
#[allow(clippy::too_many_arguments)]
pub fn new(
frame_type: u32,
version: u32,
show_frame: u32,
color_space: u32,
recon_filter_type: u32,
loop_filter_type: u32,
auto_partitions: u32,
num_token_partitions: u32,
clamping_type: u32,
segmentation_enabled: u32,
update_mb_segmentation_map: u32,
update_segment_feature_data: u32,
loop_filter_adj_enable: u32,
refresh_entropy_probs: u32,
refresh_golden_frame: u32,
refresh_alternate_frame: u32,
refresh_last: u32,
copy_buffer_to_golden: u32,
copy_buffer_to_alternate: u32,
sign_bias_golden: u32,
sign_bias_alternate: u32,
mb_no_coeff_skip: u32,
forced_lf_adjustment: u32,
) -> Self {
let _bitfield_1 =
bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_2__bindgen_ty_1::new_bitfield_1(
frame_type,
version,
show_frame,
color_space,
recon_filter_type,
loop_filter_type,
auto_partitions,
num_token_partitions,
clamping_type,
segmentation_enabled,
update_mb_segmentation_map,
update_segment_feature_data,
loop_filter_adj_enable,
refresh_entropy_probs,
refresh_golden_frame,
refresh_alternate_frame,
refresh_last,
copy_buffer_to_golden,
copy_buffer_to_alternate,
sign_bias_golden,
sign_bias_alternate,
mb_no_coeff_skip,
forced_lf_adjustment,
Default::default(),
);
Self(bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_2 {
bits: bindings::_VAEncPictureParameterBufferVP8__bindgen_ty_2__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
},
})
}
}
pub struct EncPictureParameterBufferVP8(Box<bindings::VAEncPictureParameterBufferVP8>);
impl EncPictureParameterBufferVP8 {
#[allow(clippy::too_many_arguments)]
pub fn new(
reconstructed_frame: bindings::VASurfaceID,
ref_last_frame: bindings::VASurfaceID,
ref_gf_frame: bindings::VASurfaceID,
ref_arf_frame: bindings::VASurfaceID,
coded_buf: bindings::VABufferID,
ref_flags: &VP8EncRefFlags,
pic_flags: &VP8EncPicFlags,
loop_filter_level: [i8; 4usize],
ref_lf_delta: [i8; 4usize],
mode_lf_delta: [i8; 4usize],
sharpness_level: u8,
clamp_qindex_high: u8,
clamp_qindex_low: u8,
) -> Self {
let ref_flags = ref_flags.0;
let pic_flags = pic_flags.0;
Self(Box::new(bindings::VAEncPictureParameterBufferVP8 {
reconstructed_frame,
ref_last_frame,
ref_gf_frame,
ref_arf_frame,
coded_buf,
ref_flags,
pic_flags,
loop_filter_level,
ref_lf_delta,
mode_lf_delta,
sharpness_level,
clamp_qindex_high,
clamp_qindex_low,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAEncPictureParameterBufferVP8 {
&mut self.0
}
}