xref: /aosp_15_r20/external/crosvm/devices/src/virtio/video/protocol.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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 //! This file was generated by the following commands and modified manually.
6*bb4ee6a4SAndroid Build Coastguard Worker //!
7*bb4ee6a4SAndroid Build Coastguard Worker //! ```shell
8*bb4ee6a4SAndroid Build Coastguard Worker //! $ bindgen virtio_video.h              \
9*bb4ee6a4SAndroid Build Coastguard Worker //!     --allowlist-type "virtio_video.*" \
10*bb4ee6a4SAndroid Build Coastguard Worker //!     --allowlist-var "VIRTIO_VIDEO_.*" \
11*bb4ee6a4SAndroid Build Coastguard Worker //!     --with-derive-default            \
12*bb4ee6a4SAndroid Build Coastguard Worker //!     --no-layout-tests                \
13*bb4ee6a4SAndroid Build Coastguard Worker //!     --no-prepend-enum-name > protocol.rs
14*bb4ee6a4SAndroid Build Coastguard Worker //! $ sed -i "s/__u/u/g" protocol.rs
15*bb4ee6a4SAndroid Build Coastguard Worker //! $ sed -i "s/__le/Le/g" protocol.rs
16*bb4ee6a4SAndroid Build Coastguard Worker //! ```
17*bb4ee6a4SAndroid Build Coastguard Worker //!
18*bb4ee6a4SAndroid Build Coastguard Worker //! The main points of the manual modifications are as follows:
19*bb4ee6a4SAndroid Build Coastguard Worker //! * Removed `hdr` from each command struct so that we can read the header and a command body
20*bb4ee6a4SAndroid Build Coastguard Worker //!   separately. (cf. [related discussion](https://markmail.org/message/tr5g6axqq2zzq64y))
21*bb4ee6a4SAndroid Build Coastguard Worker //! * Derive implementations of AsBytes and FromBytes for each struct as needed.
22*bb4ee6a4SAndroid Build Coastguard Worker //! * Added GET_PARAMS_EXT and SET_PARAMS_EXT to allow querying and changing the resource type
23*bb4ee6a4SAndroid Build Coastguard Worker //!   dynamically.
24*bb4ee6a4SAndroid Build Coastguard Worker //! * Moved some definitions such as virtio_video_config to device_constants to make them visible to
25*bb4ee6a4SAndroid Build Coastguard Worker //!   vhost-user modules, and also pub-use them.
26*bb4ee6a4SAndroid Build Coastguard Worker 
27*bb4ee6a4SAndroid Build Coastguard Worker #![allow(dead_code, non_snake_case, non_camel_case_types)]
28*bb4ee6a4SAndroid Build Coastguard Worker 
29*bb4ee6a4SAndroid Build Coastguard Worker use data_model::Le32;
30*bb4ee6a4SAndroid Build Coastguard Worker use data_model::Le64;
31*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::AsBytes;
32*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::FromBytes;
33*bb4ee6a4SAndroid Build Coastguard Worker use zerocopy::FromZeroes;
34*bb4ee6a4SAndroid Build Coastguard Worker 
35*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_MAX_PLANES: u32 = 8;
36*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_RAW_MIN: virtio_video_format = 1;
37*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_ARGB8888: virtio_video_format = 1;
38*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_BGRA8888: virtio_video_format = 2;
39*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_NV12: virtio_video_format = 3;
40*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_YUV420: virtio_video_format = 4;
41*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_YVU420: virtio_video_format = 5;
42*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_RAW_MAX: virtio_video_format = 5;
43*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_CODED_MIN: virtio_video_format = 4096;
44*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_MPEG2: virtio_video_format = 4096;
45*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_MPEG4: virtio_video_format = 4097;
46*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_H264: virtio_video_format = 4098;
47*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_HEVC: virtio_video_format = 4099;
48*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_VP8: virtio_video_format = 4100;
49*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_VP9: virtio_video_format = 4101;
50*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_FORMAT_CODED_MAX: virtio_video_format = 4101;
51*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_format = u32;
52*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_MIN: virtio_video_profile = 256;
53*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_BASELINE: virtio_video_profile = 256;
54*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_MAIN: virtio_video_profile = 257;
55*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_EXTENDED: virtio_video_profile = 258;
56*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_HIGH: virtio_video_profile = 259;
57*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_HIGH10PROFILE: virtio_video_profile = 260;
58*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_HIGH422PROFILE: virtio_video_profile = 261;
59*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_HIGH444PREDICTIVEPROFILE: virtio_video_profile = 262;
60*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_SCALABLEBASELINE: virtio_video_profile = 263;
61*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_SCALABLEHIGH: virtio_video_profile = 264;
62*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_STEREOHIGH: virtio_video_profile = 265;
63*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_MULTIVIEWHIGH: virtio_video_profile = 266;
64*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_H264_MAX: virtio_video_profile = 266;
65*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_HEVC_MIN: virtio_video_profile = 512;
66*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_HEVC_MAIN: virtio_video_profile = 512;
67*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_HEVC_MAIN10: virtio_video_profile = 513;
68*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_HEVC_MAIN_STILL_PICTURE: virtio_video_profile = 514;
69*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_HEVC_MAX: virtio_video_profile = 514;
70*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP8_MIN: virtio_video_profile = 768;
71*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE0: virtio_video_profile = 768;
72*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE1: virtio_video_profile = 769;
73*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE2: virtio_video_profile = 770;
74*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE3: virtio_video_profile = 771;
75*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP8_MAX: virtio_video_profile = 771;
76*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP9_MIN: virtio_video_profile = 1024;
77*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE0: virtio_video_profile = 1024;
78*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE1: virtio_video_profile = 1025;
79*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE2: virtio_video_profile = 1026;
80*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE3: virtio_video_profile = 1027;
81*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PROFILE_VP9_MAX: virtio_video_profile = 1027;
82*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_profile = u32;
83*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_MIN: virtio_video_level = 256;
84*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_1_0: virtio_video_level = 256;
85*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_1_1: virtio_video_level = 257;
86*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_1_2: virtio_video_level = 258;
87*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_1_3: virtio_video_level = 259;
88*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_2_0: virtio_video_level = 260;
89*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_2_1: virtio_video_level = 261;
90*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_2_2: virtio_video_level = 262;
91*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_3_0: virtio_video_level = 263;
92*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_3_1: virtio_video_level = 264;
93*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_3_2: virtio_video_level = 265;
94*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_4_0: virtio_video_level = 266;
95*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_4_1: virtio_video_level = 267;
96*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_4_2: virtio_video_level = 268;
97*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_5_0: virtio_video_level = 269;
98*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_5_1: virtio_video_level = 270;
99*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_LEVEL_H264_MAX: virtio_video_level = 270;
100*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_level = u32;
101*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BITRATE_MODE_VBR: virtio_video_bitrate_mode = 0;
102*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BITRATE_MODE_CBR: virtio_video_bitrate_mode = 1;
103*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_bitrate_mode = u32;
104*bb4ee6a4SAndroid Build Coastguard Worker 
105*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_QUERY_CAPABILITY: virtio_video_cmd_type = 256;
106*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_STREAM_CREATE: virtio_video_cmd_type = 257;
107*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_STREAM_DESTROY: virtio_video_cmd_type = 258;
108*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_STREAM_DRAIN: virtio_video_cmd_type = 259;
109*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_RESOURCE_CREATE: virtio_video_cmd_type = 260;
110*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_RESOURCE_QUEUE: virtio_video_cmd_type = 261;
111*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_RESOURCE_DESTROY_ALL: virtio_video_cmd_type = 262;
112*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_QUEUE_CLEAR: virtio_video_cmd_type = 263;
113*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_GET_PARAMS: virtio_video_cmd_type = 264;
114*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_SET_PARAMS: virtio_video_cmd_type = 265;
115*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_QUERY_CONTROL: virtio_video_cmd_type = 266;
116*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_GET_CONTROL: virtio_video_cmd_type = 267;
117*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_SET_CONTROL: virtio_video_cmd_type = 268;
118*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_GET_PARAMS_EXT: virtio_video_cmd_type = 269;
119*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CMD_SET_PARAMS_EXT: virtio_video_cmd_type = 270;
120*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_OK_NODATA: virtio_video_cmd_type = 512;
121*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_OK_QUERY_CAPABILITY: virtio_video_cmd_type = 513;
122*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_OK_RESOURCE_QUEUE: virtio_video_cmd_type = 514;
123*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_OK_GET_PARAMS: virtio_video_cmd_type = 515;
124*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_OK_QUERY_CONTROL: virtio_video_cmd_type = 516;
125*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_OK_GET_CONTROL: virtio_video_cmd_type = 517;
126*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_ERR_INVALID_OPERATION: virtio_video_cmd_type = 768;
127*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_ERR_OUT_OF_MEMORY: virtio_video_cmd_type = 769;
128*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_ERR_INVALID_STREAM_ID: virtio_video_cmd_type = 770;
129*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_ERR_INVALID_RESOURCE_ID: virtio_video_cmd_type = 771;
130*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_ERR_INVALID_PARAMETER: virtio_video_cmd_type = 772;
131*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_RESP_ERR_UNSUPPORTED_CONTROL: virtio_video_cmd_type = 773;
132*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_cmd_type = u32;
133*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
134*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
135*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_cmd_hdr {
136*bb4ee6a4SAndroid Build Coastguard Worker     pub type_: Le32,
137*bb4ee6a4SAndroid Build Coastguard Worker     pub stream_id: Le32,
138*bb4ee6a4SAndroid Build Coastguard Worker }
139*bb4ee6a4SAndroid Build Coastguard Worker 
140*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_QUEUE_TYPE_INPUT: virtio_video_queue_type = 256;
141*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_QUEUE_TYPE_OUTPUT: virtio_video_queue_type = 257;
142*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_queue_type = u32;
143*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
144*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
145*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_capability {
146*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
147*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
148*bb4ee6a4SAndroid Build Coastguard Worker }
149*bb4ee6a4SAndroid Build Coastguard Worker 
150*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PLANES_LAYOUT_SINGLE_BUFFER: virtio_video_planes_layout_flag = 1;
151*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_PLANES_LAYOUT_PER_PLANE: virtio_video_planes_layout_flag = 2;
152*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_planes_layout_flag = u32;
153*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
154*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
155*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_format_range {
156*bb4ee6a4SAndroid Build Coastguard Worker     pub min: Le32,
157*bb4ee6a4SAndroid Build Coastguard Worker     pub max: Le32,
158*bb4ee6a4SAndroid Build Coastguard Worker     pub step: Le32,
159*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
160*bb4ee6a4SAndroid Build Coastguard Worker }
161*bb4ee6a4SAndroid Build Coastguard Worker 
162*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
163*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
164*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_format_frame {
165*bb4ee6a4SAndroid Build Coastguard Worker     pub width: virtio_video_format_range,
166*bb4ee6a4SAndroid Build Coastguard Worker     pub height: virtio_video_format_range,
167*bb4ee6a4SAndroid Build Coastguard Worker     pub num_rates: Le32,
168*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
169*bb4ee6a4SAndroid Build Coastguard Worker }
170*bb4ee6a4SAndroid Build Coastguard Worker 
171*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
172*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
173*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_format_desc {
174*bb4ee6a4SAndroid Build Coastguard Worker     pub mask: Le64,
175*bb4ee6a4SAndroid Build Coastguard Worker     pub format: Le32,
176*bb4ee6a4SAndroid Build Coastguard Worker     pub planes_layout: Le32,
177*bb4ee6a4SAndroid Build Coastguard Worker     pub plane_align: Le32,
178*bb4ee6a4SAndroid Build Coastguard Worker     pub num_frames: Le32,
179*bb4ee6a4SAndroid Build Coastguard Worker }
180*bb4ee6a4SAndroid Build Coastguard Worker 
181*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
182*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
183*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_capability_resp {
184*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
185*bb4ee6a4SAndroid Build Coastguard Worker     pub num_descs: Le32,
186*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
187*bb4ee6a4SAndroid Build Coastguard Worker }
188*bb4ee6a4SAndroid Build Coastguard Worker 
189*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES: virtio_video_mem_type = 0;
190*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT: virtio_video_mem_type = 1;
191*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_mem_type = u32;
192*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
193*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Copy, Clone, AsBytes, FromZeroes, FromBytes)]
194*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_stream_create {
195*bb4ee6a4SAndroid Build Coastguard Worker     pub in_mem_type: Le32,
196*bb4ee6a4SAndroid Build Coastguard Worker     pub out_mem_type: Le32,
197*bb4ee6a4SAndroid Build Coastguard Worker     pub coded_format: Le32,
198*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
199*bb4ee6a4SAndroid Build Coastguard Worker     pub tag: [u8; 64usize],
200*bb4ee6a4SAndroid Build Coastguard Worker }
201*bb4ee6a4SAndroid Build Coastguard Worker impl Default for virtio_video_stream_create {
default() -> Self202*bb4ee6a4SAndroid Build Coastguard Worker     fn default() -> Self {
203*bb4ee6a4SAndroid Build Coastguard Worker         // SAFETY: trivially safe
204*bb4ee6a4SAndroid Build Coastguard Worker         unsafe { ::std::mem::zeroed() }
205*bb4ee6a4SAndroid Build Coastguard Worker     }
206*bb4ee6a4SAndroid Build Coastguard Worker }
207*bb4ee6a4SAndroid Build Coastguard Worker 
208*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
209*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
210*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_stream_destroy {}
211*bb4ee6a4SAndroid Build Coastguard Worker 
212*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
213*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
214*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_stream_drain {}
215*bb4ee6a4SAndroid Build Coastguard Worker 
216*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
217*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
218*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_mem_entry {
219*bb4ee6a4SAndroid Build Coastguard Worker     pub addr: Le64,
220*bb4ee6a4SAndroid Build Coastguard Worker     pub length: Le32,
221*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
222*bb4ee6a4SAndroid Build Coastguard Worker }
223*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
224*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
225*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_object_entry {
226*bb4ee6a4SAndroid Build Coastguard Worker     pub uuid: [u8; 16usize],
227*bb4ee6a4SAndroid Build Coastguard Worker }
228*bb4ee6a4SAndroid Build Coastguard Worker 
229*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
230*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
231*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_resource_create {
232*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
233*bb4ee6a4SAndroid Build Coastguard Worker     pub resource_id: Le32,
234*bb4ee6a4SAndroid Build Coastguard Worker     pub planes_layout: Le32,
235*bb4ee6a4SAndroid Build Coastguard Worker     pub num_planes: Le32,
236*bb4ee6a4SAndroid Build Coastguard Worker     pub plane_offsets: [Le32; 8usize],
237*bb4ee6a4SAndroid Build Coastguard Worker     pub num_entries: [Le32; 8usize],
238*bb4ee6a4SAndroid Build Coastguard Worker }
239*bb4ee6a4SAndroid Build Coastguard Worker 
240*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
241*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
242*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_resource_queue {
243*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
244*bb4ee6a4SAndroid Build Coastguard Worker     pub resource_id: Le32,
245*bb4ee6a4SAndroid Build Coastguard Worker     pub timestamp: Le64,
246*bb4ee6a4SAndroid Build Coastguard Worker     pub num_data_sizes: Le32,
247*bb4ee6a4SAndroid Build Coastguard Worker     pub data_sizes: [Le32; 8usize],
248*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
249*bb4ee6a4SAndroid Build Coastguard Worker }
250*bb4ee6a4SAndroid Build Coastguard Worker 
251*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BUFFER_FLAG_ERR: virtio_video_buffer_flag = 1;
252*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BUFFER_FLAG_EOS: virtio_video_buffer_flag = 2;
253*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BUFFER_FLAG_IFRAME: virtio_video_buffer_flag = 4;
254*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BUFFER_FLAG_PFRAME: virtio_video_buffer_flag = 8;
255*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_BUFFER_FLAG_BFRAME: virtio_video_buffer_flag = 16;
256*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_buffer_flag = u32;
257*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
258*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
259*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_resource_queue_resp {
260*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
261*bb4ee6a4SAndroid Build Coastguard Worker     pub timestamp: Le64,
262*bb4ee6a4SAndroid Build Coastguard Worker     pub flags: Le32,
263*bb4ee6a4SAndroid Build Coastguard Worker     pub size: Le32,
264*bb4ee6a4SAndroid Build Coastguard Worker }
265*bb4ee6a4SAndroid Build Coastguard Worker 
266*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
267*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
268*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_resource_destroy_all {
269*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
270*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
271*bb4ee6a4SAndroid Build Coastguard Worker }
272*bb4ee6a4SAndroid Build Coastguard Worker 
273*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
274*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
275*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_queue_clear {
276*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
277*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
278*bb4ee6a4SAndroid Build Coastguard Worker }
279*bb4ee6a4SAndroid Build Coastguard Worker 
280*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
281*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
282*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_plane_format {
283*bb4ee6a4SAndroid Build Coastguard Worker     pub plane_size: Le32,
284*bb4ee6a4SAndroid Build Coastguard Worker     pub stride: Le32,
285*bb4ee6a4SAndroid Build Coastguard Worker }
286*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
287*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
288*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_crop {
289*bb4ee6a4SAndroid Build Coastguard Worker     pub left: Le32,
290*bb4ee6a4SAndroid Build Coastguard Worker     pub top: Le32,
291*bb4ee6a4SAndroid Build Coastguard Worker     pub width: Le32,
292*bb4ee6a4SAndroid Build Coastguard Worker     pub height: Le32,
293*bb4ee6a4SAndroid Build Coastguard Worker }
294*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
295*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
296*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_params {
297*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
298*bb4ee6a4SAndroid Build Coastguard Worker     pub format: Le32,
299*bb4ee6a4SAndroid Build Coastguard Worker     pub frame_width: Le32,
300*bb4ee6a4SAndroid Build Coastguard Worker     pub frame_height: Le32,
301*bb4ee6a4SAndroid Build Coastguard Worker     pub min_buffers: Le32,
302*bb4ee6a4SAndroid Build Coastguard Worker     pub max_buffers: Le32,
303*bb4ee6a4SAndroid Build Coastguard Worker     pub crop: virtio_video_crop,
304*bb4ee6a4SAndroid Build Coastguard Worker     pub frame_rate: Le32,
305*bb4ee6a4SAndroid Build Coastguard Worker     pub num_planes: Le32,
306*bb4ee6a4SAndroid Build Coastguard Worker     pub plane_formats: [virtio_video_plane_format; 8usize],
307*bb4ee6a4SAndroid Build Coastguard Worker }
308*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
309*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
310*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_get_params {
311*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
312*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
313*bb4ee6a4SAndroid Build Coastguard Worker }
314*bb4ee6a4SAndroid Build Coastguard Worker 
315*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
316*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
317*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_get_params_resp {
318*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
319*bb4ee6a4SAndroid Build Coastguard Worker     pub params: virtio_video_params,
320*bb4ee6a4SAndroid Build Coastguard Worker }
321*bb4ee6a4SAndroid Build Coastguard Worker 
322*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
323*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
324*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_set_params {
325*bb4ee6a4SAndroid Build Coastguard Worker     pub params: virtio_video_params,
326*bb4ee6a4SAndroid Build Coastguard Worker }
327*bb4ee6a4SAndroid Build Coastguard Worker 
328*bb4ee6a4SAndroid Build Coastguard Worker /// Extension of the {GET,SET}_PARAMS data to also include the resource type. Not including it
329*bb4ee6a4SAndroid Build Coastguard Worker /// was an oversight and the {GET,SET}_PARAMS_EXT commands use this structure to fix it, while
330*bb4ee6a4SAndroid Build Coastguard Worker /// the older {GET,SET}_PARAMS commands are kept for backward compatibility.
331*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
332*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
333*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_params_ext {
334*bb4ee6a4SAndroid Build Coastguard Worker     pub base: virtio_video_params,
335*bb4ee6a4SAndroid Build Coastguard Worker     pub resource_type: Le32,
336*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
337*bb4ee6a4SAndroid Build Coastguard Worker }
338*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
339*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
340*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_get_params_ext {
341*bb4ee6a4SAndroid Build Coastguard Worker     pub queue_type: Le32,
342*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
343*bb4ee6a4SAndroid Build Coastguard Worker }
344*bb4ee6a4SAndroid Build Coastguard Worker 
345*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
346*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
347*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_get_params_ext_resp {
348*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
349*bb4ee6a4SAndroid Build Coastguard Worker     pub params: virtio_video_params_ext,
350*bb4ee6a4SAndroid Build Coastguard Worker }
351*bb4ee6a4SAndroid Build Coastguard Worker 
352*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
353*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
354*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_set_params_ext {
355*bb4ee6a4SAndroid Build Coastguard Worker     pub params: virtio_video_params_ext,
356*bb4ee6a4SAndroid Build Coastguard Worker }
357*bb4ee6a4SAndroid Build Coastguard Worker 
358*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_BITRATE: virtio_video_control_type = 1;
359*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_PROFILE: virtio_video_control_type = 2;
360*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_LEVEL: virtio_video_control_type = 3;
361*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_FORCE_KEYFRAME: virtio_video_control_type = 4;
362*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_BITRATE_MODE: virtio_video_control_type = 5;
363*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_BITRATE_PEAK: virtio_video_control_type = 6;
364*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_CONTROL_PREPEND_SPSPPS_TO_IDR: virtio_video_control_type = 7;
365*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_control_type = u32;
366*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
367*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
368*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_control_profile {
369*bb4ee6a4SAndroid Build Coastguard Worker     pub format: Le32,
370*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
371*bb4ee6a4SAndroid Build Coastguard Worker }
372*bb4ee6a4SAndroid Build Coastguard Worker 
373*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
374*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
375*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_control_level {
376*bb4ee6a4SAndroid Build Coastguard Worker     pub format: Le32,
377*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
378*bb4ee6a4SAndroid Build Coastguard Worker }
379*bb4ee6a4SAndroid Build Coastguard Worker 
380*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
381*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
382*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_control {
383*bb4ee6a4SAndroid Build Coastguard Worker     pub control: Le32,
384*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
385*bb4ee6a4SAndroid Build Coastguard Worker }
386*bb4ee6a4SAndroid Build Coastguard Worker 
387*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
388*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
389*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_control_resp_profile {
390*bb4ee6a4SAndroid Build Coastguard Worker     pub num: Le32,
391*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
392*bb4ee6a4SAndroid Build Coastguard Worker }
393*bb4ee6a4SAndroid Build Coastguard Worker 
394*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
395*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
396*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_control_resp_level {
397*bb4ee6a4SAndroid Build Coastguard Worker     pub num: Le32,
398*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
399*bb4ee6a4SAndroid Build Coastguard Worker }
400*bb4ee6a4SAndroid Build Coastguard Worker 
401*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
402*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
403*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_query_control_resp {
404*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
405*bb4ee6a4SAndroid Build Coastguard Worker }
406*bb4ee6a4SAndroid Build Coastguard Worker 
407*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
408*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
409*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_get_control {
410*bb4ee6a4SAndroid Build Coastguard Worker     pub control: Le32,
411*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
412*bb4ee6a4SAndroid Build Coastguard Worker }
413*bb4ee6a4SAndroid Build Coastguard Worker 
414*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
415*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
416*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_control_val_bitrate {
417*bb4ee6a4SAndroid Build Coastguard Worker     pub bitrate: Le32,
418*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
419*bb4ee6a4SAndroid Build Coastguard Worker }
420*bb4ee6a4SAndroid Build Coastguard Worker 
421*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
422*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
423*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_control_val_bitrate_peak {
424*bb4ee6a4SAndroid Build Coastguard Worker     pub bitrate_peak: Le32,
425*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
426*bb4ee6a4SAndroid Build Coastguard Worker }
427*bb4ee6a4SAndroid Build Coastguard Worker 
428*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
429*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
430*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_control_val_bitrate_mode {
431*bb4ee6a4SAndroid Build Coastguard Worker     pub bitrate_mode: Le32,
432*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
433*bb4ee6a4SAndroid Build Coastguard Worker }
434*bb4ee6a4SAndroid Build Coastguard Worker 
435*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
436*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
437*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_control_val_profile {
438*bb4ee6a4SAndroid Build Coastguard Worker     pub profile: Le32,
439*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
440*bb4ee6a4SAndroid Build Coastguard Worker }
441*bb4ee6a4SAndroid Build Coastguard Worker 
442*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
443*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
444*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_control_val_level {
445*bb4ee6a4SAndroid Build Coastguard Worker     pub level: Le32,
446*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
447*bb4ee6a4SAndroid Build Coastguard Worker }
448*bb4ee6a4SAndroid Build Coastguard Worker 
449*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
450*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
451*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_control_val_prepend_spspps_to_idr {
452*bb4ee6a4SAndroid Build Coastguard Worker     pub prepend_spspps_to_idr: Le32,
453*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
454*bb4ee6a4SAndroid Build Coastguard Worker }
455*bb4ee6a4SAndroid Build Coastguard Worker 
456*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
457*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
458*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_get_control_resp {
459*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
460*bb4ee6a4SAndroid Build Coastguard Worker }
461*bb4ee6a4SAndroid Build Coastguard Worker 
462*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
463*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
464*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_set_control {
465*bb4ee6a4SAndroid Build Coastguard Worker     pub control: Le32,
466*bb4ee6a4SAndroid Build Coastguard Worker     pub padding: [u8; 4usize],
467*bb4ee6a4SAndroid Build Coastguard Worker }
468*bb4ee6a4SAndroid Build Coastguard Worker 
469*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
470*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
471*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_set_control_resp {
472*bb4ee6a4SAndroid Build Coastguard Worker     pub hdr: virtio_video_cmd_hdr,
473*bb4ee6a4SAndroid Build Coastguard Worker }
474*bb4ee6a4SAndroid Build Coastguard Worker 
475*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_EVENT_ERROR: virtio_video_event_type = 256;
476*bb4ee6a4SAndroid Build Coastguard Worker pub const VIRTIO_VIDEO_EVENT_DECODER_RESOLUTION_CHANGED: virtio_video_event_type = 512;
477*bb4ee6a4SAndroid Build Coastguard Worker pub type virtio_video_event_type = u32;
478*bb4ee6a4SAndroid Build Coastguard Worker #[repr(C)]
479*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Debug, Default, Copy, Clone, AsBytes, FromZeroes, FromBytes)]
480*bb4ee6a4SAndroid Build Coastguard Worker pub struct virtio_video_event {
481*bb4ee6a4SAndroid Build Coastguard Worker     pub event_type: Le32,
482*bb4ee6a4SAndroid Build Coastguard Worker     pub stream_id: Le32,
483*bb4ee6a4SAndroid Build Coastguard Worker }
484