summaryrefslogtreecommitdiffstats
path: root/meta-egvirt/recipes-kernel/kernel-module-virtio-video/files/include/uapi/linux/virtio_video.h
diff options
context:
space:
mode:
Diffstat (limited to 'meta-egvirt/recipes-kernel/kernel-module-virtio-video/files/include/uapi/linux/virtio_video.h')
-rw-r--r--meta-egvirt/recipes-kernel/kernel-module-virtio-video/files/include/uapi/linux/virtio_video.h493
1 files changed, 0 insertions, 493 deletions
diff --git a/meta-egvirt/recipes-kernel/kernel-module-virtio-video/files/include/uapi/linux/virtio_video.h b/meta-egvirt/recipes-kernel/kernel-module-virtio-video/files/include/uapi/linux/virtio_video.h
deleted file mode 100644
index 12792129..00000000
--- a/meta-egvirt/recipes-kernel/kernel-module-virtio-video/files/include/uapi/linux/virtio_video.h
+++ /dev/null
@@ -1,493 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * 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) 2020 OpenSynergy GmbH.
- */
-
-#ifndef _UAPI_LINUX_VIRTIO_VIDEO_H
-#define _UAPI_LINUX_VIRTIO_VIDEO_H
-
-#include <linux/types.h>
-#include <linux/virtio_config.h>
-
-enum virtio_video_device_type {
- VIRTIO_VIDEO_DEVICE_ENCODER = 0x0100,
- VIRTIO_VIDEO_DEVICE_DECODER,
- VIRTIO_VIDEO_DEVICE_CAMERA,
-};
-
-/*
- * 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
-
-#define VIRTIO_VIDEO_MAX_PLANES 8
-
-/*
- * 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_RGBA8888,
- 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_YUV422, /* 16 YUV 4:2:2 */
- VIRTIO_VIDEO_FORMAT_RAW_MAX = VIRTIO_VIDEO_FORMAT_YUV422,
-
- /* 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 */
- 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_ATTACH,
- VIRTIO_VIDEO_CMD_RESOURCE_QUEUE,
- VIRTIO_VIDEO_CMD_QUEUE_DETACH_RESOURCES,
- 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[] */
-};
-
-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,
-};
-
-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_ATTACH */
-struct virtio_video_resource_object {
- __u8 uuid [16];
-};
-
-struct virtio_video_resource_sg_entry {
- __le64 addr;
- __le32 length;
- __u8 padding[4];
-};
-
-struct virtio_video_resource_sg_list {
- __le32 num_entries;
- __u8 padding[4];
- struct virtio_video_resource_sg_entry entries[];
-};
-#define VIRTIO_VIDEO_RESOURCE_SG_SIZE(n) \
- offsetof(struct virtio_video_resource_sg_list, entries[n])
-
-union virtio_video_resource {
- struct virtio_video_resource_sg_list sg_list;
- struct virtio_video_resource_object object;
-};
-
-struct virtio_video_resource_attach {
- __le32 cmd_type;
- __le32 stream_id;
- __le32 queue_type; /* VIRTIO_VIDEO_QUEUE_TYPE_* */
- __le32 resource_id;
- /* Followed by struct virtio_video_resource resources[] */
-};
-
-/* VIRTIO_VIDEO_CMD_RESOURCE_QUEUE */
-struct virtio_video_resource_queue {
- __le32 cmd_type;
- __le32 stream_id;
- __le32 queue_type; /* VIRTIO_VIDEO_QUEUE_TYPE_* */
- __le32 resource_id;
- __le32 flags; /* Bitmask with VIRTIO_VIDEO_ENQUEUE_FLAG_ * */
- __u8 padding[4];
- __le64 timestamp;
- __le32 data_sizes[VIRTIO_VIDEO_MAX_PLANES];
-};
-
-enum virtio_video_dequeue_flag {
- VIRTIO_VIDEO_DEQUEUE_FLAG_ERR = 0,
- VIRTIO_VIDEO_DEQUEUE_FLAG_EOS,
-
- /* Encoder only */
- VIRTIO_VIDEO_DEQUEUE_FLAG_KEY_FRAME,
- VIRTIO_VIDEO_DEQUEUE_FLAG_PFRAME,
- VIRTIO_VIDEO_DEQUEUE_FLAG_BFRAME,
-};
-
-struct virtio_video_resource_queue_resp {
- struct virtio_video_cmd_hdr hdr;
- __le32 flags;
- __le64 timestamp;
- __le32 data_sizes[VIRTIO_VIDEO_MAX_PLANES];
-};
-
-/* VIRTIO_VIDEO_CMD_QUEUE_DETACH_RESOURCES */
-struct virtio_video_queue_detach_resources {
- __le32 cmd_type;
- __le32 stream_id;
- __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,
-};
-
-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 */