3232#endif // ESP_IDF_VERSION_MAJOR
3333#define ESP_CAMERA_ETS_PRINTF ets_printf
3434
35+ #if CONFIG_CAM_TASK_STACK_SIZE
36+ #define CAM_TASK_STACK CONFIG_CAM_TASK_STACK_SIZE
37+ #else
38+ #define CAM_TASK_STACK (2*1024)
39+ #endif
40+
3541static const char * TAG = "cam_hal" ;
3642static cam_obj_t * cam_obj = NULL ;
3743
@@ -45,7 +51,7 @@ static int cam_verify_jpeg_soi(const uint8_t *inbuf, uint32_t length)
4551 for (uint32_t i = 0 ; i < length ; i ++ ) {
4652 sig = * ((uint32_t * )(& inbuf [i ])) & 0xFFFFFF ;
4753 if (sig == JPEG_SOI_MARKER ) {
48- ESP_LOGW (TAG , "SOI: %d" , i );
54+ ESP_LOGW (TAG , "SOI: %d" , ( int ) i );
4955 return i ;
5056 }
5157 }
@@ -117,7 +123,7 @@ static void cam_task(void *arg)
117123 int frame_pos = 0 ;
118124 cam_obj -> state = CAM_STATE_IDLE ;
119125 cam_event_t cam_event = 0 ;
120-
126+
121127 xQueueReset (cam_obj -> event_queue );
122128
123129 while (1 ) {
@@ -140,7 +146,7 @@ static void cam_task(void *arg)
140146 case CAM_STATE_READ_BUF : {
141147 camera_fb_t * frame_buffer_event = & cam_obj -> frames [frame_pos ].fb ;
142148 size_t pixels_per_dma = (cam_obj -> dma_half_buffer_size * cam_obj -> fb_bytes_per_pixel ) / (cam_obj -> dma_bytes_per_item * cam_obj -> in_bytes_per_pixel );
143-
149+
144150 if (cam_event == CAM_IN_SUC_EOF_EVENT ) {
145151 if (!cam_obj -> psram_mode ){
146152 if (cam_obj -> fb_size < (frame_buffer_event -> len + pixels_per_dma )) {
@@ -150,8 +156,8 @@ static void cam_task(void *arg)
150156 continue ;
151157 }
152158 frame_buffer_event -> len += ll_cam_memcpy (cam_obj ,
153- & frame_buffer_event -> buf [frame_buffer_event -> len ],
154- & cam_obj -> dma_buffer [(cnt % cam_obj -> dma_half_buffer_cnt ) * cam_obj -> dma_half_buffer_size ],
159+ & frame_buffer_event -> buf [frame_buffer_event -> len ],
160+ & cam_obj -> dma_buffer [(cnt % cam_obj -> dma_half_buffer_cnt ) * cam_obj -> dma_half_buffer_size ],
155161 cam_obj -> dma_half_buffer_size );
156162 }
157163 //Check for JPEG SOI in the first buffer. stop if not found
@@ -173,8 +179,8 @@ static void cam_task(void *arg)
173179 cnt -- ;
174180 } else {
175181 frame_buffer_event -> len += ll_cam_memcpy (cam_obj ,
176- & frame_buffer_event -> buf [frame_buffer_event -> len ],
177- & cam_obj -> dma_buffer [(cnt % cam_obj -> dma_half_buffer_cnt ) * cam_obj -> dma_half_buffer_size ],
182+ & frame_buffer_event -> buf [frame_buffer_event -> len ],
183+ & cam_obj -> dma_buffer [(cnt % cam_obj -> dma_half_buffer_cnt ) * cam_obj -> dma_half_buffer_size ],
178184 cam_obj -> dma_half_buffer_size );
179185 }
180186 }
@@ -192,7 +198,7 @@ static void cam_task(void *arg)
192198 } else if (!cam_obj -> jpeg_mode ) {
193199 if (frame_buffer_event -> len != cam_obj -> fb_size ) {
194200 cam_obj -> frames [frame_pos ].en = 1 ;
195- ESP_LOGE (TAG , "FB-SIZE: %u != %u" , frame_buffer_event -> len , cam_obj -> fb_size );
201+ ESP_LOGE (TAG , "FB-SIZE: %u != %u" , frame_buffer_event -> len , ( unsigned ) cam_obj -> fb_size );
196202 }
197203 }
198204 //send frame
@@ -258,8 +264,9 @@ static esp_err_t cam_dma_config(const camera_config_t *config)
258264 cam_obj -> dma_node_cnt = (cam_obj -> dma_buffer_size ) / cam_obj -> dma_node_buffer_size ; // Number of DMA nodes
259265 cam_obj -> frame_copy_cnt = cam_obj -> recv_size / cam_obj -> dma_half_buffer_size ; // Number of interrupted copies, ping-pong copy
260266
261- ESP_LOGI (TAG , "buffer_size: %d, half_buffer_size: %d, node_buffer_size: %d, node_cnt: %d, total_cnt: %d" ,
262- cam_obj -> dma_buffer_size , cam_obj -> dma_half_buffer_size , cam_obj -> dma_node_buffer_size , cam_obj -> dma_node_cnt , cam_obj -> frame_copy_cnt );
267+ ESP_LOGI (TAG , "buffer_size: %d, half_buffer_size: %d, node_buffer_size: %d, node_cnt: %d, total_cnt: %d" ,
268+ (int ) cam_obj -> dma_buffer_size , (int ) cam_obj -> dma_half_buffer_size , (int ) cam_obj -> dma_node_buffer_size ,
269+ (int ) cam_obj -> dma_node_cnt , (int ) cam_obj -> frame_copy_cnt );
263270
264271 cam_obj -> dma_buffer = NULL ;
265272 cam_obj -> dma = NULL ;
@@ -295,7 +302,7 @@ static esp_err_t cam_dma_config(const camera_config_t *config)
295302 //align PSRAM buffer. TODO: save the offset so proper address can be freed later
296303 cam_obj -> frames [x ].fb_offset = dma_align - ((uint32_t )cam_obj -> frames [x ].fb .buf & (dma_align - 1 ));
297304 cam_obj -> frames [x ].fb .buf += cam_obj -> frames [x ].fb_offset ;
298- ESP_LOGI (TAG , "Frame[%d]: Offset: %u, Addr: 0x%08X" , x , cam_obj -> frames [x ].fb_offset , (uint32_t ) cam_obj -> frames [x ].fb .buf );
305+ ESP_LOGI (TAG , "Frame[%d]: Offset: %u, Addr: 0x%08X" , x , cam_obj -> frames [x ].fb_offset , (unsigned ) cam_obj -> frames [x ].fb .buf );
299306 cam_obj -> frames [x ].dma = allocate_dma_descriptors (cam_obj -> dma_node_cnt , cam_obj -> dma_node_buffer_size , cam_obj -> frames [x ].fb .buf );
300307 CAM_CHECK (cam_obj -> frames [x ].dma != NULL , "frame dma malloc failed" , ESP_FAIL );
301308 }
@@ -305,8 +312,8 @@ static esp_err_t cam_dma_config(const camera_config_t *config)
305312 if (!cam_obj -> psram_mode ) {
306313 cam_obj -> dma_buffer = (uint8_t * )heap_caps_malloc (cam_obj -> dma_buffer_size * sizeof (uint8_t ), MALLOC_CAP_DMA );
307314 if (NULL == cam_obj -> dma_buffer ) {
308- ESP_LOGE (TAG ,"%s(%d): DMA buffer %d Byte malloc failed, the current largest free block:%d Byte" , __FUNCTION__ , __LINE__ ,
309- cam_obj -> dma_buffer_size , heap_caps_get_largest_free_block (MALLOC_CAP_DMA ));
315+ ESP_LOGE (TAG ,"%s(%d): DMA buffer %d Byte malloc failed, the current largest free block:%d Byte" , __FUNCTION__ , __LINE__ ,
316+ ( int ) cam_obj -> dma_buffer_size , ( int ) heap_caps_get_largest_free_block (MALLOC_CAP_DMA ));
310317 return ESP_FAIL ;
311318 }
312319
@@ -372,7 +379,7 @@ esp_err_t cam_config(const camera_config_t *config, framesize_t frame_size, uint
372379 cam_obj -> recv_size = cam_obj -> width * cam_obj -> height * cam_obj -> in_bytes_per_pixel ;
373380 cam_obj -> fb_size = cam_obj -> width * cam_obj -> height * cam_obj -> fb_bytes_per_pixel ;
374381 }
375-
382+
376383 ret = cam_dma_config (config );
377384 CAM_CHECK_GOTO (ret == ESP_OK , "cam_dma_config failed" , err );
378385
@@ -389,13 +396,13 @@ esp_err_t cam_config(const camera_config_t *config, framesize_t frame_size, uint
389396 ret = ll_cam_init_isr (cam_obj );
390397 CAM_CHECK_GOTO (ret == ESP_OK , "cam intr alloc failed" , err );
391398
392-
399+
393400#if CONFIG_CAMERA_CORE0
394- xTaskCreatePinnedToCore (cam_task , "cam_task" , 2048 , NULL , configMAX_PRIORITIES - 2 , & cam_obj -> task_handle , 0 );
401+ xTaskCreatePinnedToCore (cam_task , "cam_task" , CAM_TASK_STACK , NULL , configMAX_PRIORITIES - 2 , & cam_obj -> task_handle , 0 );
395402#elif CONFIG_CAMERA_CORE1
396- xTaskCreatePinnedToCore (cam_task , "cam_task" , 2048 , NULL , configMAX_PRIORITIES - 2 , & cam_obj -> task_handle , 1 );
403+ xTaskCreatePinnedToCore (cam_task , "cam_task" , CAM_TASK_STACK , NULL , configMAX_PRIORITIES - 2 , & cam_obj -> task_handle , 1 );
397404#else
398- xTaskCreate (cam_task , "cam_task" , 2048 , NULL , configMAX_PRIORITIES - 2 , & cam_obj -> task_handle );
405+ xTaskCreate (cam_task , "cam_task" , CAM_TASK_STACK , NULL , configMAX_PRIORITIES - 2 , & cam_obj -> task_handle );
399406#endif
400407
401408 ESP_LOGI (TAG , "cam config ok" );
0 commit comments