| Guennadi Liakhovetski | 9a74251 | 2009-12-11 11:41:28 -0300 | [diff] [blame] | 1 | /* | 
 | 2 |  * Media Bus API header | 
 | 3 |  * | 
 | 4 |  * Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 
 | 5 |  * | 
 | 6 |  * This program is free software; you can redistribute it and/or modify | 
 | 7 |  * it under the terms of the GNU General Public License version 2 as | 
 | 8 |  * published by the Free Software Foundation. | 
 | 9 |  */ | 
 | 10 |  | 
 | 11 | #ifndef V4L2_MEDIABUS_H | 
 | 12 | #define V4L2_MEDIABUS_H | 
 | 13 |  | 
 | 14 | /* | 
 | 15 |  * These pixel codes uniquely identify data formats on the media bus. Mostly | 
 | 16 |  * they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is | 
 | 17 |  * reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where the | 
 | 18 |  * data format is fixed. Additionally, "2X8" means that one pixel is transferred | 
 | 19 |  * in two 8-bit samples, "BE" or "LE" specify in which order those samples are | 
 | 20 |  * transferred over the bus: "LE" means that the least significant bits are | 
 | 21 |  * transferred first, "BE" means that the most significant bits are transferred | 
 | 22 |  * first, and "PADHI" and "PADLO" define which bits - low or high, in the | 
 | 23 |  * incomplete high byte, are filled with padding bits. | 
 | 24 |  */ | 
 | 25 | enum v4l2_mbus_pixelcode { | 
 | 26 | 	V4L2_MBUS_FMT_FIXED = 1, | 
| Guennadi Liakhovetski | ace6e97 | 2010-07-22 16:52:51 -0300 | [diff] [blame] | 27 | 	V4L2_MBUS_FMT_YUYV8_2X8, | 
 | 28 | 	V4L2_MBUS_FMT_YVYU8_2X8, | 
 | 29 | 	V4L2_MBUS_FMT_UYVY8_2X8, | 
 | 30 | 	V4L2_MBUS_FMT_VYUY8_2X8, | 
| Guennadi Liakhovetski | 9a74251 | 2009-12-11 11:41:28 -0300 | [diff] [blame] | 31 | 	V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE, | 
 | 32 | 	V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE, | 
 | 33 | 	V4L2_MBUS_FMT_RGB565_2X8_LE, | 
 | 34 | 	V4L2_MBUS_FMT_RGB565_2X8_BE, | 
 | 35 | 	V4L2_MBUS_FMT_SBGGR8_1X8, | 
 | 36 | 	V4L2_MBUS_FMT_SBGGR10_1X10, | 
 | 37 | 	V4L2_MBUS_FMT_GREY8_1X8, | 
 | 38 | 	V4L2_MBUS_FMT_Y10_1X10, | 
 | 39 | 	V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE, | 
 | 40 | 	V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE, | 
 | 41 | 	V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE, | 
 | 42 | 	V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE, | 
| Hans Verkuil | 260bb38 | 2010-05-08 19:02:11 -0300 | [diff] [blame] | 43 | 	V4L2_MBUS_FMT_SGRBG8_1X8, | 
| Guennadi Liakhovetski | c6b65ab | 2010-07-26 10:41:55 -0300 | [diff] [blame] | 44 | 	V4L2_MBUS_FMT_SBGGR12_1X12, | 
 | 45 | 	V4L2_MBUS_FMT_YUYV8_1_5X8, | 
 | 46 | 	V4L2_MBUS_FMT_YVYU8_1_5X8, | 
 | 47 | 	V4L2_MBUS_FMT_UYVY8_1_5X8, | 
 | 48 | 	V4L2_MBUS_FMT_VYUY8_1_5X8, | 
| Guennadi Liakhovetski | 9a74251 | 2009-12-11 11:41:28 -0300 | [diff] [blame] | 49 | }; | 
 | 50 |  | 
 | 51 | /** | 
 | 52 |  * struct v4l2_mbus_framefmt - frame format on the media bus | 
 | 53 |  * @width:	frame width | 
 | 54 |  * @height:	frame height | 
 | 55 |  * @code:	data format code | 
 | 56 |  * @field:	used interlacing type | 
 | 57 |  * @colorspace:	colorspace of the data | 
 | 58 |  */ | 
 | 59 | struct v4l2_mbus_framefmt { | 
 | 60 | 	__u32				width; | 
 | 61 | 	__u32				height; | 
 | 62 | 	enum v4l2_mbus_pixelcode	code; | 
 | 63 | 	enum v4l2_field			field; | 
 | 64 | 	enum v4l2_colorspace		colorspace; | 
 | 65 | }; | 
 | 66 |  | 
| Hans Verkuil | 3a21cee | 2010-05-08 17:08:58 -0300 | [diff] [blame] | 67 | static inline void v4l2_fill_pix_format(struct v4l2_pix_format *pix_fmt, | 
 | 68 | 				const struct v4l2_mbus_framefmt *mbus_fmt) | 
 | 69 | { | 
 | 70 | 	pix_fmt->width = mbus_fmt->width; | 
 | 71 | 	pix_fmt->height = mbus_fmt->height; | 
 | 72 | 	pix_fmt->field = mbus_fmt->field; | 
 | 73 | 	pix_fmt->colorspace = mbus_fmt->colorspace; | 
 | 74 | } | 
 | 75 |  | 
 | 76 | static inline void v4l2_fill_mbus_format(struct v4l2_mbus_framefmt *mbus_fmt, | 
 | 77 | 			   const struct v4l2_pix_format *pix_fmt, | 
 | 78 | 			   enum v4l2_mbus_pixelcode code) | 
 | 79 | { | 
 | 80 | 	mbus_fmt->width = pix_fmt->width; | 
 | 81 | 	mbus_fmt->height = pix_fmt->height; | 
 | 82 | 	mbus_fmt->field = pix_fmt->field; | 
 | 83 | 	mbus_fmt->colorspace = pix_fmt->colorspace; | 
 | 84 | 	mbus_fmt->code = code; | 
 | 85 | } | 
 | 86 |  | 
| Guennadi Liakhovetski | 9a74251 | 2009-12-11 11:41:28 -0300 | [diff] [blame] | 87 | #endif |