diff options
Diffstat (limited to 'devices/src/virtio/video/event.rs')
-rw-r--r-- | devices/src/virtio/video/event.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/devices/src/virtio/video/event.rs b/devices/src/virtio/video/event.rs new file mode 100644 index 0000000..072f353 --- /dev/null +++ b/devices/src/virtio/video/event.rs @@ -0,0 +1,35 @@ +// Copyright 2020 The Chromium OS Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +//! Events can happen in virtio video devices. + +use std::io; + +use data_model::Le32; +use enumn::N; + +use crate::virtio::video::protocol::*; +use crate::virtio::video::response::Response; +use crate::virtio::Writer; + +#[derive(Debug, Copy, Clone, N)] +pub enum EvtType { + Error = VIRTIO_VIDEO_EVENT_ERROR as isize, + DecResChanged = VIRTIO_VIDEO_EVENT_DECODER_RESOLUTION_CHANGED as isize, +} + +#[derive(Debug, Clone)] +pub struct VideoEvt { + pub typ: EvtType, + pub stream_id: u32, +} + +impl Response for VideoEvt { + fn write(&self, w: &mut Writer) -> Result<(), io::Error> { + w.write_obj(virtio_video_event { + event_type: Le32::from(self.typ as u32), + stream_id: Le32::from(self.stream_id), + }) + } +} |