From 7472fc78e1f6318e5c94c747001b4ac1f5db39f1 Mon Sep 17 00:00:00 2001 From: Christopher Nadler Date: Mon, 7 Apr 2025 09:22:53 +0000 Subject: [PATCH] Improve error handling for setting pixel format --- driver/esp_camera.c | 12 +++++++++--- driver/include/esp_camera.h | 9 +++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/driver/esp_camera.c b/driver/esp_camera.c index 7c693a6957..abd2d5ff9a 100644 --- a/driver/esp_camera.c +++ b/driver/esp_camera.c @@ -305,6 +305,14 @@ esp_err_t esp_camera_init(const camera_config_t *config) frame_size = camera_sensor[camera_model].max_size; } + s_state->sensor.pixformat = pix_format; + ESP_LOGD(TAG, "Setting pixel format to %d", pix_format); + if (s_state->sensor.set_pixformat(&s_state->sensor, pix_format)) { + ESP_LOGE(TAG, "Failed to set pixel format"); + err = ESP_ERR_CAMERA_FAILED_TO_SET_PIXEL_FORMAT; + goto fail; + } + err = cam_config(config, frame_size, s_state->sensor.id.PID); if (err != ESP_OK) { ESP_LOGE(TAG, "Camera config failed with error 0x%x", err); @@ -312,15 +320,13 @@ esp_err_t esp_camera_init(const camera_config_t *config) } s_state->sensor.status.framesize = frame_size; - s_state->sensor.pixformat = pix_format; - ESP_LOGD(TAG, "Setting frame size to %dx%d", resolution[frame_size].width, resolution[frame_size].height); if (s_state->sensor.set_framesize(&s_state->sensor, frame_size) != 0) { ESP_LOGE(TAG, "Failed to set frame size"); err = ESP_ERR_CAMERA_FAILED_TO_SET_FRAME_SIZE; goto fail; } - s_state->sensor.set_pixformat(&s_state->sensor, pix_format); + #if CONFIG_CAMERA_CONVERTER_ENABLED if(config->conv_mode) { s_state->sensor.pixformat = get_output_data_format(config->conv_mode); // If conversion enabled, change the out data format by conversion mode diff --git a/driver/include/esp_camera.h b/driver/include/esp_camera.h index ff459cbd65..1a0554d512 100755 --- a/driver/include/esp_camera.h +++ b/driver/include/esp_camera.h @@ -170,10 +170,11 @@ typedef struct { } camera_fb_t; #define ESP_ERR_CAMERA_BASE 0x20000 -#define ESP_ERR_CAMERA_NOT_DETECTED (ESP_ERR_CAMERA_BASE + 1) -#define ESP_ERR_CAMERA_FAILED_TO_SET_FRAME_SIZE (ESP_ERR_CAMERA_BASE + 2) -#define ESP_ERR_CAMERA_FAILED_TO_SET_OUT_FORMAT (ESP_ERR_CAMERA_BASE + 3) -#define ESP_ERR_CAMERA_NOT_SUPPORTED (ESP_ERR_CAMERA_BASE + 4) +#define ESP_ERR_CAMERA_NOT_DETECTED (ESP_ERR_CAMERA_BASE + 1) +#define ESP_ERR_CAMERA_FAILED_TO_SET_FRAME_SIZE (ESP_ERR_CAMERA_BASE + 2) +#define ESP_ERR_CAMERA_FAILED_TO_SET_PIXEL_FORMAT (ESP_ERR_CAMERA_BASE + 3) +#define ESP_ERR_CAMERA_FAILED_TO_SET_OUT_FORMAT (ESP_ERR_CAMERA_BASE + 4) +#define ESP_ERR_CAMERA_NOT_SUPPORTED (ESP_ERR_CAMERA_BASE + 5) /** * @brief Initialize the camera driver