libspa/param/
format_utils.rs1use std::mem::MaybeUninit;
5
6use crate::{
7 param::format::{MediaSubtype, MediaType},
8 pod::Pod,
9 utils::result::{Error, SpaResult},
10};
11
12pub fn parse_format(format: &Pod) -> Result<(MediaType, MediaSubtype), Error> {
14 let mut media_type: MaybeUninit<u32> = MaybeUninit::uninit();
15 let mut media_subtype: MaybeUninit<u32> = MaybeUninit::uninit();
16
17 let res = unsafe {
18 spa_sys::spa_format_parse(
19 format.as_raw_ptr(),
20 media_type.as_mut_ptr(),
21 media_subtype.as_mut_ptr(),
22 )
23 };
24
25 match SpaResult::from_c(res).into_sync_result() {
26 Err(e) => Err(e),
27 Ok(_) => Ok(unsafe {
28 (
29 MediaType::from_raw(media_type.assume_init()),
30 MediaSubtype::from_raw(media_subtype.assume_init()),
31 )
32 }),
33 }
34}