pub struct VideoDecoder<D: VideoDecoderBackend, Q: VirtioMediaEventQueue, HM: VirtioMediaHostMemoryMapper> { /* private fields */ }Implementations§
Source§impl<B, Q, HM> VideoDecoder<B, Q, HM>
impl<B, Q, HM> VideoDecoder<B, Q, HM>
Trait Implementations§
Source§impl<B, Q, HM, Reader, Writer> VirtioMediaDevice<Reader, Writer> for VideoDecoder<B, Q, HM>where
B: VideoDecoderBackend,
Q: VirtioMediaEventQueue,
HM: VirtioMediaHostMemoryMapper,
Reader: ReadFromDescriptorChain,
Writer: WriteToDescriptorChain,
impl<B, Q, HM, Reader, Writer> VirtioMediaDevice<Reader, Writer> for VideoDecoder<B, Q, HM>where
B: VideoDecoderBackend,
Q: VirtioMediaEventQueue,
HM: VirtioMediaHostMemoryMapper,
Reader: ReadFromDescriptorChain,
Writer: WriteToDescriptorChain,
type Session = <VideoDecoder<B, Q, HM> as VirtioMediaIoctlHandler>::Session
Source§fn new_session(&mut self, session_id: u32) -> Result<Self::Session, i32>
fn new_session(&mut self, session_id: u32) -> Result<Self::Session, i32>
Create a new session which ID is
session_id. Read moreSource§fn close_session(&mut self, session: Self::Session)
fn close_session(&mut self, session: Self::Session)
Close the passed session.
Source§fn do_ioctl(
&mut self,
session: &mut Self::Session,
ioctl: V4l2Ioctl,
reader: &mut Reader,
writer: &mut Writer,
) -> Result<()>
fn do_ioctl( &mut self, session: &mut Self::Session, ioctl: V4l2Ioctl, reader: &mut Reader, writer: &mut Writer, ) -> Result<()>
Perform the IOCTL command and write the response into
writer. Read moreSource§fn do_mmap(
&mut self,
session: &mut Self::Session,
flags: u32,
offset: u32,
) -> Result<(u64, u64), i32>
fn do_mmap( &mut self, session: &mut Self::Session, flags: u32, offset: u32, ) -> Result<(u64, u64), i32>
Performs the MMAP command. Read more
Source§fn do_munmap(&mut self, guest_addr: u64) -> Result<(), i32>
fn do_munmap(&mut self, guest_addr: u64) -> Result<(), i32>
Performs the MUNMAP command. Read more
fn process_events(&mut self, session: &mut Self::Session) -> Result<(), i32>
Source§impl<B, Q, HM> VirtioMediaIoctlHandler for VideoDecoder<B, Q, HM>
impl<B, Q, HM> VirtioMediaIoctlHandler for VideoDecoder<B, Q, HM>
type Session = VideoDecoderSession<<B as VideoDecoderBackend>::Session>
fn enum_fmt( &mut self, session: &Self::Session, queue: QueueType, index: u32, ) -> IoctlResult<v4l2_fmtdesc>
fn enum_framesizes( &mut self, _session: &Self::Session, index: u32, pixel_format: u32, ) -> IoctlResult<v4l2_frmsizeenum>
fn g_fmt( &mut self, session: &Self::Session, queue: QueueType, ) -> IoctlResult<v4l2_format>
Source§fn try_fmt(
&mut self,
session: &Self::Session,
queue: QueueType,
format: v4l2_format,
) -> IoctlResult<v4l2_format>
fn try_fmt( &mut self, session: &Self::Session, queue: QueueType, format: v4l2_format, ) -> IoctlResult<v4l2_format>
Hook for the
VIDIOC_TRY_FMT ioctl. Read moreSource§fn s_fmt(
&mut self,
session: &mut Self::Session,
queue: QueueType,
format: v4l2_format,
) -> IoctlResult<v4l2_format>
fn s_fmt( &mut self, session: &mut Self::Session, queue: QueueType, format: v4l2_format, ) -> IoctlResult<v4l2_format>
Hook for the
VIDIOC_S_FMT ioctl. Read morefn reqbufs( &mut self, session: &mut Self::Session, queue: QueueType, memory: MemoryType, count: u32, flags: MemoryConsistency, ) -> IoctlResult<v4l2_requestbuffers>
fn querybuf( &mut self, session: &Self::Session, queue: QueueType, index: u32, ) -> IoctlResult<V4l2Buffer>
fn subscribe_event( &mut self, session: &mut Self::Session, event: EventType, _flags: SubscribeEventFlags, ) -> IoctlResult<()>
fn unsubscribe_event( &mut self, session: &mut Self::Session, event: v4l2_event_subscription, ) -> IoctlResult<()>
fn streamon( &mut self, session: &mut Self::Session, queue: QueueType, ) -> IoctlResult<()>
fn streamoff( &mut self, session: &mut Self::Session, queue: QueueType, ) -> IoctlResult<()>
fn g_selection( &mut self, session: &Self::Session, sel_type: SelectionType, sel_target: SelectionTarget, ) -> IoctlResult<v4l2_rect>
fn s_selection( &mut self, session: &mut Self::Session, sel_type: SelectionType, sel_target: SelectionTarget, sel_rect: v4l2_rect, _sel_flags: SelectionFlags, ) -> IoctlResult<v4l2_rect>
fn qbuf( &mut self, session: &mut Self::Session, buffer: V4l2Buffer, _guest_regions: Vec<Vec<SgEntry>>, ) -> IoctlResult<V4l2Buffer>
fn try_decoder_cmd( &mut self, session: &Self::Session, cmd: v4l2_decoder_cmd, ) -> IoctlResult<v4l2_decoder_cmd>
fn decoder_cmd( &mut self, session: &mut Self::Session, cmd: v4l2_decoder_cmd, ) -> IoctlResult<v4l2_decoder_cmd>
fn g_parm( &mut self, session: &Self::Session, queue: QueueType, ) -> IoctlResult<v4l2_streamparm>
fn s_parm( &mut self, session: &mut Self::Session, parm: v4l2_streamparm, ) -> IoctlResult<v4l2_streamparm>
fn g_std(&mut self, session: &Self::Session) -> IoctlResult<v4l2_std_id>
fn s_std( &mut self, session: &mut Self::Session, std: v4l2_std_id, ) -> IoctlResult<()>
fn enumstd( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_standard>
fn enuminput( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_input>
fn g_ctrl( &mut self, session: &Self::Session, id: u32, ) -> IoctlResult<v4l2_control>
fn s_ctrl( &mut self, session: &mut Self::Session, id: u32, value: i32, ) -> IoctlResult<v4l2_control>
fn g_tuner( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_tuner>
fn s_tuner( &mut self, session: &mut Self::Session, index: u32, mode: TunerMode, ) -> IoctlResult<()>
fn g_audio(&mut self, session: &Self::Session) -> IoctlResult<v4l2_audio>
fn s_audio( &mut self, session: &mut Self::Session, index: u32, mode: Option<AudioMode>, ) -> IoctlResult<()>
fn queryctrl( &mut self, session: &Self::Session, id: CtrlId, flags: QueryCtrlFlags, ) -> IoctlResult<v4l2_queryctrl>
fn g_input(&mut self, session: &Self::Session) -> IoctlResult<i32>
fn s_input( &mut self, session: &mut Self::Session, input: i32, ) -> IoctlResult<i32>
fn g_output(&mut self, session: &Self::Session) -> IoctlResult<i32>
fn s_output( &mut self, session: &mut Self::Session, output: i32, ) -> IoctlResult<i32>
fn enumoutput( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_output>
fn g_audout(&mut self, session: &Self::Session) -> IoctlResult<v4l2_audioout>
fn s_audout( &mut self, session: &mut Self::Session, index: u32, ) -> IoctlResult<()>
fn g_modulator( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_modulator>
fn s_modulator( &mut self, session: &mut Self::Session, index: u32, flags: TunerTransmissionFlags, ) -> IoctlResult<()>
fn g_frequency( &mut self, session: &Self::Session, tuner: u32, ) -> IoctlResult<v4l2_frequency>
fn s_frequency( &mut self, session: &mut Self::Session, tuner: u32, type_: TunerType, frequency: u32, ) -> IoctlResult<()>
fn querystd(&mut self, session: &Self::Session) -> IoctlResult<v4l2_std_id>
fn enumaudio( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_audio>
fn enumaudout( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_audioout>
Source§fn g_ext_ctrls(
&mut self,
session: &Self::Session,
which: CtrlWhich,
ctrls: &mut v4l2_ext_controls,
ctrl_array: &mut Vec<v4l2_ext_control>,
user_regions: Vec<Vec<SgEntry>>,
) -> IoctlResult<()>
fn g_ext_ctrls( &mut self, session: &Self::Session, which: CtrlWhich, ctrls: &mut v4l2_ext_controls, ctrl_array: &mut Vec<v4l2_ext_control>, user_regions: Vec<Vec<SgEntry>>, ) -> IoctlResult<()>
Ext control ioctls modify
ctrls and ctrl_array in place instead of returning them.Source§fn s_ext_ctrls(
&mut self,
session: &mut Self::Session,
which: CtrlWhich,
ctrls: &mut v4l2_ext_controls,
ctrl_array: &mut Vec<v4l2_ext_control>,
user_regions: Vec<Vec<SgEntry>>,
) -> IoctlResult<()>
fn s_ext_ctrls( &mut self, session: &mut Self::Session, which: CtrlWhich, ctrls: &mut v4l2_ext_controls, ctrl_array: &mut Vec<v4l2_ext_control>, user_regions: Vec<Vec<SgEntry>>, ) -> IoctlResult<()>
Ext control ioctls modify
ctrls and ctrl_array in place instead of returning them.Source§fn try_ext_ctrls(
&mut self,
session: &Self::Session,
which: CtrlWhich,
ctrls: &mut v4l2_ext_controls,
ctrl_array: &mut Vec<v4l2_ext_control>,
user_regions: Vec<Vec<SgEntry>>,
) -> IoctlResult<()>
fn try_ext_ctrls( &mut self, session: &Self::Session, which: CtrlWhich, ctrls: &mut v4l2_ext_controls, ctrl_array: &mut Vec<v4l2_ext_control>, user_regions: Vec<Vec<SgEntry>>, ) -> IoctlResult<()>
Ext control ioctls modify
ctrls and ctrl_array in place instead of returning them.fn enum_frameintervals( &mut self, session: &Self::Session, index: u32, pixel_format: u32, width: u32, height: u32, ) -> IoctlResult<v4l2_frmivalenum>
fn g_enc_index(&mut self, session: &Self::Session) -> IoctlResult<v4l2_enc_idx>
fn encoder_cmd( &mut self, session: &mut Self::Session, cmd: v4l2_encoder_cmd, ) -> IoctlResult<v4l2_encoder_cmd>
fn try_encoder_cmd( &mut self, session: &Self::Session, cmd: v4l2_encoder_cmd, ) -> IoctlResult<v4l2_encoder_cmd>
fn s_dv_timings( &mut self, session: &mut Self::Session, timings: v4l2_dv_timings, ) -> IoctlResult<v4l2_dv_timings>
fn g_dv_timings( &mut self, session: &Self::Session, ) -> IoctlResult<v4l2_dv_timings>
Source§fn create_bufs(
&mut self,
session: &mut Self::Session,
count: u32,
queue: QueueType,
memory: MemoryType,
format: v4l2_format,
) -> IoctlResult<v4l2_create_buffers>
fn create_bufs( &mut self, session: &mut Self::Session, count: u32, queue: QueueType, memory: MemoryType, format: v4l2_format, ) -> IoctlResult<v4l2_create_buffers>
fn prepare_buf( &mut self, session: &mut Self::Session, buffer: V4l2Buffer, guest_regions: Vec<Vec<SgEntry>>, ) -> IoctlResult<V4l2Buffer>
fn enum_dv_timings( &mut self, session: &Self::Session, index: u32, ) -> IoctlResult<v4l2_dv_timings>
fn query_dv_timings( &mut self, session: &Self::Session, ) -> IoctlResult<v4l2_dv_timings>
fn dv_timings_cap( &self, session: &Self::Session, ) -> IoctlResult<v4l2_dv_timings_cap>
fn enum_freq_bands( &self, session: &Self::Session, tuner: u32, type_: TunerType, index: u32, ) -> IoctlResult<v4l2_frequency_band>
fn query_ext_ctrl( &mut self, session: &Self::Session, id: CtrlId, flags: QueryCtrlFlags, ) -> IoctlResult<v4l2_query_ext_ctrl>
Auto Trait Implementations§
impl<D, Q, HM> Freeze for VideoDecoder<D, Q, HM>
impl<D, Q, HM> RefUnwindSafe for VideoDecoder<D, Q, HM>
impl<D, Q, HM> Send for VideoDecoder<D, Q, HM>
impl<D, Q, HM> Sync for VideoDecoder<D, Q, HM>
impl<D, Q, HM> Unpin for VideoDecoder<D, Q, HM>
impl<D, Q, HM> UnsafeUnpin for VideoDecoder<D, Q, HM>
impl<D, Q, HM> UnwindSafe for VideoDecoder<D, Q, HM>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more