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