PicoCamera 0.2.0
Camera library for RP2040 with an esp32-camera compatible API
GitHub
载入中...
搜索中...
未找到
sensor.h
浏览该文件的文档.
1/*
2 * This file is part of the PicoCamera project.
3 * https://github.com/umeiko/PicoCamera
4 *
5 * Author: umeko <umeko@stu.xmu.edu.cn>
6 * License: MIT
7 */
8
16#pragma once
17
18#include <stdint.h>
19#include <stdbool.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25typedef enum {
26 PIXFORMAT_RGB565, // 2 bytes per pixel
27 PIXFORMAT_YUV422, // 2 bytes per pixel (YUYV)
28 PIXFORMAT_GRAYSCALE,// 1 byte per pixel (Y only)
29 PIXFORMAT_JPEG, // compressed stream
30 PIXFORMAT_INVALID
31} pixformat_t;
32
33typedef enum {
34 FRAMESIZE_96X96, // 96x96
35 FRAMESIZE_QQVGA, // 160x120
36 FRAMESIZE_QCIF, // 176x144
37 FRAMESIZE_HQVGA, // 240x176
38 FRAMESIZE_240X240, // 240x240
39 FRAMESIZE_QVGA, // 320x240
40 FRAMESIZE_CIF, // 400x296
41 FRAMESIZE_HVGA, // 480x320
42 FRAMESIZE_VGA, // 640x480
43 FRAMESIZE_SVGA, // 800x600
44 FRAMESIZE_XGA, // 1024x768
45 FRAMESIZE_HD, // 1280x720
46 FRAMESIZE_SXGA, // 1280x1024
47 FRAMESIZE_UXGA, // 1600x1200
48 FRAMESIZE_QXGA, // 2048x1536
49 FRAMESIZE_QSXGA, // 2592x1944
50 FRAMESIZE_INVALID
51} framesize_t;
52
53typedef enum {
54 ASPECT_RATIO_4X3,
55 ASPECT_RATIO_3X2,
56 ASPECT_RATIO_16X10,
57 ASPECT_RATIO_5X3,
58 ASPECT_RATIO_16X9,
59 ASPECT_RATIO_21X9,
60 ASPECT_RATIO_5X4,
61 ASPECT_RATIO_1X1,
62 ASPECT_RATIO_9X16
63} aspect_ratio_t;
64
65typedef enum {
66 GAINCEILING_2X,
67 GAINCEILING_4X,
68 GAINCEILING_8X,
69 GAINCEILING_16X,
70 GAINCEILING_32X,
71 GAINCEILING_64X,
72 GAINCEILING_128X,
73} gainceiling_t;
74
75typedef struct {
76 const uint16_t width;
77 const uint16_t height;
78 const aspect_ratio_t aspect_ratio;
80
82static const resolution_info_t resolution[FRAMESIZE_INVALID] = {
83 { 96, 96, ASPECT_RATIO_1X1 }, /* 96x96 */
84 { 160, 120, ASPECT_RATIO_4X3 }, /* QQVGA */
85 { 176, 144, ASPECT_RATIO_5X4 }, /* QCIF */
86 { 240, 176, ASPECT_RATIO_4X3 }, /* HQVGA */
87 { 240, 240, ASPECT_RATIO_1X1 }, /* 240x240 */
88 { 320, 240, ASPECT_RATIO_4X3 }, /* QVGA */
89 { 400, 296, ASPECT_RATIO_4X3 }, /* CIF */
90 { 480, 320, ASPECT_RATIO_3X2 }, /* HVGA */
91 { 640, 480, ASPECT_RATIO_4X3 }, /* VGA */
92 { 800, 600, ASPECT_RATIO_4X3 }, /* SVGA */
93 { 1024, 768, ASPECT_RATIO_4X3 }, /* XGA */
94 { 1280, 720, ASPECT_RATIO_16X9 }, /* HD */
95 { 1280, 1024, ASPECT_RATIO_5X4 }, /* SXGA */
96 { 1600, 1200, ASPECT_RATIO_4X3 }, /* UXGA */
97 { 2048, 1536, ASPECT_RATIO_4X3 }, /* QXGA */
98 { 2592, 1944, ASPECT_RATIO_4X3 }, /* QSXGA */
99};
100
101typedef struct {
102 uint8_t MIDH;
103 uint8_t MIDL;
104 uint16_t PID;
105 uint8_t VER;
107
108typedef struct {
109 const char *name;
110 const uint8_t sccb_addr;
111 const uint16_t pid;
112 const framesize_t max_size;
113 const bool support_jpeg;
115
116typedef struct sensor_s sensor_t;
117
124struct sensor_s {
125 sensor_id_t id; //< filled by detect()
126 uint8_t sccb_addr; //< 7-bit SCCB slave address
127
128 int (*reset)(sensor_t *sensor);
129 int (*init_status)(sensor_t *sensor);
130 int (*set_pixformat)(sensor_t *sensor, pixformat_t pixformat);
131 int (*set_framesize)(sensor_t *sensor, framesize_t framesize);
132 int (*set_brightness)(sensor_t *sensor, int level);
133 int (*set_contrast)(sensor_t *sensor, int level);
134 int (*set_saturation)(sensor_t *sensor, int level);
135 int (*set_sharpness)(sensor_t *sensor, int level);
136 int (*set_gainceiling)(sensor_t *sensor, gainceiling_t gainceiling);
137 int (*set_quality)(sensor_t *sensor, int quality);
138 int (*set_colorbar)(sensor_t *sensor, int enable);
139 int (*set_whitebal)(sensor_t *sensor, int enable);
140 int (*set_gain_ctrl)(sensor_t *sensor, int enable);
141 int (*set_exposure_ctrl)(sensor_t *sensor, int enable);
142 int (*set_hmirror)(sensor_t *sensor, int enable);
143 int (*set_vflip)(sensor_t *sensor, int enable);
144 int (*set_special_effect)(sensor_t *sensor, int effect);
145 int (*set_wb_mode)(sensor_t *sensor, int mode);
146 int (*set_ae_level)(sensor_t *sensor, int level);
147 int (*set_aec_value)(sensor_t *sensor, int value);
148
150 int (*set_reg)(sensor_t *sensor, int reg, int mask, int value);
152 int (*get_reg)(sensor_t *sensor, int reg, int mask);
153
155 int (*set_xclk)(sensor_t *sensor, int timer, int xclk);
156};
157
158#ifdef __cplusplus
159}
160#endif
定义 sensor.h:108
定义 sensor.h:75
定义 sensor.h:101
Sensor control structure, aligned with esp32-camera.
定义 sensor.h:124
int(*) set_xclk(sensor_t *sensor, int timer, int xclk)
定义 sensor.h:155
int(*) set_reg(sensor_t *sensor, int reg, int mask, int value)
定义 sensor.h:150
int(*) get_reg(sensor_t *sensor, int reg, int mask)
定义 sensor.h:152
English version