feat(cam): support format conversion function

This commit is contained in:
gaoxu
2025-08-26 17:16:56 +08:00
committed by BOT
parent f7ddaefdc5
commit de3e6d22e3
14 changed files with 256 additions and 3 deletions
@@ -765,6 +765,31 @@ static void *esp_cam_ctlr_dvp_cam_alloc_buffer(esp_cam_ctlr_t *handle, size_t si
return buffer;
}
/**
* @brief Configure format conversion
*
* @param cam_handle Camera controller handle
* @param src_format Source format
* @param dst_format Destination format
* @return ESP_OK on success, ESP_FAIL on failure
*/
esp_err_t esp_cam_ctlr_dvp_format_conversion(esp_cam_ctlr_handle_t cam_handle,
const cam_ctlr_format_conv_config_t *config)
{
if (cam_handle == NULL) {
return ESP_ERR_INVALID_ARG;
}
esp_cam_ctlr_dvp_cam_t *ctlr = (esp_cam_ctlr_dvp_cam_t *)cam_handle;
ESP_LOGD(TAG, "Configure format conversion: %d -> %d", config->src_format, config->dst_format);
// Configure color format conversion
cam_hal_color_format_convert(&ctlr->hal, config);
return ESP_OK;
}
/**
* @brief New ESP CAM DVP controller
*
@@ -855,6 +880,7 @@ esp_err_t esp_cam_new_dvp_ctlr(const esp_cam_ctlr_dvp_config_t *config, esp_cam_
ctlr->base.get_internal_buffer = esp_cam_ctlr_dvp_cam_get_internal_buffer;
ctlr->base.get_buffer_len = esp_cam_ctlr_get_dvp_cam_frame_buffer_len;
ctlr->base.alloc_buffer = esp_cam_ctlr_dvp_cam_alloc_buffer;
ctlr->base.format_conversion = esp_cam_ctlr_dvp_format_conversion;
*ret_handle = &ctlr->base;