#![allow(non_camel_case_types, non_snake_case)]
use crate::co;
use crate::decl::*;
use crate::mf::vts::*;
use crate::ole::privs::*;
use crate::prelude::*;
com_interface! { IMFSourceResolver: "fbe5a32d-a497-4b61-bb85-97b1a848a6e3";
}
impl mf_IMFSourceResolver for IMFSourceResolver {}
pub trait mf_IMFSourceResolver: ole_IUnknown {
fn BeginCreateObjectFromByteStream(
&self,
byte_stream: &impl mf_IMFByteStream,
url: Option<&str>,
flags: co::MF_RESOLUTION,
props: Option<&impl oleaut_IPropertyStore>,
callback: &IMFAsyncCallback,
state: Option<&impl ole_IUnknown>,
) -> HrResult<IUnknown> {
let mut queried = unsafe { IUnknown::null() };
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).BeginCreateObjectFromByteStream)(
self.ptr(),
byte_stream.ptr(),
WString::from_opt_str(url).as_ptr(),
flags.raw(),
props.map_or(std::ptr::null_mut(), |p| p.ptr()),
queried.as_mut(),
callback.ptr(),
state.map_or(std::ptr::null_mut(), |s| s.ptr()),
)
}).to_hrresult()
.map(|_| queried)
}
fn BeginCreateObjectFromURL(
&self,
url: &str,
flags: co::MF_RESOLUTION,
props: Option<&impl oleaut_IPropertyStore>,
callback: &IMFAsyncCallback,
state: Option<&impl ole_IUnknown>,
) -> HrResult<IUnknown> {
let mut queried = unsafe { IUnknown::null() };
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).BeginCreateObjectFromURL)(
self.ptr(),
WString::from_str(url).as_ptr(),
flags.raw(),
props.map_or(std::ptr::null_mut(), |p| p.ptr()),
queried.as_mut(),
callback.ptr(),
state.map_or(std::ptr::null_mut(), |s| s.ptr()),
)
}).to_hrresult()
.map(|_| queried)
}
fn CancelObjectCreation(&self, cookie: &impl ole_IUnknown) -> HrResult<()> {
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).CancelObjectCreation)(self.ptr(), cookie.ptr())
}).to_hrresult()
}
fn CreateObjectFromByteStream(
&self,
byte_stream: &impl mf_IMFByteStream,
url: Option<&str>,
flags: co::MF_RESOLUTION,
props: Option<&impl oleaut_IPropertyStore>,
) -> HrResult<(co::MF_OBJECT, IUnknown)> {
let mut obj_type = co::MF_OBJECT::default();
let mut queried = unsafe { IUnknown::null() };
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).CreateObjectFromByteStream)(
self.ptr(),
byte_stream.ptr(),
WString::from_opt_str(url).as_ptr(),
flags.raw(),
props.map_or(std::ptr::null_mut(), |p| p.ptr()),
obj_type.as_mut(),
queried.as_mut(),
)
}).to_hrresult()
.map(|_| (obj_type, queried))
}
fn CreateObjectFromURL(
&self,
url: &str,
flags: co::MF_RESOLUTION,
props: Option<&impl oleaut_IPropertyStore>,
) -> HrResult<(co::MF_OBJECT, IUnknown)> {
let mut obj_type = co::MF_OBJECT::default();
let mut queried = unsafe { IUnknown::null() };
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).CreateObjectFromURL)(
self.ptr(),
WString::from_str(url).as_ptr(),
flags.raw(),
props.map_or(std::ptr::null_mut(), |p| p.ptr()),
obj_type.as_mut(),
queried.as_mut(),
)
}).to_hrresult()
.map(|_| (obj_type, queried))
}
fn EndCreateObjectFromByteStream(
&self,
result: &impl mf_IMFAsyncResult,
) -> HrResult<(co::MF_OBJECT, IUnknown)> {
let mut obj_type = co::MF_OBJECT::default();
let mut queried = unsafe { IUnknown::null() };
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).EndCreateObjectFromByteStream)(
self.ptr(),
result.ptr(),
obj_type.as_mut(),
queried.as_mut(),
)
}).to_hrresult()
.map(|_| (obj_type, queried))
}
fn EndCreateObjectFromURL(
&self,
result: &impl mf_IMFAsyncResult,
) -> HrResult<(co::MF_OBJECT, IUnknown)> {
let mut obj_type = co::MF_OBJECT::default();
let mut queried = unsafe { IUnknown::null() };
HrRet(unsafe {
(vt::<IMFSourceResolverVT>(self).EndCreateObjectFromURL)(
self.ptr(),
result.ptr(),
obj_type.as_mut(),
queried.as_mut(),
)
}).to_hrresult()
.map(|_| (obj_type, queried))
}
}