Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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 __LINUX_MEDIA_BUS_FORMAT_H
  12. #define __LINUX_MEDIA_BUS_FORMAT_H
  13.  
  14. /*
  15.  * These bus formats uniquely identify data formats on the data bus. Format 0
  16.  * is reserved, MEDIA_BUS_FMT_FIXED shall be used by host-client pairs, where
  17.  * the data format is fixed. Additionally, "2X8" means that one pixel is
  18.  * transferred in two 8-bit samples, "BE" or "LE" specify in which order those
  19.  * samples are transferred over the bus: "LE" means that the least significant
  20.  * bits are transferred first, "BE" means that the most significant bits are
  21.  * transferred first, and "PADHI" and "PADLO" define which bits - low or high,
  22.  * in the incomplete high byte, are filled with padding bits.
  23.  *
  24.  * The bus formats are grouped by type, bus_width, bits per component, samples
  25.  * per pixel and order of subsamples. Numerical values are sorted using generic
  26.  * numerical sort order (8 thus comes before 10).
  27.  *
  28.  * As their value can't change when a new bus format is inserted in the
  29.  * enumeration, the bus formats are explicitly given a numerical value. The next
  30.  * free values for each category are listed below, update them when inserting
  31.  * new pixel codes.
  32.  */
  33.  
  34. #define MEDIA_BUS_FMT_FIXED                     0x0001
  35.  
  36. /* RGB - next is        0x1018 */
  37. #define MEDIA_BUS_FMT_RGB444_1X12               0x1016
  38. #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE       0x1001
  39. #define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE       0x1002
  40. #define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE       0x1003
  41. #define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE       0x1004
  42. #define MEDIA_BUS_FMT_RGB565_1X16               0x1017
  43. #define MEDIA_BUS_FMT_BGR565_2X8_BE             0x1005
  44. #define MEDIA_BUS_FMT_BGR565_2X8_LE             0x1006
  45. #define MEDIA_BUS_FMT_RGB565_2X8_BE             0x1007
  46. #define MEDIA_BUS_FMT_RGB565_2X8_LE             0x1008
  47. #define MEDIA_BUS_FMT_RGB666_1X18               0x1009
  48. #define MEDIA_BUS_FMT_RBG888_1X24               0x100e
  49. #define MEDIA_BUS_FMT_RGB666_1X24_CPADHI        0x1015
  50. #define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG         0x1010
  51. #define MEDIA_BUS_FMT_BGR888_1X24               0x1013
  52. #define MEDIA_BUS_FMT_GBR888_1X24               0x1014
  53. #define MEDIA_BUS_FMT_RGB888_1X24               0x100a
  54. #define MEDIA_BUS_FMT_RGB888_2X12_BE            0x100b
  55. #define MEDIA_BUS_FMT_RGB888_2X12_LE            0x100c
  56. #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG         0x1011
  57. #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA        0x1012
  58. #define MEDIA_BUS_FMT_ARGB8888_1X32             0x100d
  59. #define MEDIA_BUS_FMT_RGB888_1X32_PADHI         0x100f
  60.  
  61. /* YUV (including grey) - next is       0x2026 */
  62. #define MEDIA_BUS_FMT_Y8_1X8                    0x2001
  63. #define MEDIA_BUS_FMT_UV8_1X8                   0x2015
  64. #define MEDIA_BUS_FMT_UYVY8_1_5X8               0x2002
  65. #define MEDIA_BUS_FMT_VYUY8_1_5X8               0x2003
  66. #define MEDIA_BUS_FMT_YUYV8_1_5X8               0x2004
  67. #define MEDIA_BUS_FMT_YVYU8_1_5X8               0x2005
  68. #define MEDIA_BUS_FMT_UYVY8_2X8                 0x2006
  69. #define MEDIA_BUS_FMT_VYUY8_2X8                 0x2007
  70. #define MEDIA_BUS_FMT_YUYV8_2X8                 0x2008
  71. #define MEDIA_BUS_FMT_YVYU8_2X8                 0x2009
  72. #define MEDIA_BUS_FMT_Y10_1X10                  0x200a
  73. #define MEDIA_BUS_FMT_UYVY10_2X10               0x2018
  74. #define MEDIA_BUS_FMT_VYUY10_2X10               0x2019
  75. #define MEDIA_BUS_FMT_YUYV10_2X10               0x200b
  76. #define MEDIA_BUS_FMT_YVYU10_2X10               0x200c
  77. #define MEDIA_BUS_FMT_Y12_1X12                  0x2013
  78. #define MEDIA_BUS_FMT_UYVY12_2X12               0x201c
  79. #define MEDIA_BUS_FMT_VYUY12_2X12               0x201d
  80. #define MEDIA_BUS_FMT_YUYV12_2X12               0x201e
  81. #define MEDIA_BUS_FMT_YVYU12_2X12               0x201f
  82. #define MEDIA_BUS_FMT_UYVY8_1X16                0x200f
  83. #define MEDIA_BUS_FMT_VYUY8_1X16                0x2010
  84. #define MEDIA_BUS_FMT_YUYV8_1X16                0x2011
  85. #define MEDIA_BUS_FMT_YVYU8_1X16                0x2012
  86. #define MEDIA_BUS_FMT_YDYUYDYV8_1X16            0x2014
  87. #define MEDIA_BUS_FMT_UYVY10_1X20               0x201a
  88. #define MEDIA_BUS_FMT_VYUY10_1X20               0x201b
  89. #define MEDIA_BUS_FMT_YUYV10_1X20               0x200d
  90. #define MEDIA_BUS_FMT_YVYU10_1X20               0x200e
  91. #define MEDIA_BUS_FMT_VUY8_1X24                 0x2024
  92. #define MEDIA_BUS_FMT_YUV8_1X24                 0x2025
  93. #define MEDIA_BUS_FMT_UYVY12_1X24               0x2020
  94. #define MEDIA_BUS_FMT_VYUY12_1X24               0x2021
  95. #define MEDIA_BUS_FMT_YUYV12_1X24               0x2022
  96. #define MEDIA_BUS_FMT_YVYU12_1X24               0x2023
  97. #define MEDIA_BUS_FMT_YUV10_1X30                0x2016
  98. #define MEDIA_BUS_FMT_AYUV8_1X32                0x2017
  99.  
  100. /* Bayer - next is      0x3019 */
  101. #define MEDIA_BUS_FMT_SBGGR8_1X8                0x3001
  102. #define MEDIA_BUS_FMT_SGBRG8_1X8                0x3013
  103. #define MEDIA_BUS_FMT_SGRBG8_1X8                0x3002
  104. #define MEDIA_BUS_FMT_SRGGB8_1X8                0x3014
  105. #define MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8         0x3015
  106. #define MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8         0x3016
  107. #define MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8         0x3017
  108. #define MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8         0x3018
  109. #define MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8         0x300b
  110. #define MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8         0x300c
  111. #define MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8         0x3009
  112. #define MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8         0x300d
  113. #define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE      0x3003
  114. #define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE      0x3004
  115. #define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE      0x3005
  116. #define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE      0x3006
  117. #define MEDIA_BUS_FMT_SBGGR10_1X10              0x3007
  118. #define MEDIA_BUS_FMT_SGBRG10_1X10              0x300e
  119. #define MEDIA_BUS_FMT_SGRBG10_1X10              0x300a
  120. #define MEDIA_BUS_FMT_SRGGB10_1X10              0x300f
  121. #define MEDIA_BUS_FMT_SBGGR12_1X12              0x3008
  122. #define MEDIA_BUS_FMT_SGBRG12_1X12              0x3010
  123. #define MEDIA_BUS_FMT_SGRBG12_1X12              0x3011
  124. #define MEDIA_BUS_FMT_SRGGB12_1X12              0x3012
  125.  
  126. /* JPEG compressed formats - next is    0x4002 */
  127. #define MEDIA_BUS_FMT_JPEG_1X8                  0x4001
  128.  
  129. /* Vendor specific formats - next is    0x5002 */
  130.  
  131. /* S5C73M3 sensor specific interleaved UYVY and JPEG */
  132. #define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8         0x5001
  133.  
  134. /* HSV - next is        0x6002 */
  135. #define MEDIA_BUS_FMT_AHSV8888_1X32             0x6001
  136.  
  137. #endif /* __LINUX_MEDIA_BUS_FORMAT_H */
  138.