Bouffalo SDK  1.0
Bouffalolab Software Development Kit
bflb_cam.h
Go to the documentation of this file.
1 #ifndef _BFLB_CAM_H
2 #define _BFLB_CAM_H
3 
4 #include "bflb_core.h"
5 
17 #define CAM_INPUT_FORMAT_YUV422_YUYV 0
18 #define CAM_INPUT_FORMAT_YUV422_YVYU 1
19 #define CAM_INPUT_FORMAT_YUV422_UYVY 2
20 #define CAM_INPUT_FORMAT_YUV422_VYUY 3
21 #define CAM_INPUT_FORMAT_GRAY 4
22 #define CAM_INPUT_FORMAT_RGB565 5
23 #define CAM_INPUT_FORMAT_BGR565 6
24 #define CAM_INPUT_FORMAT_RGB888 7
25 #define CAM_INPUT_FORMAT_BGR888 8
26 
33 #define CAM_OUTPUT_FORMAT_AUTO 0
34 #define CAM_OUTPUT_FORMAT_YUV422 1
35 #define CAM_OUTPUT_FORMAT_GRAY 2
36 #define CAM_OUTPUT_FORMAT_YUV422_UV 3
37 #define CAM_OUTPUT_FORMAT_YUV420_UV 4
38 #define CAM_OUTPUT_FORMAT_RGB565_OR_BGR565 5
39 #define CAM_OUTPUT_FORMAT_RGB888_OR_BGR888 6
40 #if !defined(BL702)
41 #define CAM_OUTPUT_FORMAT_RGB888_TO_RGB565 7
42 #define CAM_OUTPUT_FORMAT_RGB888_TO_BGR565 8
43 #define CAM_OUTPUT_FORMAT_RGB888_TO_RGBA8888 9
44 #endif
45 
53 #if defined(BL702)
54 #define CAM_INTSTS_NORMAL (1 << 0)
55 #define CAM_INTSTS_MEMORY_OVERWRITE (1 << 2)
56 #define CAM_INTSTS_FRAME_OVERWRITE (1 << 4)
57 #define CAM_INTSTS_FIFO_OVERWRITE (1 << 6)
58 #define CAM_INTSTS_HSYNC_MISMATCH (1 << 8)
59 #define CAM_INTSTS_VSYNC_MISMATCH (1 << 9)
60 #else
61 #define CAM_INTSTS_NORMAL (1 << 12)
62 #define CAM_INTSTS_MEMORY_OVERWRITE (1 << 13)
63 #define CAM_INTSTS_FRAME_OVERWRITE (1 << 14)
64 #define CAM_INTSTS_FIFO_OVERWRITE (1 << 15)
65 #define CAM_INTSTS_HSYNC_MISMATCH (1 << 21)
66 #define CAM_INTSTS_VSYNC_MISMATCH (1 << 22)
67 #endif
68 
75 #if defined(BL702)
76 #define CAM_INTMASK_NORMAL (1 << 0)
77 #define CAM_INTMASK_MEMORY_OVERWRITE (1 << 2)
78 #define CAM_INTMASK_FRAME_OVERWRITE (1 << 3)
79 #define CAM_INTMASK_FIFO_OVERWRITE (1 << 4)
80 #define CAM_INTMASK_HSYNC_MISMATCH (1 << 5)
81 #define CAM_INTMASK_VSYNC_MISMATCH (1 << 6)
82 #else
83 #define CAM_INTMASK_NORMAL (1 << 8)
84 #define CAM_INTMASK_MEMORY_OVERWRITE (1 << 9)
85 #define CAM_INTMASK_FRAME_OVERWRITE (1 << 10)
86 #define CAM_INTMASK_FIFO_OVERWRITE (1 << 11)
87 #define CAM_INTMASK_HSYNC_MISMATCH (1 << 6)
88 #define CAM_INTMASK_VSYNC_MISMATCH (1 << 7)
89 #endif
90 
97 #define CAM_INTCLR_NORMAL (1 << 4)
98 #define CAM_INTCLR_MEMORY_OVERWRITE (1 << 5)
99 #define CAM_INTCLR_FRAME_OVERWRITE (1 << 6)
100 #define CAM_INTCLR_FIFO_OVERWRITE (1 << 7)
101 #define CAM_INTCLR_HSYNC_MISMATCH (1 << 8)
102 #define CAM_INTCLR_VSYNC_MISMATCH (1 << 9)
103 
110 #define CAM_POLARITY_ACTIVE_LOW 0
111 #define CAM_POLARITY_ACTIVE_HIGH 1
112 
119 #define CAM_INPUT_SOURCE_DVP 0
120 #if defined(BL808)
121 #define CAM_INPUT_SOURCE_CSI 1
122 #endif
123 
130 #define CAM_BURST_INCR1 0
131 #define CAM_BURST_INCR4 1
132 #define CAM_BURST_INCR8 2
133 #define CAM_BURST_INCR16 3
134 #if !defined(BL702)
135 #define CAM_BURST_INCR32 5
136 #define CAM_BURST_INCR64 6
137 #endif
138 
145 #define CAM_CMD_SET_VSYNC_POLARITY 1
146 #define CAM_CMD_SET_HSYNC_POLARITY 2
147 #define CAM_CMD_SET_BURST 3
148 #if !defined(BL702)
149 #define CAM_CMD_SET_RGBA8888_ALPHA 4
150 #define CAM_CMD_GET_FRAME_ID 5
151 #endif
152 #define CAM_CMD_WRAP_MODE 6
153 #define CAM_CMD_COUNT_TRIGGER_NORMAL_INT 7
154 #if !defined(BL702)
155 #define CAM_CMD_FRAME_ID_RESET 8
156 #define CAM_CMD_INVERSE_VSYNC_POLARITY 9
157 #define CAM_CMD_INVERSE_HSYNC_POLARITY 10
158 #endif
159 
179  uint8_t input_format;
180  uint16_t resolution_x;
181  uint16_t resolution_y;
182  uint16_t h_blank;
183  uint32_t pixel_clock;
185  uint8_t input_source;
186  uint8_t output_format;
187  uint32_t output_bufaddr;
188  uint32_t output_bufsize;
189 };
190 
191 #ifdef __cplusplus
192 extern "C" {
193 #endif
194 
201 void bflb_cam_init(struct bflb_device_s *dev, const struct bflb_cam_config_s *config);
202 
208 void bflb_cam_start(struct bflb_device_s *dev);
209 
215 void bflb_cam_stop(struct bflb_device_s *dev);
216 
224 void bflb_cam_int_mask(struct bflb_device_s *dev, uint32_t int_type, bool mask);
225 
232 void bflb_cam_int_clear(struct bflb_device_s *dev, uint32_t int_type);
233 
241 void bflb_cam_crop_vsync(struct bflb_device_s *dev, uint16_t start_line, uint16_t end_line);
242 
250 void bflb_cam_crop_hsync(struct bflb_device_s *dev, uint16_t start_pixel, uint16_t end_pixel);
251 
257 void bflb_cam_pop_one_frame(struct bflb_device_s *dev);
258 
259 #if !defined(BL702)
260 
266 void bflb_cam_swap_input_yu_order(struct bflb_device_s *dev, bool enable);
267 
275 void bflb_cam_filter_frame_period(struct bflb_device_s *dev, uint8_t frame_count, uint32_t frame_valid);
276 #endif
277 
284 uint8_t bflb_cam_get_frame_count(struct bflb_device_s *dev);
285 
293 uint32_t bflb_cam_get_frame_info(struct bflb_device_s *dev, uint8_t **pic);
294 
301 uint32_t bflb_cam_get_intstatus(struct bflb_device_s *dev);
302 
311 int bflb_cam_feature_control(struct bflb_device_s *dev, int cmd, size_t arg);
312 
313 #ifdef __cplusplus
314 }
315 #endif
316 
325 #endif
uint32_t bflb_cam_get_frame_info(struct bflb_device_s *dev, uint8_t **pic)
Get frame information.
void bflb_cam_swap_input_yu_order(struct bflb_device_s *dev, bool enable)
Swap input order of y and uv.
uint32_t output_bufaddr
Definition: bflb_cam.h:187
uint16_t h_blank
Definition: bflb_cam.h:182
uint32_t bflb_cam_get_intstatus(struct bflb_device_s *dev)
Get interrupt status.
uint8_t input_source
Definition: bflb_cam.h:185
uint16_t resolution_x
Definition: bflb_cam.h:180
void bflb_cam_crop_vsync(struct bflb_device_s *dev, uint16_t start_line, uint16_t end_line)
Crop vsync.
void bflb_cam_init(struct bflb_device_s *dev, const struct bflb_cam_config_s *config)
Initialize cam.
void bflb_cam_int_mask(struct bflb_device_s *dev, uint32_t int_type, bool mask)
Mask or unmask cam interrupt.
uint16_t resolution_y
Definition: bflb_cam.h:181
void bflb_cam_pop_one_frame(struct bflb_device_s *dev)
Pop one frame.
uint32_t pixel_clock
Definition: bflb_cam.h:183
uint8_t bflb_cam_get_frame_count(struct bflb_device_s *dev)
Get frame count.
void bflb_cam_stop(struct bflb_device_s *dev)
Disable cam.
void bflb_cam_int_clear(struct bflb_device_s *dev, uint32_t int_type)
Clear cam interrupt.
uint8_t output_format
Definition: bflb_cam.h:186
void bflb_cam_crop_hsync(struct bflb_device_s *dev, uint16_t start_pixel, uint16_t end_pixel)
Crop hsync.
void bflb_cam_filter_frame_period(struct bflb_device_s *dev, uint8_t frame_count, uint32_t frame_valid)
Set frame filter, if frame_count = 3, frame_valid = 101b, second frame will be dropped every 3 frames...
uint8_t input_format
Definition: bflb_cam.h:179
int bflb_cam_feature_control(struct bflb_device_s *dev, int cmd, size_t arg)
Control cam feature.
uint32_t output_bufsize
Definition: bflb_cam.h:188
CAM configuration structure.
Definition: bflb_cam.h:178
void bflb_cam_start(struct bflb_device_s *dev)
Enable cam.