Improve MMAP handling

This commit is contained in:
Kamil Trzcinski 2022-04-05 14:37:48 +02:00
parent 5e836612ca
commit 0aa292fb84
3 changed files with 4 additions and 2 deletions

View File

@ -54,7 +54,7 @@ buffer_t *buffer_open(const char *name, buffer_list_t *buf_list, int index) {
buf->dma_fd = v4l2_exp.fd; buf->dma_fd = v4l2_exp.fd;
} }
if (buf_list->do_capture) { if (buf_list->do_capture && buf_list->do_mmap) {
buf->used = 0; buf->used = 0;
buffer_consumed(buf); buffer_consumed(buf);
} }

View File

@ -13,10 +13,12 @@ buffer_list_t *buffer_list_open(const char *name, struct device_s *dev, unsigned
switch(type) { switch(type) {
case V4L2_BUF_TYPE_VIDEO_OUTPUT: case V4L2_BUF_TYPE_VIDEO_OUTPUT:
buf_list->do_mmap = do_mmap; buf_list->do_mmap = do_mmap;
buf_list->do_dma = do_mmap;
break; break;
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
buf_list->do_mmap = do_mmap; buf_list->do_mmap = do_mmap;
buf_list->do_dma = do_mmap;
buf_list->do_mplanes = true; buf_list->do_mplanes = true;
break; break;

View File

@ -74,7 +74,7 @@ buffer_t *buffer_list_find_slot(buffer_list_t *buf_list)
buffer_t *buf = NULL; buffer_t *buf = NULL;
for (int i = 0; i < buf_list->nbufs; i++) { for (int i = 0; i < buf_list->nbufs; i++) {
if (!buf_list->bufs[i]->enqueued) { if (!buf_list->bufs[i]->enqueued && buf_list->bufs[i]->mmap_reflinks == 1) {
buf = buf_list->bufs[i]; buf = buf_list->bufs[i];
break; break;
} }