Closed zhuhwu closed 4 months ago
查看了librga问题库以及FAQ文档,没有找到关于“v4l2 + librga 导致无法正常关闭设备。 最开始使用v4l2是可以正常关闭(closed(fd))文件描述符,只要加入importbuffer_virtualaddr,会导致设备如/dev/video0一直被占用, releasebuffer_handle也无法解除,只能通过重启解决,想请教下如何在程序中解除设备一直占用的问题,部分代码如下所示
void sigint_handler(int signo) { if (signo == SIGINT) { keeprunning = false; printf("received SIGINT\n"); if (src_handle) releasebuffer_handle(src_handle); if (dst_handle) releasebuffer_handle(dst_handle); if (src_buf) free(src_buf); if (dst_buf) free(dst_buf); //出错位置 if (ioctl(fd, VIDIOC_STREAMOFF, &buffer.type) == -1) { perror("Error stopping stream"); } munmap(buffer_start, buffer.length); close(fd); } } buffer_start = mmap(NULL, buffer.m.planes[0].length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, buffer.m.planes[0].m.mem_offset); memcpy(buffer2mat, buffer_start, buffer.m.planes[0].bytesused); src_handle = importbuffer_virtualaddr(buffer2mat, src_buf_size); dst_handle = importbuffer_virtualaddr(dst_buf, dst_buf_size);
librga版本: rga_api version 1.9.1_[5] 目标平台: rk3588
rga_api version
rk3588
查看了librga问题库以及FAQ文档,没有找到关于“v4l2 + librga 导致无法正常关闭设备。 最开始使用v4l2是可以正常关闭(closed(fd))文件描述符,只要加入importbuffer_virtualaddr,会导致设备如/dev/video0一直被占用, releasebuffer_handle也无法解除,只能通过重启解决,想请教下如何在程序中解除设备一直占用的问题,部分代码如下所示
librga版本:
rga_api version
1.9.1_[5] 目标平台:rk3588