qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 5/8] standard-headers: Add virtio_video.h


From: Michael S. Tsirkin
Subject: Re: [PATCH 5/8] standard-headers: Add virtio_video.h
Date: Fri, 10 Dec 2021 06:02:11 -0500

On Thu, Dec 09, 2021 at 02:55:58PM +0000, Peter Griffin wrote:
> Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
> ---
>  include/standard-headers/linux/virtio_video.h | 483 ++++++++++++++++++
>  1 file changed, 483 insertions(+)
>  create mode 100644 include/standard-headers/linux/virtio_video.h
> 
> diff --git a/include/standard-headers/linux/virtio_video.h 
> b/include/standard-headers/linux/virtio_video.h
> new file mode 100644
> index 0000000000..16b5f642a9
> --- /dev/null
> +++ b/include/standard-headers/linux/virtio_video.h
> @@ -0,0 +1,483 @@
> +/* SPDX-License-Identifier: BSD-3-Clause */
> +/*
> + * Virtio Video Device
> + *
> + * This header is BSD licensed so anyone can use the definitions
> + * to implement compatible drivers/servers:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + * 3. Neither the name of IBM nor the names of its contributors
> + *    may be used to endorse or promote products derived from this software
> + *    without specific prior written permission.
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
> + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR
> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
> + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
> + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + *
> + * Copyright (C) 2019 OpenSynergy GmbH.
> + */
> +
> +#ifndef _UAPI_LINUX_VIRTIO_VIDEO_H
> +#define _UAPI_LINUX_VIRTIO_VIDEO_H
> +
> +#include <linux/types.h>
> +#include <linux/virtio_config.h>
> +
> +/*
> + * Feature bits
> + */
> +
> +/* Guest pages can be used for video buffers. */
> +#define VIRTIO_VIDEO_F_RESOURCE_GUEST_PAGES 0
> +/*
> + * The host can process buffers even if they are non-contiguous memory such 
> as
> + * scatter-gather lists.
> + */
> +#define VIRTIO_VIDEO_F_RESOURCE_NON_CONTIG 1
> +/* Objects exported by another virtio device can be used for video buffers */
> +#define VIRTIO_VIDEO_F_RESOURCE_VIRTIO_OBJECT 2
> +
> +/*
> + * Image formats
> + */
> +
> +enum virtio_video_format {
> +     /* Raw formats */
> +     VIRTIO_VIDEO_FORMAT_RAW_MIN = 1,
> +     VIRTIO_VIDEO_FORMAT_ARGB8888 = VIRTIO_VIDEO_FORMAT_RAW_MIN,
> +     VIRTIO_VIDEO_FORMAT_BGRA8888,
> +     VIRTIO_VIDEO_FORMAT_NV12, /* 12  Y/CbCr 4:2:0  */
> +     VIRTIO_VIDEO_FORMAT_YUV420, /* 12  YUV 4:2:0     */
> +     VIRTIO_VIDEO_FORMAT_YVU420, /* 12  YVU 4:2:0     */
> +     VIRTIO_VIDEO_FORMAT_RAW_MAX = VIRTIO_VIDEO_FORMAT_YVU420,
> +
> +     /* Coded formats */
> +     VIRTIO_VIDEO_FORMAT_CODED_MIN = 0x1000,
> +     VIRTIO_VIDEO_FORMAT_MPEG2 =
> +             VIRTIO_VIDEO_FORMAT_CODED_MIN, /* MPEG-2 Part 2 */
> +     VIRTIO_VIDEO_FORMAT_MPEG4, /* MPEG-4 Part 2 */
> +     VIRTIO_VIDEO_FORMAT_H264, /* H.264 */
> +     VIRTIO_VIDEO_FORMAT_HEVC, /* HEVC aka H.265*/
> +     VIRTIO_VIDEO_FORMAT_VP8, /* VP8 */
> +     VIRTIO_VIDEO_FORMAT_VP9, /* VP9 */


Explicitly giving values for all constants is a good idea.
It's not a thing where the numbers don't matter as long as
they are all different. Same for the rest of enums.
I also wonder about the value of min/max here.


> +     VIRTIO_VIDEO_FORMAT_CODED_MAX = VIRTIO_VIDEO_FORMAT_VP9,
> +};
> +
> +enum virtio_video_profile {
> +     /* H.264 */
> +     VIRTIO_VIDEO_PROFILE_H264_MIN = 0x100,
> +     VIRTIO_VIDEO_PROFILE_H264_BASELINE = VIRTIO_VIDEO_PROFILE_H264_MIN,
> +     VIRTIO_VIDEO_PROFILE_H264_MAIN,
> +     VIRTIO_VIDEO_PROFILE_H264_EXTENDED,
> +     VIRTIO_VIDEO_PROFILE_H264_HIGH,
> +     VIRTIO_VIDEO_PROFILE_H264_HIGH10PROFILE,
> +     VIRTIO_VIDEO_PROFILE_H264_HIGH422PROFILE,
> +     VIRTIO_VIDEO_PROFILE_H264_HIGH444PREDICTIVEPROFILE,
> +     VIRTIO_VIDEO_PROFILE_H264_SCALABLEBASELINE,
> +     VIRTIO_VIDEO_PROFILE_H264_SCALABLEHIGH,
> +     VIRTIO_VIDEO_PROFILE_H264_STEREOHIGH,
> +     VIRTIO_VIDEO_PROFILE_H264_MULTIVIEWHIGH,
> +     VIRTIO_VIDEO_PROFILE_H264_MAX = VIRTIO_VIDEO_PROFILE_H264_MULTIVIEWHIGH,
> +
> +     /* HEVC */
> +     VIRTIO_VIDEO_PROFILE_HEVC_MIN = 0x200,
> +     VIRTIO_VIDEO_PROFILE_HEVC_MAIN = VIRTIO_VIDEO_PROFILE_HEVC_MIN,
> +     VIRTIO_VIDEO_PROFILE_HEVC_MAIN10,
> +     VIRTIO_VIDEO_PROFILE_HEVC_MAIN_STILL_PICTURE,
> +     VIRTIO_VIDEO_PROFILE_HEVC_MAX =
> +             VIRTIO_VIDEO_PROFILE_HEVC_MAIN_STILL_PICTURE,
> +
> +     /* VP8 */
> +     VIRTIO_VIDEO_PROFILE_VP8_MIN = 0x300,
> +     VIRTIO_VIDEO_PROFILE_VP8_PROFILE0 = VIRTIO_VIDEO_PROFILE_VP8_MIN,
> +     VIRTIO_VIDEO_PROFILE_VP8_PROFILE1,
> +     VIRTIO_VIDEO_PROFILE_VP8_PROFILE2,
> +     VIRTIO_VIDEO_PROFILE_VP8_PROFILE3,
> +     VIRTIO_VIDEO_PROFILE_VP8_MAX = VIRTIO_VIDEO_PROFILE_VP8_PROFILE3,
> +
> +     /* VP9 */
> +     VIRTIO_VIDEO_PROFILE_VP9_MIN = 0x400,
> +     VIRTIO_VIDEO_PROFILE_VP9_PROFILE0 = VIRTIO_VIDEO_PROFILE_VP9_MIN,
> +     VIRTIO_VIDEO_PROFILE_VP9_PROFILE1,
> +     VIRTIO_VIDEO_PROFILE_VP9_PROFILE2,
> +     VIRTIO_VIDEO_PROFILE_VP9_PROFILE3,
> +     VIRTIO_VIDEO_PROFILE_VP9_MAX = VIRTIO_VIDEO_PROFILE_VP9_PROFILE3,
> +};
> +
> +enum virtio_video_level {
> +     /* H.264 */
> +     VIRTIO_VIDEO_LEVEL_H264_MIN = 0x100,
> +     VIRTIO_VIDEO_LEVEL_H264_1_0 = VIRTIO_VIDEO_LEVEL_H264_MIN,
> +     VIRTIO_VIDEO_LEVEL_H264_1_1,
> +     VIRTIO_VIDEO_LEVEL_H264_1_2,
> +     VIRTIO_VIDEO_LEVEL_H264_1_3,
> +     VIRTIO_VIDEO_LEVEL_H264_2_0,
> +     VIRTIO_VIDEO_LEVEL_H264_2_1,
> +     VIRTIO_VIDEO_LEVEL_H264_2_2,
> +     VIRTIO_VIDEO_LEVEL_H264_3_0,
> +     VIRTIO_VIDEO_LEVEL_H264_3_1,
> +     VIRTIO_VIDEO_LEVEL_H264_3_2,
> +     VIRTIO_VIDEO_LEVEL_H264_4_0,
> +     VIRTIO_VIDEO_LEVEL_H264_4_1,
> +     VIRTIO_VIDEO_LEVEL_H264_4_2,
> +     VIRTIO_VIDEO_LEVEL_H264_5_0,
> +     VIRTIO_VIDEO_LEVEL_H264_5_1,
> +     VIRTIO_VIDEO_LEVEL_H264_MAX = VIRTIO_VIDEO_LEVEL_H264_5_1,
> +};
> +
> +/*
> + * Config
> + */
> +
> +struct virtio_video_config {
> +     __le32 version;
> +     __le32 max_caps_length;
> +     __le32 max_resp_length;
> +};
> +
> +/*
> + * Commands
> + */
> +
> +enum virtio_video_cmd_type {
> +     /* Command */
> +     VIRTIO_VIDEO_CMD_QUERY_CAPABILITY = 0x0100,
> +     VIRTIO_VIDEO_CMD_STREAM_CREATE,
> +     VIRTIO_VIDEO_CMD_STREAM_DESTROY,
> +     VIRTIO_VIDEO_CMD_STREAM_DRAIN,
> +     VIRTIO_VIDEO_CMD_RESOURCE_CREATE,
> +     VIRTIO_VIDEO_CMD_RESOURCE_QUEUE,
> +     VIRTIO_VIDEO_CMD_RESOURCE_DESTROY_ALL,
> +     VIRTIO_VIDEO_CMD_QUEUE_CLEAR,
> +     VIRTIO_VIDEO_CMD_GET_PARAMS,
> +     VIRTIO_VIDEO_CMD_SET_PARAMS,
> +     VIRTIO_VIDEO_CMD_QUERY_CONTROL,
> +     VIRTIO_VIDEO_CMD_GET_CONTROL,
> +     VIRTIO_VIDEO_CMD_SET_CONTROL,
> +
> +     /* Response */
> +     VIRTIO_VIDEO_RESP_OK_NODATA = 0x0200,
> +     VIRTIO_VIDEO_RESP_OK_QUERY_CAPABILITY,
> +     VIRTIO_VIDEO_RESP_OK_RESOURCE_QUEUE,
> +     VIRTIO_VIDEO_RESP_OK_GET_PARAMS,
> +     VIRTIO_VIDEO_RESP_OK_QUERY_CONTROL,
> +     VIRTIO_VIDEO_RESP_OK_GET_CONTROL,
> +
> +     VIRTIO_VIDEO_RESP_ERR_INVALID_OPERATION = 0x0300,
> +     VIRTIO_VIDEO_RESP_ERR_OUT_OF_MEMORY,
> +     VIRTIO_VIDEO_RESP_ERR_INVALID_STREAM_ID,
> +     VIRTIO_VIDEO_RESP_ERR_INVALID_RESOURCE_ID,
> +     VIRTIO_VIDEO_RESP_ERR_INVALID_PARAMETER,
> +     VIRTIO_VIDEO_RESP_ERR_UNSUPPORTED_CONTROL,
> +};
> +
> +struct virtio_video_cmd_hdr {
> +     __le32 type; /* One of enum virtio_video_cmd_type */
> +     __le32 stream_id;
> +};
> +
> +/* VIRTIO_VIDEO_CMD_QUERY_CAPABILITY */
> +enum virtio_video_queue_type {
> +     VIRTIO_VIDEO_QUEUE_TYPE_INPUT = 0x100,
> +     VIRTIO_VIDEO_QUEUE_TYPE_OUTPUT,
> +};
> +
> +struct virtio_video_query_capability {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __u8 padding[4];
> +};
> +
> +enum virtio_video_planes_layout_flag {
> +     VIRTIO_VIDEO_PLANES_LAYOUT_SINGLE_BUFFER = 1 << 0,
> +     VIRTIO_VIDEO_PLANES_LAYOUT_PER_PLANE = 1 << 1,
> +};
> +
> +struct virtio_video_format_range {
> +     __le32 min;
> +     __le32 max;
> +     __le32 step;
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_format_frame {
> +     struct virtio_video_format_range width;
> +     struct virtio_video_format_range height;
> +     __le32 num_rates;
> +     __u8 padding[4];
> +     /* Followed by struct virtio_video_format_range frame_rates[] */


You can actually do struct virtio_video_format_range frame_rates[]
with the same effect.

> +};
> +
> +struct virtio_video_format_desc {
> +     __le64 mask;
> +     __le32 format; /* One of VIRTIO_VIDEO_FORMAT_* types */
> +     __le32 planes_layout; /* Bitmask with VIRTIO_VIDEO_PLANES_LAYOUT_* */
> +     __le32 plane_align;
> +     __le32 num_frames;
> +     /* Followed by struct virtio_video_format_frame frames[] */
> +};
> +
> +struct virtio_video_query_capability_resp {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 num_descs;
> +     __u8 padding[4];
> +     /* Followed by struct virtio_video_format_desc descs[] */
> +};
> +
> +/* VIRTIO_VIDEO_CMD_STREAM_CREATE */
> +enum virtio_video_mem_type {
> +     VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES,
> +     VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT,
> +};
> +
> +struct virtio_video_stream_create {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 in_mem_type; /* One of VIRTIO_VIDEO_MEM_TYPE_* types */
> +     __le32 out_mem_type; /* One of VIRTIO_VIDEO_MEM_TYPE_* types */
> +     __le32 coded_format; /* One of VIRTIO_VIDEO_FORMAT_* types */
> +     __u8 padding[4];
> +     __u8 tag[64];
> +};
> +
> +/* VIRTIO_VIDEO_CMD_STREAM_DESTROY */
> +struct virtio_video_stream_destroy {
> +     struct virtio_video_cmd_hdr hdr;
> +};
> +
> +/* VIRTIO_VIDEO_CMD_STREAM_DRAIN */
> +struct virtio_video_stream_drain {
> +     struct virtio_video_cmd_hdr hdr;
> +};
> +
> +/* VIRTIO_VIDEO_CMD_RESOURCE_CREATE */
> +struct virtio_video_mem_entry {
> +     __le64 addr;
> +     __le32 length;
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_object_entry {
> +     __u8 uuid[16];
> +};
> +
> +#define VIRTIO_VIDEO_MAX_PLANES 8
> +
> +struct virtio_video_resource_create {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __le32 resource_id;
> +     __le32 planes_layout;
> +     __le32 num_planes;
> +     __le32 plane_offsets[VIRTIO_VIDEO_MAX_PLANES];
> +     __le32 num_entries[VIRTIO_VIDEO_MAX_PLANES];
> +     /**
> +      * Followed by either
> +      * - struct virtio_video_mem_entry entries[]
> +      *   for VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES
> +      * - struct virtio_video_object_entry entries[]
> +      *   for VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT
> +      */
> +};
> +
> +/* VIRTIO_VIDEO_CMD_RESOURCE_QUEUE */
> +struct virtio_video_resource_queue {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __le32 resource_id;
> +     __le64 timestamp;
> +     __le32 num_data_sizes;
> +     __le32 data_sizes[VIRTIO_VIDEO_MAX_PLANES];
> +     __u8 padding[4];
> +};
> +
> +enum virtio_video_buffer_flag {
> +     VIRTIO_VIDEO_BUFFER_FLAG_ERR = 0x0001,
> +     VIRTIO_VIDEO_BUFFER_FLAG_EOS = 0x0002,
> +
> +     /* Encoder only */
> +     VIRTIO_VIDEO_BUFFER_FLAG_IFRAME = 0x0004,
> +     VIRTIO_VIDEO_BUFFER_FLAG_PFRAME = 0x0008,
> +     VIRTIO_VIDEO_BUFFER_FLAG_BFRAME = 0x0010,
> +};
> +
> +struct virtio_video_resource_queue_resp {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le64 timestamp;
> +     __le32 flags; /* One of VIRTIO_VIDEO_BUFFER_FLAG_* flags */
> +     __le32 size; /* Encoded size */
> +};
> +
> +/* VIRTIO_VIDEO_CMD_RESOURCE_DESTROY_ALL */
> +struct virtio_video_resource_destroy_all {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __u8 padding[4];
> +};
> +
> +/* VIRTIO_VIDEO_CMD_QUEUE_CLEAR */
> +struct virtio_video_queue_clear {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __u8 padding[4];
> +};
> +
> +/* VIRTIO_VIDEO_CMD_GET_PARAMS */
> +struct virtio_video_plane_format {
> +     __le32 plane_size;
> +     __le32 stride;
> +};
> +
> +struct virtio_video_crop {
> +     __le32 left;
> +     __le32 top;
> +     __le32 width;
> +     __le32 height;
> +};
> +
> +struct virtio_video_params {
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __le32 format; /* One of VIRTIO_VIDEO_FORMAT_* types */
> +     __le32 frame_width;
> +     __le32 frame_height;
> +     __le32 min_buffers;
> +     __le32 max_buffers;
> +     struct virtio_video_crop crop;
> +     __le32 frame_rate;
> +     __le32 num_planes;
> +     struct virtio_video_plane_format plane_formats[VIRTIO_VIDEO_MAX_PLANES];
> +};
> +
> +struct virtio_video_get_params {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 queue_type; /* One of VIRTIO_VIDEO_QUEUE_TYPE_* types */
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_get_params_resp {
> +     struct virtio_video_cmd_hdr hdr;
> +     struct virtio_video_params params;
> +};
> +
> +/* VIRTIO_VIDEO_CMD_SET_PARAMS */
> +struct virtio_video_set_params {
> +     struct virtio_video_cmd_hdr hdr;
> +     struct virtio_video_params params;
> +};
> +
> +/* VIRTIO_VIDEO_CMD_QUERY_CONTROL */
> +enum virtio_video_control_type {
> +     VIRTIO_VIDEO_CONTROL_BITRATE = 1,
> +     VIRTIO_VIDEO_CONTROL_PROFILE,
> +     VIRTIO_VIDEO_CONTROL_LEVEL,
> +     VIRTIO_VIDEO_CONTROL_FORCE_KEYFRAME,
> +};
> +
> +struct virtio_video_query_control_profile {
> +     __le32 format; /* One of VIRTIO_VIDEO_FORMAT_* */
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_query_control_level {
> +     __le32 format; /* One of VIRTIO_VIDEO_FORMAT_* */
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_query_control {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 control; /* One of VIRTIO_VIDEO_CONTROL_* types */
> +     __u8 padding[4];
> +     /*
> +      * Followed by a value of struct virtio_video_query_control_*
> +      * in accordance with the value of control.
> +      */
> +};
> +
> +struct virtio_video_query_control_resp_profile {
> +     __le32 num;
> +     __u8 padding[4];
> +     /* Followed by an array le32 profiles[] */
> +};
> +
> +struct virtio_video_query_control_resp_level {
> +     __le32 num;
> +     __u8 padding[4];
> +     /* Followed by an array le32 level[] */
> +};
> +
> +struct virtio_video_query_control_resp {
> +     struct virtio_video_cmd_hdr hdr;
> +     /* Followed by one of struct virtio_video_query_control_resp_* */
> +};
> +
> +/* VIRTIO_VIDEO_CMD_GET_CONTROL */
> +struct virtio_video_get_control {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 control; /* One of VIRTIO_VIDEO_CONTROL_* types */
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_control_val_bitrate {
> +     __le32 bitrate;
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_control_val_profile {
> +     __le32 profile;
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_control_val_level {
> +     __le32 level;
> +     __u8 padding[4];
> +};
> +
> +struct virtio_video_get_control_resp {
> +     struct virtio_video_cmd_hdr hdr;
> +     /* Followed by one of struct virtio_video_control_val_* */
> +};
> +
> +/* VIRTIO_VIDEO_CMD_SET_CONTROL */
> +struct virtio_video_set_control {
> +     struct virtio_video_cmd_hdr hdr;
> +     __le32 control; /* One of VIRTIO_VIDEO_CONTROL_* types */
> +     __u8 padding[4];
> +     /* Followed by one of struct virtio_video_control_val_* */
> +};
> +
> +struct virtio_video_set_control_resp {
> +     struct virtio_video_cmd_hdr hdr;
> +};
> +
> +/*
> + * Events
> + */
> +
> +enum virtio_video_event_type {
> +     /* For all devices */
> +     VIRTIO_VIDEO_EVENT_ERROR = 0x0100,
> +
> +     /* For decoder only */
> +     VIRTIO_VIDEO_EVENT_DECODER_RESOLUTION_CHANGED = 0x0200,
> +};
> +
> +struct virtio_video_event {
> +     __le32 event_type; /* One of VIRTIO_VIDEO_EVENT_* types */
> +     __le32 stream_id;
> +};
> +
> +#endif /* _UAPI_LINUX_VIRTIO_VIDEO_H */
> -- 
> 2.25.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]