Skip to content

Commit 4350949

Browse files
committed
cam: Always work in total pixels, not width x height
1 parent eaf2def commit 4350949

File tree

2 files changed

+3
-13
lines changed

2 files changed

+3
-13
lines changed

ports/esp32s2/cam.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ typedef struct {
5151
uint32_t dma_size;
5252
uint32_t cnt;
5353
uint32_t total_cnt;
54-
uint16_t width;
55-
uint16_t high;
5654
lldesc_t *dma;
5755
uint8_t *buffer;
5856
uint8_t *frame1_buffer;
@@ -408,7 +406,7 @@ void cam_dma_config(const cam_config_t *config) {
408406
cam_obj->dma_size = 1024;
409407
} else {
410408
for (cnt = 0;; cnt++) { /*!< Find the divisible buffer size */
411-
if ((config->size.width * config->size.high * 2) % (config->max_buffer_size - cnt) == 0) {
409+
if ((config->size * 2) % (config->max_buffer_size - cnt) == 0) {
412410
break;
413411
}
414412
}
@@ -428,7 +426,7 @@ void cam_dma_config(const cam_config_t *config) {
428426

429427
cam_obj->node_cnt = (cam_obj->buffer_size) / cam_obj->dma_size; /*!< Number of DMA nodes */
430428
cam_obj->half_node_cnt = cam_obj->node_cnt / 2;
431-
cam_obj->total_cnt = (config->size.width * config->size.high * 2) / cam_obj->half_buffer_size; /*!< Number of interrupt copies produced. Ping pong copies */
429+
cam_obj->total_cnt = (config->size * 2) / cam_obj->half_buffer_size; /*!< Number of interrupt copies produced. Ping pong copies */
432430

433431
ESP_LOGI(TAG, "cam_buffer_size: %d, cam_dma_size: %d, cam_dma_node_cnt: %d, cam_total_cnt: %d\n", cam_obj->buffer_size, cam_obj->dma_size, cam_obj->node_cnt, cam_obj->total_cnt);
434432

@@ -473,8 +471,6 @@ esp_err_t cam_init(const cam_config_t *config) {
473471
return ESP_FAIL;
474472
}
475473

476-
cam_obj->width = config->size.width;
477-
cam_obj->high = config->size.high;
478474
cam_obj->frame1_buffer = config->frame1_buffer;
479475
cam_obj->frame2_buffer = config->frame2_buffer;
480476
cam_obj->jpeg_mode = config->mode.jpeg;

ports/esp32s2/cam.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,7 @@ typedef struct {
3333
uint8_t pin_data[16]; /*!< Data pin of camera*/
3434
uint8_t vsync_invert;
3535
uint8_t hsync_invert;
36-
union {
37-
struct {
38-
uint32_t width : 16;
39-
uint32_t high : 16;
40-
};
41-
uint32_t val;
42-
} size; /*!< size of camera */
36+
uint32_t size; /*!< size of camera frame (width times height) */
4337
uint32_t max_buffer_size; /*!< DMA used */
4438
uint32_t task_stack; /*!< The priority of the task at run time */
4539
uint8_t task_pri;

0 commit comments

Comments
 (0)