linux_video_core/private/
traits.rs

1use crate::{
2    impls::{BufferRef, QueueData},
3    Buffer, Internal, Method, Result,
4};
5use std::os::unix::io::RawFd;
6
7/// Direction implementation details
8pub trait DirectionImpl: Sized {
9    /// Get next frame buffer from queue
10    fn next<Met: Method>(
11        queue: &Internal<QueueData<Self, Met>>,
12        fd: RawFd,
13    ) -> Result<BufferRef<Self, Met>>;
14}
15
16/// I/O method implementation details
17pub trait MethodImpl {
18    /// Initialize pointer to data
19    fn init(buffer: &Buffer, fd: RawFd) -> Result<*mut u8>;
20
21    /// Deinitialize pointer to data
22    fn done(buffer: &Buffer, pointer: *mut u8);
23
24    /// Update buffer before enqueueing
25    fn update(_buffer: &mut Buffer, _pointer: *mut u8) {}
26}