HPM SDK
HPMicro Software Development Kit
hpm_display_common.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_DISPLAY_COMMON_H
9 #define HPM_DISPLAY_COMMON_H
10 
11 #include "hpm_common.h"
12 
41 
45 typedef enum display_pixel_format {
56 
60 typedef enum display_byteorder {
66 
70 typedef enum display_yuv_format {
76 
80 typedef union display_color_32b {
81  uint32_t u;
82  struct {
83  uint8_t b;
84  uint8_t g;
85  uint8_t r;
86  uint8_t alpha;
87  };
89 
93 typedef enum display_alpha_op {
98 
103  uint8_t dst_alpha;
104  uint8_t src_alpha;
109 
113 typedef struct dispaly_yuv2rgb_coef {
114  uint16_t c0;
115  uint16_t c1;
116  uint16_t c2;
117  uint16_t c3;
118  uint16_t c4;
119  uint16_t uv_offset;
120  uint16_t y_offset;
122 
126 typedef struct display_yuv2rgb_config {
127  bool enable;
131 
135 typedef struct display_rgb2yuv_config {
136  bool enable;
138  uint16_t c0;
139  uint16_t c1;
140  uint16_t c2;
141  uint16_t c3;
142  uint16_t c4;
143  uint16_t c5;
144  uint16_t c6;
145  uint16_t c7;
146  uint16_t c8;
147  uint16_t uv_offset;
148  uint16_t y_offset;
150 
151 typedef enum display_buf_format {
161 
162 typedef struct display_buf {
163  void *buf;
164  uint16_t width;
165  uint16_t height;
166  uint32_t stride;
168  struct {
170  uint8_t val;
171  } alpha;
173 
174 #ifdef __cplusplus
175 extern "C" {
176 #endif
177 
185 static inline
187 {
188  switch (format) {
190  return 32;
192  return 16;
194  return 16;
196  return 16;
198  return 8;
200  return 8;
201  default:
202  return 0;
203  }
204 }
205 
214 {
215  switch (format) {
217  return true;
219  return true;
220  default:
221  return false;
222  }
223 }
224 
232 static inline
234 {
235  return display_get_pixel_size_in_bit(format) >> 3;
236 }
237 
246 static inline
248  uint32_t width_in_pixel)
249 {
250  return width_in_pixel * (display_get_pixel_size_in_bit(format) >> 3);
251 }
252 
258 #ifdef __cplusplus
259 }
260 #endif
261 #endif /* HPM_DISPLAY_COMMON_H */
display_buf_format
Definition: hpm_display_common.h:151
struct display_yuv2rgb_config display_yuv2rgb_config_t
display yuv to rgb format conversion config
display_alpha_op
display data alpha value usage option
Definition: hpm_display_common.h:93
enum display_alpha_op display_alpha_op_t
display data alpha value usage option
display_byteorder
display data byte order
Definition: hpm_display_common.h:60
struct display_buf display_buf_t
enum display_pixel_format display_pixel_format_t
display pixel format
static uint32_t display_get_pitch_length_in_byte(display_pixel_format_t format, uint32_t width_in_pixel)
Display get pitch length in byte.
Definition: hpm_display_common.h:247
display_yuv_format
display yuv format
Definition: hpm_display_common.h:70
static bool display_pixel_format_is_yuv_format(display_pixel_format_t format)
Check whether the pixel data is yuv format.
Definition: hpm_display_common.h:213
struct dispaly_alphablend_option display_alphablend_option_t
display data alphablend option
enum display_yuv_format display_yuv_format_t
display yuv format
static uint8_t display_get_pixel_size_in_bit(display_pixel_format_t format)
Display get pixel size in bit.
Definition: hpm_display_common.h:186
display_alphablend_mode
display alphablend mode
Definition: hpm_display_common.h:23
struct display_rgb2yuv_config display_rgb2yuv_config_t
display rgb to yuv format conversion config
enum display_buf_format display_buf_format_t
display_pixel_format
display pixel format
Definition: hpm_display_common.h:45
enum display_alphablend_mode display_alphablend_mode_t
display alphablend mode
struct dispaly_yuv2rgb_coef display_yuv2rgb_coef_t
display yuv to rgb format conversion coefficient
union display_color_32b display_color_32b_t
display data 32 bits argb
enum display_byteorder display_byteorder_t
display data byte order
static uint8_t display_get_pixel_size_in_byte(display_pixel_format_t format)
Display get pixel size in byte.
Definition: hpm_display_common.h:233
@ display_buf_format_argb8888
Definition: hpm_display_common.h:152
@ display_buf_format_y8
Definition: hpm_display_common.h:158
@ display_buf_format_yuyv
Definition: hpm_display_common.h:156
@ display_buf_format_bgra8888
Definition: hpm_display_common.h:153
@ display_buf_format_rgb565_swap
Definition: hpm_display_common.h:155
@ display_buf_format_uyvy
Definition: hpm_display_common.h:157
@ display_buf_format_max
Definition: hpm_display_common.h:159
@ display_buf_format_rgb565
Definition: hpm_display_common.h:154
@ display_alpha_op_invalid
Definition: hpm_display_common.h:94
@ display_alpha_op_scale
Definition: hpm_display_common.h:96
@ display_alpha_op_override
Definition: hpm_display_common.h:95
@ display_byteorder_a0a1a2a3
Definition: hpm_display_common.h:64
@ display_byteorder_a3a2a1a0
Definition: hpm_display_common.h:61
@ display_byteorder_a2a3a0a1
Definition: hpm_display_common.h:62
@ display_byteorder_a1a0a3a2
Definition: hpm_display_common.h:63
@ display_yuv_mode_422_v1y1u1y2
Definition: hpm_display_common.h:72
@ display_yuv_mode_422_y1v1y2u1
Definition: hpm_display_common.h:74
@ display_yuv_mode_422_u1y1v1y2
Definition: hpm_display_common.h:71
@ display_yuv_mode_422_y1u1y2v1
Definition: hpm_display_common.h:73
@ display_alphablend_mode_src_at_top
Definition: hpm_display_common.h:33
@ display_alphablend_mode_modulate
Definition: hpm_display_common.h:37
@ display_alphablend_mode_src_in
Definition: hpm_display_common.h:29
@ display_alphablend_mode_src_over
Definition: hpm_display_common.h:27
@ display_alphablend_mode_dst_org
Definition: hpm_display_common.h:39
@ display_alphablend_mode_dst
Definition: hpm_display_common.h:26
@ display_alphablend_mode_xor
Definition: hpm_display_common.h:35
@ display_alphablend_mode_clear
Definition: hpm_display_common.h:24
@ display_alphablend_mode_dst_over
Definition: hpm_display_common.h:28
@ display_alphablend_mode_src_org
Definition: hpm_display_common.h:38
@ display_alphablend_mode_plus
Definition: hpm_display_common.h:36
@ display_alphablend_mode_src
Definition: hpm_display_common.h:25
@ display_alphablend_mode_src_out
Definition: hpm_display_common.h:31
@ display_alphablend_mode_dst_at_top
Definition: hpm_display_common.h:34
@ display_alphablend_mode_dst_out
Definition: hpm_display_common.h:32
@ display_alphablend_mode_dst_in
Definition: hpm_display_common.h:30
@ display_pixel_format_gbr422
Definition: hpm_display_common.h:50
@ display_pixel_format_rgb565
Definition: hpm_display_common.h:47
@ display_pixel_format_y8
Definition: hpm_display_common.h:53
@ display_pixel_format_argb8888
Definition: hpm_display_common.h:46
@ display_pixel_format_raw8
Definition: hpm_display_common.h:54
@ display_pixel_format_yuv422
Definition: hpm_display_common.h:51
@ display_pixel_format_ycbcr422
Definition: hpm_display_common.h:52
@ display_pixel_format_rgb555
Definition: hpm_display_common.h:48
@ display_pixel_format_rgb444
Definition: hpm_display_common.h:49
display data alphablend option
Definition: hpm_display_common.h:102
uint8_t src_alpha
Definition: hpm_display_common.h:104
display_alpha_op_t src_alpha_op
Definition: hpm_display_common.h:106
uint8_t dst_alpha
Definition: hpm_display_common.h:103
display_alphablend_mode_t mode
Definition: hpm_display_common.h:107
display_alpha_op_t dst_alpha_op
Definition: hpm_display_common.h:105
display yuv to rgb format conversion coefficient
Definition: hpm_display_common.h:113
uint16_t uv_offset
Definition: hpm_display_common.h:119
uint16_t c0
Definition: hpm_display_common.h:114
uint16_t y_offset
Definition: hpm_display_common.h:120
uint16_t c3
Definition: hpm_display_common.h:117
uint16_t c2
Definition: hpm_display_common.h:116
uint16_t c4
Definition: hpm_display_common.h:118
uint16_t c1
Definition: hpm_display_common.h:115
Definition: hpm_display_common.h:162
uint16_t width
Definition: hpm_display_common.h:164
void * buf
Definition: hpm_display_common.h:163
uint16_t height
Definition: hpm_display_common.h:165
uint32_t stride
Definition: hpm_display_common.h:166
display_alpha_op_t op
Definition: hpm_display_common.h:169
display_buf_format_t format
Definition: hpm_display_common.h:167
uint8_t val
Definition: hpm_display_common.h:170
struct display_buf::@24 alpha
display rgb to yuv format conversion config
Definition: hpm_display_common.h:135
uint16_t c8
Definition: hpm_display_common.h:146
uint16_t c7
Definition: hpm_display_common.h:145
uint16_t y_offset
Definition: hpm_display_common.h:148
uint16_t c3
Definition: hpm_display_common.h:141
bool ycbcr_mode
Definition: hpm_display_common.h:137
bool enable
Definition: hpm_display_common.h:136
uint16_t c1
Definition: hpm_display_common.h:139
uint16_t c2
Definition: hpm_display_common.h:140
uint16_t c5
Definition: hpm_display_common.h:143
uint16_t c0
Definition: hpm_display_common.h:138
uint16_t c4
Definition: hpm_display_common.h:142
uint16_t uv_offset
Definition: hpm_display_common.h:147
uint16_t c6
Definition: hpm_display_common.h:144
display yuv to rgb format conversion config
Definition: hpm_display_common.h:126
display_yuv2rgb_coef_t yuv2rgb_coef
Definition: hpm_display_common.h:129
bool enable
Definition: hpm_display_common.h:127
bool ycbcr_mode
Definition: hpm_display_common.h:128
display data 32 bits argb
Definition: hpm_display_common.h:80
uint8_t b
Definition: hpm_display_common.h:83
uint32_t u
Definition: hpm_display_common.h:81
uint8_t alpha
Definition: hpm_display_common.h:86
uint8_t r
Definition: hpm_display_common.h:85
uint8_t g
Definition: hpm_display_common.h:84