moq_vaapi/
generic_value.rs1use thiserror::Error;
6
7use crate::bindings;
8
9#[derive(Debug)]
11pub enum GenericValue {
12 Integer(i32),
14 Float(f32),
16 Pointer(*mut std::os::raw::c_void),
18 Func(bindings::VAGenericFunc),
20}
21
22#[derive(Debug, Error)]
23pub enum GenericValueError {
24 #[error("unexpected VAGenericValueType {0}")]
25 UnexpectedType(u32),
26}
27
28impl TryFrom<bindings::VAGenericValue> for GenericValue {
29 type Error = GenericValueError;
30
31 fn try_from(value: bindings::VAGenericValue) -> Result<Self, Self::Error> {
32 match value.type_ {
34 bindings::VAGenericValueType::VAGenericValueTypeInteger => Ok(Self::Integer(unsafe { value.value.i })),
36 bindings::VAGenericValueType::VAGenericValueTypeFloat => Ok(Self::Float(unsafe { value.value.f })),
37 bindings::VAGenericValueType::VAGenericValueTypePointer => Ok(Self::Pointer(unsafe { value.value.p })),
38 bindings::VAGenericValueType::VAGenericValueTypeFunc => Ok(Self::Func(unsafe { value.value.fn_ })),
39 _ => Err(GenericValueError::UnexpectedType(value.type_)),
40 }
41 }
42}