use crate::bindings;
pub struct PicFlags(bindings::_VAEncPictureParameterBufferJPEG__bindgen_ty_1);
impl PicFlags {
pub fn new(profile: u32, progressive: u32, huffman: u32, interleaved: u32, differential: u32) -> Self {
let _bitfield_1 = bindings::_VAEncPictureParameterBufferJPEG__bindgen_ty_1__bindgen_ty_1::new_bitfield_1(
profile,
progressive,
huffman,
interleaved,
differential,
);
Self(bindings::_VAEncPictureParameterBufferJPEG__bindgen_ty_1 {
bits: bindings::_VAEncPictureParameterBufferJPEG__bindgen_ty_1__bindgen_ty_1 {
_bitfield_align_1: Default::default(),
_bitfield_1,
__bindgen_padding_0: Default::default(),
},
})
}
}
pub struct EncPictureParameterBufferJPEG(Box<bindings::VAEncPictureParameterBufferJPEG>);
impl EncPictureParameterBufferJPEG {
pub fn new(
reconstructed_picture: bindings::VASurfaceID,
picture_width: u16,
picture_height: u16,
coded_buf: bindings::VABufferID,
pic_flags: PicFlags,
sample_bit_depth: u8,
num_scan: u8,
num_components: u16,
component_id: [u8; 4usize],
quantiser_table_selector: [u8; 4usize],
quality: u8,
) -> Self {
Self(Box::new(bindings::VAEncPictureParameterBufferJPEG {
reconstructed_picture,
picture_width,
picture_height,
coded_buf,
pic_flags: pic_flags.0,
sample_bit_depth,
num_scan,
num_components,
component_id,
quantiser_table_selector,
quality,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAEncPictureParameterBufferJPEG {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VAEncPictureParameterBufferJPEG {
self.0.as_ref()
}
}
pub struct EncSliceParameterBufferJPEGComponent(bindings::_VAEncSliceParameterBufferJPEG__bindgen_ty_1);
impl EncSliceParameterBufferJPEGComponent {
pub fn new(component_selector: u8, dc_table_selector: u8, ac_table_selector: u8) -> Self {
Self(bindings::_VAEncSliceParameterBufferJPEG__bindgen_ty_1 {
component_selector,
dc_table_selector,
ac_table_selector,
})
}
pub fn inner(&self) -> &bindings::_VAEncSliceParameterBufferJPEG__bindgen_ty_1 {
&self.0
}
}
pub struct EncSliceParameterBufferJPEG(Box<bindings::VAEncSliceParameterBufferJPEG>);
impl EncSliceParameterBufferJPEG {
pub fn new(
restart_interval: u16,
num_components: u16,
components: [EncSliceParameterBufferJPEGComponent; 4usize],
) -> Self {
Self(Box::new(bindings::VAEncSliceParameterBufferJPEG {
restart_interval,
num_components,
components: components.map(|component| component.0),
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAEncSliceParameterBufferJPEG {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VAEncSliceParameterBufferJPEG {
self.0.as_ref()
}
}
pub struct QMatrixBufferJPEG(Box<bindings::VAQMatrixBufferJPEG>);
impl QMatrixBufferJPEG {
pub fn new(
load_lum_quantiser_matrix: i32,
load_chroma_quantiser_matrix: i32,
lum_quantiser_matrix: [u8; 64usize],
chroma_quantiser_matrix: [u8; 64usize],
) -> Self {
Self(Box::new(bindings::VAQMatrixBufferJPEG {
load_lum_quantiser_matrix,
load_chroma_quantiser_matrix,
lum_quantiser_matrix,
chroma_quantiser_matrix,
va_reserved: Default::default(),
}))
}
pub(crate) fn inner_mut(&mut self) -> &mut bindings::VAQMatrixBufferJPEG {
self.0.as_mut()
}
pub fn inner(&self) -> &bindings::VAQMatrixBufferJPEG {
self.0.as_ref()
}
}