mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-01 18:50:34 +03:00
feat(isp): support isp dma input and add example
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
committed by
Gao Xu
co-authored by
Cursor
parent
4966865e30
commit
2a02c7e55c
@@ -32,6 +32,7 @@ typedef struct {
|
||||
uint32_t h_res; ///< Input horizontal resolution, i.e. the number of pixels in a line
|
||||
uint32_t v_res; ///< Input vertical resolution, i.e. the number of lines in a frame
|
||||
color_raw_element_order_t bayer_order; ///< Bayer order
|
||||
uint32_t dma_burst_size; ///< DMA output burst length in units of 64-bit beats. Set to 0 to use default value 16
|
||||
int intr_priority; ///< The interrupt priority, range 0~3, if set to 0, the driver will try to allocate an interrupt with a relative low priority (1,2,3)
|
||||
struct {
|
||||
uint32_t bypass_isp : 1; ///< Bypass ISP pipelines
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
#include "esp_err.h"
|
||||
#include "driver/isp_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Process one ISP DMA frame: feed the input buffer through the ISP and wait for completion
|
||||
*
|
||||
* @note Input buffer content should be ready before calling this function. If the buffers are in
|
||||
* cacheable memory, the caller should synchronize them around DMA access. Buffer sizes are
|
||||
* derived from the ISP processor resolution and pixel formats. Both buffers must be 8-byte
|
||||
* aligned. This function blocks until both input and output DMA channels finish.
|
||||
*
|
||||
* @param[in] proc Processor handle
|
||||
* @param[in] output_buffer Destination buffer for ISP output (8-byte aligned)
|
||||
* @param[in] input_buffer Source input buffer for RAW frame data (8-byte aligned)
|
||||
* @param[in] timeout_ms Timeout in milliseconds for waiting transfer completion
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK On success
|
||||
* - ESP_ERR_INVALID_ARG Invalid argument
|
||||
* - ESP_ERR_TIMEOUT Wait timeout
|
||||
*/
|
||||
esp_err_t esp_isp_dma_process_frame(isp_proc_handle_t proc, void *output_buffer, const void *input_buffer, uint32_t timeout_ms);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user