mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-01 18:50:34 +03:00
feat(cam): add camera buffer alloc function
This commit is contained in:
@@ -51,6 +51,7 @@ static esp_err_t s_ctlr_csi_start(esp_cam_ctlr_handle_t handle);
|
||||
static esp_err_t s_ctlr_csi_stop(esp_cam_ctlr_handle_t handle);
|
||||
static esp_err_t s_csi_ctlr_disable(esp_cam_ctlr_handle_t ctlr);
|
||||
static esp_err_t s_ctlr_csi_receive(esp_cam_ctlr_handle_t handle, esp_cam_ctlr_trans_t *trans, uint32_t timeout_ms);
|
||||
static void *s_csi_ctlr_alloc_buffer(esp_cam_ctlr_t *handle, size_t size, uint32_t buf_caps);
|
||||
|
||||
static esp_err_t s_csi_claim_controller(csi_controller_t *controller)
|
||||
{
|
||||
@@ -225,6 +226,7 @@ esp_err_t esp_cam_new_csi_ctlr(const esp_cam_ctlr_csi_config_t *config, esp_cam_
|
||||
ctlr->base.register_event_callbacks = s_register_event_callbacks;
|
||||
ctlr->base.get_internal_buffer = s_csi_ctlr_get_internal_buffer;
|
||||
ctlr->base.get_buffer_len = s_csi_ctlr_get_buffer_length;
|
||||
ctlr->base.alloc_buffer = s_csi_ctlr_alloc_buffer;
|
||||
|
||||
*ret_handle = &(ctlr->base);
|
||||
|
||||
@@ -538,3 +540,23 @@ esp_err_t s_ctlr_csi_receive(esp_cam_ctlr_handle_t handle, esp_cam_ctlr_trans_t
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static void *s_csi_ctlr_alloc_buffer(esp_cam_ctlr_t *handle, size_t size, uint32_t buf_caps)
|
||||
{
|
||||
csi_controller_t *ctlr = __containerof(handle, csi_controller_t, base);
|
||||
|
||||
if (!ctlr) {
|
||||
ESP_LOGE(TAG, "invalid argument: handle is null");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *buffer = heap_caps_calloc(1, size, buf_caps);
|
||||
if (!buffer) {
|
||||
ESP_LOGE(TAG, "failed to allocate buffer");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ESP_LOGD(TAG, "Allocated camera buffer: %p, size: %zu", buffer, size);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user