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