use crate::{
device::queue::{
direction::{Capture, Output},
dqbuf::DqBuffer,
handles_provider::HandlesProvider,
CanceledBuffer, FormatBuilder,
},
memory::BufferHandles,
Rect,
};
pub mod format;
pub mod stateful;
pub enum CompletedInputBuffer<OP: BufferHandles> {
Dequeued(DqBuffer<Output, OP>),
Canceled(CanceledBuffer<OP>),
}
pub trait InputDoneCallback<OP: BufferHandles>: Fn(CompletedInputBuffer<OP>) {}
impl<OP, F> InputDoneCallback<OP> for F
where
OP: BufferHandles,
F: Fn(CompletedInputBuffer<OP>),
{
}
pub enum DecoderEvent<P: HandlesProvider> {
FrameDecoded(DqBuffer<Capture, P::HandleType>),
EndOfStream,
}
pub trait DecoderEventCallback<P: HandlesProvider>:
FnMut(DecoderEvent<P>) + Send + 'static
{
}
impl<P, F> DecoderEventCallback<P> for F
where
P: HandlesProvider,
F: FnMut(DecoderEvent<P>) + Send + 'static,
{
}
pub struct FormatChangedReply<P: HandlesProvider> {
pub provider: P,
pub mem_type: <P::HandleType as BufferHandles>::SupportedMemoryType,
pub num_buffers: usize,
}
pub trait FormatChangedCallback<P: HandlesProvider>:
Fn(FormatBuilder, Rect, usize) -> anyhow::Result<FormatChangedReply<P>> + Send + 'static
{
}
impl<P, F> FormatChangedCallback<P> for F
where
P: HandlesProvider,
F: Fn(FormatBuilder, Rect, usize) -> anyhow::Result<FormatChangedReply<P>> + Send + 'static,
{
}