Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * Media Bus API header
0004  *
0005  * Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de>
0006  *
0007  * This program is free software; you can redistribute it and/or modify
0008  * it under the terms of the GNU General Public License version 2 as
0009  * published by the Free Software Foundation.
0010  */
0011 
0012 #ifndef __LINUX_V4L2_MEDIABUS_H
0013 #define __LINUX_V4L2_MEDIABUS_H
0014 
0015 #include <linux/media-bus-format.h>
0016 #include <linux/types.h>
0017 #include <linux/videodev2.h>
0018 
0019 #define V4L2_MBUS_FRAMEFMT_SET_CSC  0x0001
0020 
0021 /**
0022  * struct v4l2_mbus_framefmt - frame format on the media bus
0023  * @width:  image width
0024  * @height: image height
0025  * @code:   data format code (from enum v4l2_mbus_pixelcode)
0026  * @field:  used interlacing type (from enum v4l2_field)
0027  * @colorspace: colorspace of the data (from enum v4l2_colorspace)
0028  * @ycbcr_enc:  YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
0029  * @hsv_enc:    HSV encoding of the data (from enum v4l2_hsv_encoding)
0030  * @quantization: quantization of the data (from enum v4l2_quantization)
0031  * @xfer_func:  transfer function of the data (from enum v4l2_xfer_func)
0032  * @flags:  flags (V4L2_MBUS_FRAMEFMT_*)
0033  * @reserved:  reserved bytes that can be later used
0034  */
0035 struct v4l2_mbus_framefmt {
0036     __u32           width;
0037     __u32           height;
0038     __u32           code;
0039     __u32           field;
0040     __u32           colorspace;
0041     union {
0042         /* enum v4l2_ycbcr_encoding */
0043         __u16           ycbcr_enc;
0044         /* enum v4l2_hsv_encoding */
0045         __u16           hsv_enc;
0046     };
0047     __u16           quantization;
0048     __u16           xfer_func;
0049     __u16           flags;
0050     __u16           reserved[10];
0051 };
0052 
0053 #ifndef __KERNEL__
0054 /*
0055  * enum v4l2_mbus_pixelcode and its definitions are now deprecated, and
0056  * MEDIA_BUS_FMT_ definitions (defined in media-bus-format.h) should be
0057  * used instead.
0058  *
0059  * New defines should only be added to media-bus-format.h. The
0060  * v4l2_mbus_pixelcode enum is frozen.
0061  */
0062 
0063 #define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name)  \
0064     V4L2_MBUS_FMT_ ## name = MEDIA_BUS_FMT_ ## name
0065 
0066 enum v4l2_mbus_pixelcode {
0067     V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED),
0068 
0069     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE),
0070     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE),
0071     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE),
0072     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE),
0073     V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE),
0074     V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE),
0075     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE),
0076     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE),
0077     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18),
0078     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24),
0079     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE),
0080     V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE),
0081     V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32),
0082 
0083     V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8),
0084     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8),
0085     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8),
0086     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8),
0087     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8),
0088     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8),
0089     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8),
0090     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8),
0091     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8),
0092     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8),
0093     V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10),
0094     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10),
0095     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10),
0096     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10),
0097     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10),
0098     V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12),
0099     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16),
0100     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16),
0101     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16),
0102     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16),
0103     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16),
0104     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20),
0105     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20),
0106     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20),
0107     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20),
0108     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30),
0109     V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32),
0110     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12),
0111     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12),
0112     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12),
0113     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12),
0114     V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24),
0115     V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24),
0116     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24),
0117     V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24),
0118 
0119     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8),
0120     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8),
0121     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8),
0122     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8),
0123     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8),
0124     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8),
0125     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8),
0126     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8),
0127     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8),
0128     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8),
0129     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8),
0130     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8),
0131     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE),
0132     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE),
0133     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE),
0134     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE),
0135     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10),
0136     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10),
0137     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10),
0138     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10),
0139     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12),
0140     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12),
0141     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12),
0142     V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12),
0143 
0144     V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8),
0145 
0146     V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8),
0147 
0148     V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32),
0149 };
0150 #endif /* __KERNEL__ */
0151 
0152 #endif