1#![allow(dead_code, non_snake_case, non_camel_case_types)]
28
29use data_model::Le32;
30use data_model::Le64;
31use zerocopy::FromBytes;
32use zerocopy::Immutable;
33use zerocopy::IntoBytes;
34use zerocopy::KnownLayout;
35
36pub const VIRTIO_VIDEO_MAX_PLANES: u32 = 8;
37pub const VIRTIO_VIDEO_FORMAT_RAW_MIN: virtio_video_format = 1;
38pub const VIRTIO_VIDEO_FORMAT_ARGB8888: virtio_video_format = 1;
39pub const VIRTIO_VIDEO_FORMAT_BGRA8888: virtio_video_format = 2;
40pub const VIRTIO_VIDEO_FORMAT_NV12: virtio_video_format = 3;
41pub const VIRTIO_VIDEO_FORMAT_YUV420: virtio_video_format = 4;
42pub const VIRTIO_VIDEO_FORMAT_YVU420: virtio_video_format = 5;
43pub const VIRTIO_VIDEO_FORMAT_RAW_MAX: virtio_video_format = 5;
44pub const VIRTIO_VIDEO_FORMAT_CODED_MIN: virtio_video_format = 4096;
45pub const VIRTIO_VIDEO_FORMAT_MPEG2: virtio_video_format = 4096;
46pub const VIRTIO_VIDEO_FORMAT_MPEG4: virtio_video_format = 4097;
47pub const VIRTIO_VIDEO_FORMAT_H264: virtio_video_format = 4098;
48pub const VIRTIO_VIDEO_FORMAT_HEVC: virtio_video_format = 4099;
49pub const VIRTIO_VIDEO_FORMAT_VP8: virtio_video_format = 4100;
50pub const VIRTIO_VIDEO_FORMAT_VP9: virtio_video_format = 4101;
51pub const VIRTIO_VIDEO_FORMAT_CODED_MAX: virtio_video_format = 4101;
52pub type virtio_video_format = u32;
53pub const VIRTIO_VIDEO_PROFILE_H264_MIN: virtio_video_profile = 256;
54pub const VIRTIO_VIDEO_PROFILE_H264_BASELINE: virtio_video_profile = 256;
55pub const VIRTIO_VIDEO_PROFILE_H264_MAIN: virtio_video_profile = 257;
56pub const VIRTIO_VIDEO_PROFILE_H264_EXTENDED: virtio_video_profile = 258;
57pub const VIRTIO_VIDEO_PROFILE_H264_HIGH: virtio_video_profile = 259;
58pub const VIRTIO_VIDEO_PROFILE_H264_HIGH10PROFILE: virtio_video_profile = 260;
59pub const VIRTIO_VIDEO_PROFILE_H264_HIGH422PROFILE: virtio_video_profile = 261;
60pub const VIRTIO_VIDEO_PROFILE_H264_HIGH444PREDICTIVEPROFILE: virtio_video_profile = 262;
61pub const VIRTIO_VIDEO_PROFILE_H264_SCALABLEBASELINE: virtio_video_profile = 263;
62pub const VIRTIO_VIDEO_PROFILE_H264_SCALABLEHIGH: virtio_video_profile = 264;
63pub const VIRTIO_VIDEO_PROFILE_H264_STEREOHIGH: virtio_video_profile = 265;
64pub const VIRTIO_VIDEO_PROFILE_H264_MULTIVIEWHIGH: virtio_video_profile = 266;
65pub const VIRTIO_VIDEO_PROFILE_H264_MAX: virtio_video_profile = 266;
66pub const VIRTIO_VIDEO_PROFILE_HEVC_MIN: virtio_video_profile = 512;
67pub const VIRTIO_VIDEO_PROFILE_HEVC_MAIN: virtio_video_profile = 512;
68pub const VIRTIO_VIDEO_PROFILE_HEVC_MAIN10: virtio_video_profile = 513;
69pub const VIRTIO_VIDEO_PROFILE_HEVC_MAIN_STILL_PICTURE: virtio_video_profile = 514;
70pub const VIRTIO_VIDEO_PROFILE_HEVC_MAX: virtio_video_profile = 514;
71pub const VIRTIO_VIDEO_PROFILE_VP8_MIN: virtio_video_profile = 768;
72pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE0: virtio_video_profile = 768;
73pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE1: virtio_video_profile = 769;
74pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE2: virtio_video_profile = 770;
75pub const VIRTIO_VIDEO_PROFILE_VP8_PROFILE3: virtio_video_profile = 771;
76pub const VIRTIO_VIDEO_PROFILE_VP8_MAX: virtio_video_profile = 771;
77pub const VIRTIO_VIDEO_PROFILE_VP9_MIN: virtio_video_profile = 1024;
78pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE0: virtio_video_profile = 1024;
79pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE1: virtio_video_profile = 1025;
80pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE2: virtio_video_profile = 1026;
81pub const VIRTIO_VIDEO_PROFILE_VP9_PROFILE3: virtio_video_profile = 1027;
82pub const VIRTIO_VIDEO_PROFILE_VP9_MAX: virtio_video_profile = 1027;
83pub type virtio_video_profile = u32;
84pub const VIRTIO_VIDEO_LEVEL_H264_MIN: virtio_video_level = 256;
85pub const VIRTIO_VIDEO_LEVEL_H264_1_0: virtio_video_level = 256;
86pub const VIRTIO_VIDEO_LEVEL_H264_1_1: virtio_video_level = 257;
87pub const VIRTIO_VIDEO_LEVEL_H264_1_2: virtio_video_level = 258;
88pub const VIRTIO_VIDEO_LEVEL_H264_1_3: virtio_video_level = 259;
89pub const VIRTIO_VIDEO_LEVEL_H264_2_0: virtio_video_level = 260;
90pub const VIRTIO_VIDEO_LEVEL_H264_2_1: virtio_video_level = 261;
91pub const VIRTIO_VIDEO_LEVEL_H264_2_2: virtio_video_level = 262;
92pub const VIRTIO_VIDEO_LEVEL_H264_3_0: virtio_video_level = 263;
93pub const VIRTIO_VIDEO_LEVEL_H264_3_1: virtio_video_level = 264;
94pub const VIRTIO_VIDEO_LEVEL_H264_3_2: virtio_video_level = 265;
95pub const VIRTIO_VIDEO_LEVEL_H264_4_0: virtio_video_level = 266;
96pub const VIRTIO_VIDEO_LEVEL_H264_4_1: virtio_video_level = 267;
97pub const VIRTIO_VIDEO_LEVEL_H264_4_2: virtio_video_level = 268;
98pub const VIRTIO_VIDEO_LEVEL_H264_5_0: virtio_video_level = 269;
99pub const VIRTIO_VIDEO_LEVEL_H264_5_1: virtio_video_level = 270;
100pub const VIRTIO_VIDEO_LEVEL_H264_MAX: virtio_video_level = 270;
101pub type virtio_video_level = u32;
102pub const VIRTIO_VIDEO_BITRATE_MODE_VBR: virtio_video_bitrate_mode = 0;
103pub const VIRTIO_VIDEO_BITRATE_MODE_CBR: virtio_video_bitrate_mode = 1;
104pub type virtio_video_bitrate_mode = u32;
105
106pub const VIRTIO_VIDEO_CMD_QUERY_CAPABILITY: virtio_video_cmd_type = 256;
107pub const VIRTIO_VIDEO_CMD_STREAM_CREATE: virtio_video_cmd_type = 257;
108pub const VIRTIO_VIDEO_CMD_STREAM_DESTROY: virtio_video_cmd_type = 258;
109pub const VIRTIO_VIDEO_CMD_STREAM_DRAIN: virtio_video_cmd_type = 259;
110pub const VIRTIO_VIDEO_CMD_RESOURCE_CREATE: virtio_video_cmd_type = 260;
111pub const VIRTIO_VIDEO_CMD_RESOURCE_QUEUE: virtio_video_cmd_type = 261;
112pub const VIRTIO_VIDEO_CMD_RESOURCE_DESTROY_ALL: virtio_video_cmd_type = 262;
113pub const VIRTIO_VIDEO_CMD_QUEUE_CLEAR: virtio_video_cmd_type = 263;
114pub const VIRTIO_VIDEO_CMD_GET_PARAMS: virtio_video_cmd_type = 264;
115pub const VIRTIO_VIDEO_CMD_SET_PARAMS: virtio_video_cmd_type = 265;
116pub const VIRTIO_VIDEO_CMD_QUERY_CONTROL: virtio_video_cmd_type = 266;
117pub const VIRTIO_VIDEO_CMD_GET_CONTROL: virtio_video_cmd_type = 267;
118pub const VIRTIO_VIDEO_CMD_SET_CONTROL: virtio_video_cmd_type = 268;
119pub const VIRTIO_VIDEO_CMD_GET_PARAMS_EXT: virtio_video_cmd_type = 269;
120pub const VIRTIO_VIDEO_CMD_SET_PARAMS_EXT: virtio_video_cmd_type = 270;
121pub const VIRTIO_VIDEO_RESP_OK_NODATA: virtio_video_cmd_type = 512;
122pub const VIRTIO_VIDEO_RESP_OK_QUERY_CAPABILITY: virtio_video_cmd_type = 513;
123pub const VIRTIO_VIDEO_RESP_OK_RESOURCE_QUEUE: virtio_video_cmd_type = 514;
124pub const VIRTIO_VIDEO_RESP_OK_GET_PARAMS: virtio_video_cmd_type = 515;
125pub const VIRTIO_VIDEO_RESP_OK_QUERY_CONTROL: virtio_video_cmd_type = 516;
126pub const VIRTIO_VIDEO_RESP_OK_GET_CONTROL: virtio_video_cmd_type = 517;
127pub const VIRTIO_VIDEO_RESP_ERR_INVALID_OPERATION: virtio_video_cmd_type = 768;
128pub const VIRTIO_VIDEO_RESP_ERR_OUT_OF_MEMORY: virtio_video_cmd_type = 769;
129pub const VIRTIO_VIDEO_RESP_ERR_INVALID_STREAM_ID: virtio_video_cmd_type = 770;
130pub const VIRTIO_VIDEO_RESP_ERR_INVALID_RESOURCE_ID: virtio_video_cmd_type = 771;
131pub const VIRTIO_VIDEO_RESP_ERR_INVALID_PARAMETER: virtio_video_cmd_type = 772;
132pub const VIRTIO_VIDEO_RESP_ERR_UNSUPPORTED_CONTROL: virtio_video_cmd_type = 773;
133pub type virtio_video_cmd_type = u32;
134#[repr(C)]
135#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
136pub struct virtio_video_cmd_hdr {
137 pub type_: Le32,
138 pub stream_id: Le32,
139}
140
141pub const VIRTIO_VIDEO_QUEUE_TYPE_INPUT: virtio_video_queue_type = 256;
142pub const VIRTIO_VIDEO_QUEUE_TYPE_OUTPUT: virtio_video_queue_type = 257;
143pub type virtio_video_queue_type = u32;
144#[repr(C)]
145#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
146pub struct virtio_video_query_capability {
147 pub queue_type: Le32,
148 pub padding: [u8; 4usize],
149}
150
151pub const VIRTIO_VIDEO_PLANES_LAYOUT_SINGLE_BUFFER: virtio_video_planes_layout_flag = 1;
152pub const VIRTIO_VIDEO_PLANES_LAYOUT_PER_PLANE: virtio_video_planes_layout_flag = 2;
153pub type virtio_video_planes_layout_flag = u32;
154#[repr(C)]
155#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
156pub 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)]
165pub 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)]
174pub 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)]
184pub 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
190pub const VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES: virtio_video_mem_type = 0;
191pub const VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT: virtio_video_mem_type = 1;
192pub type virtio_video_mem_type = u32;
193#[repr(C)]
194#[derive(Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
195pub 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}
202impl Default for virtio_video_stream_create {
203 fn default() -> Self {
204 unsafe { ::std::mem::zeroed() }
206 }
207}
208
209#[repr(C)]
210#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
211pub struct virtio_video_stream_destroy {}
212
213#[repr(C)]
214#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
215pub struct virtio_video_stream_drain {}
216
217#[repr(C)]
218#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
219pub 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)]
226pub 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)]
232pub 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)]
243pub 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
252pub const VIRTIO_VIDEO_BUFFER_FLAG_ERR: virtio_video_buffer_flag = 1;
253pub const VIRTIO_VIDEO_BUFFER_FLAG_EOS: virtio_video_buffer_flag = 2;
254pub const VIRTIO_VIDEO_BUFFER_FLAG_IFRAME: virtio_video_buffer_flag = 4;
255pub const VIRTIO_VIDEO_BUFFER_FLAG_PFRAME: virtio_video_buffer_flag = 8;
256pub const VIRTIO_VIDEO_BUFFER_FLAG_BFRAME: virtio_video_buffer_flag = 16;
257pub type virtio_video_buffer_flag = u32;
258#[repr(C)]
259#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
260pub 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)]
269pub 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)]
276pub 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)]
283pub 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)]
289pub 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)]
297pub 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)]
311pub 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)]
318pub 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)]
325pub struct virtio_video_set_params {
326 pub params: virtio_video_params,
327}
328
329#[repr(C)]
333#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
334pub 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)]
341pub 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)]
348pub 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)]
355pub struct virtio_video_set_params_ext {
356 pub params: virtio_video_params_ext,
357}
358
359pub const VIRTIO_VIDEO_CONTROL_BITRATE: virtio_video_control_type = 1;
360pub const VIRTIO_VIDEO_CONTROL_PROFILE: virtio_video_control_type = 2;
361pub const VIRTIO_VIDEO_CONTROL_LEVEL: virtio_video_control_type = 3;
362pub const VIRTIO_VIDEO_CONTROL_FORCE_KEYFRAME: virtio_video_control_type = 4;
363pub const VIRTIO_VIDEO_CONTROL_BITRATE_MODE: virtio_video_control_type = 5;
364pub const VIRTIO_VIDEO_CONTROL_BITRATE_PEAK: virtio_video_control_type = 6;
365pub const VIRTIO_VIDEO_CONTROL_PREPEND_SPSPPS_TO_IDR: virtio_video_control_type = 7;
366pub type virtio_video_control_type = u32;
367#[repr(C)]
368#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
369pub 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)]
376pub 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)]
383pub 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)]
390pub 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)]
397pub 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)]
404pub 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)]
410pub 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)]
417pub 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)]
424pub 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)]
431pub 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)]
438pub 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)]
445pub 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)]
452pub 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)]
459pub 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)]
465pub 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)]
472pub struct virtio_video_set_control_resp {
473 pub hdr: virtio_video_cmd_hdr,
474}
475
476pub const VIRTIO_VIDEO_EVENT_ERROR: virtio_video_event_type = 256;
477pub const VIRTIO_VIDEO_EVENT_DECODER_RESOLUTION_CHANGED: virtio_video_event_type = 512;
478pub type virtio_video_event_type = u32;
479#[repr(C)]
480#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
481pub struct virtio_video_event {
482 pub event_type: Le32,
483 pub stream_id: Le32,
484}