From 296392c4dda7a7502c3267e991a69aaa81718d78 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Tue, 5 Apr 2022 00:53:05 +0200 Subject: [PATCH] Fix DMA for mplanes --- buffer_queue.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/buffer_queue.c b/buffer_queue.c index 55bdd0f..81ce415 100644 --- a/buffer_queue.c +++ b/buffer_queue.c @@ -38,6 +38,7 @@ bool buffer_consumed(buffer_t *buf) // update used bytes if (buf->buf_list->do_mplanes) { buf->v4l2_plane.bytesused = buf->used; + buf->v4l2_plane.length = buf->length; } else { buf->v4l2_buffer.bytesused = buf->used; } @@ -121,10 +122,14 @@ int buffer_list_enqueue(buffer_list_t *buf_list, buffer_t *dma_buf) dma_buf->name, dma_buf->used, buf->length); } - E_LOG_DEBUG(buf, "mmap copy: dest=%p, src=%p (%s), size=%zu, space=%zu", - buf->start, dma_buf->start, dma_buf->name, dma_buf->used, buf->length); - + struct timespec before, after; + clock_gettime(CLOCK_MONOTONIC, &before); memcpy(buf->start, dma_buf->start, dma_buf->used); + clock_gettime(CLOCK_MONOTONIC, &after); + uint64_t time_diff = after.tv_sec * 1000000LL + after.tv_nsec / 1000 - before.tv_sec * 1000000LL - before.tv_nsec / 1000; + + E_LOG_DEBUG(buf, "mmap copy: dest=%p, src=%p (%s), size=%zu, space=%zu, time=%dllus", + buf->start, dma_buf->start, dma_buf->name, dma_buf->used, buf->length, time_diff); } else { if (buf_list->do_mplanes) { buf->v4l2_plane.m.fd = dma_buf->dma_fd; @@ -136,6 +141,7 @@ int buffer_list_enqueue(buffer_list_t *buf_list, buffer_t *dma_buf) buf->start, dma_buf->start, dma_buf->name, dma_buf->dma_fd, dma_buf->used); buf->mmap_source = dma_buf; + buf->length = dma_buf->length; dma_buf->mmap_reflinks++; }