1use gst::glib::translate::*;
2use std::ptr;
3
4pub struct ExtendedComment {
5 pub key: Option<glib::GString>,
6 pub lang: Option<glib::GString>,
7 pub value: glib::GString,
8}
9
10#[doc(alias = "gst_tag_parse_extended_comment")]
11pub fn tag_parse_extended_comment(
12 ext_comment: &str,
13 fail_if_no_key: bool,
14) -> Result<ExtendedComment, gst::glib::BoolError> {
15 skip_assert_initialized!();
16 unsafe {
17 let mut c_key = ptr::null_mut();
18 let mut c_lang = ptr::null_mut();
19 let mut c_value = ptr::null_mut();
20 let res: bool = from_glib(crate::ffi::gst_tag_parse_extended_comment(
21 ext_comment.to_glib_none().0,
22 &mut c_key,
23 &mut c_lang,
24 &mut c_value,
25 fail_if_no_key.into_glib(),
26 ));
27 if !res {
28 Err(glib::bool_error!("Failed to parse extended comment"))
29 } else {
30 let key = from_glib_full(c_key);
31 let lang = from_glib_full(c_lang);
32 let value = from_glib_full(c_value);
33
34 Ok(ExtendedComment { key, lang, value })
35 }
36 }
37}