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