1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2020 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker //! Events can happen in virtio video devices. 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard Worker use std::io; 8*bb4ee6a4SAndroid Build Coastguard Worker 9*bb4ee6a4SAndroid Build Coastguard Worker use data_model::Le32; 10*bb4ee6a4SAndroid Build Coastguard Worker use enumn::N; 11*bb4ee6a4SAndroid Build Coastguard Worker 12*bb4ee6a4SAndroid Build Coastguard Worker use crate::virtio::video::protocol::*; 13*bb4ee6a4SAndroid Build Coastguard Worker use crate::virtio::video::response::Response; 14*bb4ee6a4SAndroid Build Coastguard Worker use crate::virtio::Writer; 15*bb4ee6a4SAndroid Build Coastguard Worker 16*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Copy, Clone, N)] 17*bb4ee6a4SAndroid Build Coastguard Worker pub enum EvtType { 18*bb4ee6a4SAndroid Build Coastguard Worker Error = VIRTIO_VIDEO_EVENT_ERROR as isize, 19*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(feature = "video-decoder")] 20*bb4ee6a4SAndroid Build Coastguard Worker DecResChanged = VIRTIO_VIDEO_EVENT_DECODER_RESOLUTION_CHANGED as isize, 21*bb4ee6a4SAndroid Build Coastguard Worker } 22*bb4ee6a4SAndroid Build Coastguard Worker 23*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Clone)] 24*bb4ee6a4SAndroid Build Coastguard Worker pub struct VideoEvt { 25*bb4ee6a4SAndroid Build Coastguard Worker pub typ: EvtType, 26*bb4ee6a4SAndroid Build Coastguard Worker pub stream_id: u32, 27*bb4ee6a4SAndroid Build Coastguard Worker } 28*bb4ee6a4SAndroid Build Coastguard Worker 29*bb4ee6a4SAndroid Build Coastguard Worker impl Response for VideoEvt { write(&self, w: &mut Writer) -> Result<(), io::Error>30*bb4ee6a4SAndroid Build Coastguard Worker fn write(&self, w: &mut Writer) -> Result<(), io::Error> { 31*bb4ee6a4SAndroid Build Coastguard Worker w.write_obj(virtio_video_event { 32*bb4ee6a4SAndroid Build Coastguard Worker event_type: Le32::from(self.typ as u32), 33*bb4ee6a4SAndroid Build Coastguard Worker stream_id: Le32::from(self.stream_id), 34*bb4ee6a4SAndroid Build Coastguard Worker }) 35*bb4ee6a4SAndroid Build Coastguard Worker } 36*bb4ee6a4SAndroid Build Coastguard Worker } 37