pub trait Device {
    // Required methods
    fn process_cmd(
        &mut self,
        cmd: VideoCmd,
        wait_ctx: &WaitContext<Token>
    ) -> (VideoCmdResponseType, Option<(u32, Vec<VideoEvtResponseType>)>);
    fn process_event(
        &mut self,
        desc_map: &mut AsyncCmdDescMap,
        stream_id: u32,
        wait_ctx: &WaitContext<Token>
    ) -> Option<Vec<VideoEvtResponseType>>;

    // Provided method
    fn process_buffer_barrier(
        &mut self,
        _stream_id: u32,
        _wait_ctx: &WaitContext<Token>
    ) -> Option<Vec<VideoEvtResponseType>> { ... }
}

Required Methods§

source

fn process_cmd( &mut self, cmd: VideoCmd, wait_ctx: &WaitContext<Token> ) -> (VideoCmdResponseType, Option<(u32, Vec<VideoEvtResponseType>)>)

Processes a virtio-video command. If the command expects a synchronous response, it returns a response as VideoCmdResponseType::Sync. Otherwise, it returns a name of the descriptor chain that will be used when a response is prepared. Implementations of this method is passed a WaitContext object which can be used to add or remove descriptors to wait on. It is expected that only Token::Event items would be added. When a Token::Event event arrives, process_event() will be invoked.

TODO(b/149720783): Make this an async function.

source

fn process_event( &mut self, desc_map: &mut AsyncCmdDescMap, stream_id: u32, wait_ctx: &WaitContext<Token> ) -> Option<Vec<VideoEvtResponseType>>

Processes an available Token::Event event and returns a list of VideoEvtResponseType responses. It returns None if an invalid event comes. For responses to be sent via command queue, the return type is VideoEvtResponseType::AsyncCmd. For responses to be sent via event queue, the return type is VideoEvtResponseType::Event.

TODO(b/149720783): Make this an async function.

Provided Methods§

source

fn process_buffer_barrier( &mut self, _stream_id: u32, _wait_ctx: &WaitContext<Token> ) -> Option<Vec<VideoEvtResponseType>>

Processes a Token::BufferBarrier event and returns a list of VideoEvtResponseType responses. Only needs to be implemented for devices that adds Token::BufferBarrier tokens to the wait context.

Implementors§