fb.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. /*
  2. * =====================================================================================
  3. *
  4. * Filename: fb.h
  5. *
  6. * Description: misc definition for display pixel format.
  7. *
  8. * Version: Melis3.0
  9. * Create: 2017-11-03 11:38:28
  10. * Revision: none
  11. * Compiler: gcc version 6.3.0 (crosstool-NG crosstool-ng-1.23.0)
  12. *
  13. * Author: caozilong@allwinnertech.com
  14. * Organization: BU1-PSW
  15. * Last Modified: 2019-03-29 17:49:54
  16. *
  17. * =====================================================================================
  18. */
  19. #ifndef FRAMEBUFFER_H
  20. #define FRAMEBUFFER_H
  21. #include <typedef.h>
  22. #include <kconfig.h>
  23. typedef enum __PIXEL_YUVFMT
  24. {
  25. PIXEL_YUV444 = 0x71,
  26. PIXEL_YUV422,
  27. PIXEL_YUV420,
  28. PIXEL_YUV411,
  29. PIXEL_CSIRGB,
  30. PIXEL_OTHERFMT,
  31. } __pixel_yuvfmt_t;
  32. typedef enum __YUV_MODE
  33. {
  34. YUV_MOD_INTERLEAVED = 0,
  35. YUV_MOD_NON_MB_PLANAR,
  36. YUV_MOD_MB_PLANAR,
  37. YUV_MOD_UV_NON_MB_COMBINED,
  38. YUV_MOD_UV_MB_COMBINED
  39. } __yuv_mod_t;
  40. typedef enum
  41. {
  42. YUV_SEQ_UYVY = 0,
  43. YUV_SEQ_YUYV,
  44. YUV_SEQ_VYUY,
  45. YUV_SEQ_YVYU,
  46. YUV_SEQ_AYUV = 0x10,
  47. YUV_SEQ_VUYA,
  48. YUV_SEQ_UVUV = 0x20,
  49. YUV_SEQ_VUVU,
  50. YUV_SEQ_OTHRS = 0xff,
  51. } __yuv_seq_t;
  52. typedef struct
  53. {
  54. __u32 width;
  55. __u32 height;
  56. } SIZE;
  57. typedef enum
  58. {
  59. BT601 = 0,
  60. BT709,
  61. YCC,
  62. VXYCC,
  63. MONO
  64. } __cs_mode_t;
  65. typedef struct
  66. {
  67. __s32 x;
  68. __s32 y;
  69. __u32 width;
  70. __u32 height;
  71. } RECT;
  72. typedef enum
  73. {
  74. FB_TYPE_RGB = 0,
  75. FB_TYPE_YUV = 1
  76. } __fb_type_t;
  77. typedef enum __PIXEL_RGBFMT
  78. {
  79. PIXEL_MONO_1BPP = 0x51,
  80. PIXEL_MONO_2BPP,
  81. PIXEL_MONO_4BPP,
  82. PIXEL_MONO_8BPP,
  83. PIXEL_COLOR_RGB655,
  84. PIXEL_COLOR_RGB565,
  85. PIXEL_COLOR_RGB556,
  86. PIXEL_COLOR_ARGB1555,
  87. PIXEL_COLOR_RGBA5551,
  88. PIXEL_COLOR_RGB0888,
  89. PIXEL_COLOR_ARGB8888,
  90. } __pixel_rgbfmt_t;
  91. typedef enum
  92. {
  93. RGB_SEQ_ARGB = 0x00,//for 32bpp
  94. RGB_SEQ_BRGA = 0x02,
  95. RGB_SEQ_P10 = 0x10,//for 16bpp
  96. RGB_SEQ_P01 = 0x11,
  97. RGB_SEQ_P3210 = 0x20,//for 8bpp
  98. RGB_SEQ_P0123 = 0x21,
  99. RGB_SEQ_P76543210 = 0x30,//for 4bpp
  100. RGB_SEQ_P67452301 = 0x31,
  101. RGB_SEQ_P10325476 = 0x32,
  102. RGB_SEQ_P01234567 = 0x33,
  103. RGB_SEQ_2BPP_BIG_BIG = 0x40,//for 2bpp
  104. RGB_SEQ_2BPP_BIG_LITTER = 0x41,
  105. RGB_SEQ_2BPP_LITTER_BIG = 0x42,
  106. RGB_SEQ_2BPP_LITTER_LITTER = 0x43,
  107. RGB_SEQ_1BPP_BIG_BIG = 0x50,//for 1bpp
  108. RGB_SEQ_1BPP_BIG_LITTER = 0x51,
  109. RGB_SEQ_1BPP_LITTER_BIG = 0x52,
  110. RGB_SEQ_1BPP_LITTER_LITTER = 0x53,
  111. } __rgb_seq_t;
  112. typedef struct
  113. {
  114. __fb_type_t type;
  115. union
  116. {
  117. struct
  118. {
  119. __pixel_rgbfmt_t pixelfmt;
  120. __bool br_swap;
  121. __rgb_seq_t pixseq;
  122. struct
  123. {
  124. void *addr;
  125. __u32 size;
  126. } palette;
  127. } rgb;
  128. struct
  129. {
  130. __pixel_yuvfmt_t pixelfmt;
  131. __yuv_mod_t mod;
  132. __yuv_seq_t yuvseq;
  133. } yuv;
  134. } fmt;
  135. __cs_mode_t cs_mode;
  136. } __fb_format_t;
  137. typedef struct __FB
  138. {
  139. SIZE size;
  140. void *addr[3];
  141. __fb_format_t fmt;
  142. } FB;
  143. typedef struct
  144. {
  145. __u8 alpha;
  146. __u8 red;
  147. __u8 green;
  148. __u8 blue;
  149. } COLOR; /* 32-bit (ARGB) color */
  150. typedef struct
  151. {
  152. __s32 x;
  153. __s32 y;
  154. } OFFSET; /* coordinate (x, y) */
  155. typedef COLOR __color_t;
  156. typedef RECT __rect_t;
  157. typedef OFFSET __pos_t;
  158. typedef SIZE __rectsz_t;
  159. #endif /*FRAMEBUFFER_H*/