完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
摄像头在正常运行显示图像时,monitor中时不时会出现 bh 0x001d2d05 白色字样,此时该帧图像会显示花掉,monitor显示如下:
I (551899) camera_httpd: MJPG: 32000B 41ms (24.4fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (551939) camera_httpd: MJPG: 31942B 40ms (25.0fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (551979) camera_httpd: MJPG: 31733B 35ms (28.6fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (552019) camera_httpd: MJPG: 32000B 43ms (23.3fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (552059) camera_httpd: MJPG: 31813B 43ms (23.3fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (552099) camera_httpd: MJPG: 31831B 35ms (28.6fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (552139) camera_httpd: MJPG: 31443B 43ms (23.3fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (552179) camera_httpd: MJPG: 31740B 34ms (29.4fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 bh 0x001d2d05 I (552219) camera_httpd: MJPG: 31320B 47ms (21.3fps), AVG: 39ms (25.6fps), 0+0+0+0=0 0 I (552349) camera_httpd: MJPG: 31571B 123ms (8.1fps), AVG: 43ms (23.3fps), 0+0+0+0=0 0 I (552369) camera_httpd: MJPG: 31199B 20ms (50.0fps), AVG: 42ms (23.8fps), 0+0+0+0=0 0 查看代码,出现该提示字样在 esp-whocomponentsesp32-cameradrivercamera.c 这个文件中的 static void IRAM_ATTR dma_filter_buffer(size_t buf_idx) { //no need to process the data if frame is in use or is bad if(s_state->fb->ref || s_state->fb->bad) { return; } //check if there is enough space in the frame buffer for the new data size_t buf_len = s_state->width * s_state->fb_bytes_per_pixel / s_state->dma_per_line; size_t fb_pos = s_state->dma_filtered_count * buf_len; if(fb_pos > s_state->fb_size - buf_len) { //size_t processed = s_state->dma_received_count * buf_len; //ets_printf("[%s:%u] ovf pos: %u, processed: %un", __FUNCTION__, __LINE__, fb_pos, processed); return; } //convert I2S DMA buffer to pixel data (*s_state->dma_filter)(s_state->dma_buf[buf_idx], &s_state->dma_desc[buf_idx], s_state->fb->buf + fb_pos); //first frame buffer if(!s_state->dma_filtered_count) { //check for correct JPEG header if(s_state->sensor.pixformat == PIXFORMAT_JPEG) { uint32_t sig = *((uint32_t *)s_state->fb->buf) & 0xFFFFFF; if(sig != 0xffd8ff) { ets_printf("bh 0x%08xn", sig); s_state->fb->bad = 1; return; } } //set the frame properties s_state->fb->width = resolution[s_state->sensor.status.framesize].width; s_state->fb->height = resolution[s_state->sensor.status.framesize].height; s_state->fb->format = s_state->sensor.pixformat; uint64_t us = (uint64_t)esp_timer_get_time(); s_state->fb->timestamp.tv_sec = us / 1000000UL; s_state->fb->timestamp.tv_usec = us % 1000000UL; } s_state->dma_filtered_count++; } 能帮我分析处理下形成这个问题的原因吗?感谢! |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
988 浏览 1 评论
553浏览 6评论
463浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
447浏览 5评论
448浏览 4评论
421浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 18:27 , Processed in 0.795950 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号