From bf34a794ded5be5f250b74e1767f8222a3698420 Mon Sep 17 00:00:00 2001
From: Ezequiel Garcia <ezequiel@collabora.com>
Date: Fri, 22 May 2020 09:17:55 -0300
Subject: [PATCH] Use querybuf ioctl to remove the offset hack

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
---
 libv4l-rockchip_v2/libv4l-encplugin-rockchip.c | 3 +++
 libv4l-rockchip_v2/libvepu/h264e/h264e.c       | 5 ++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c b/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
index e4ac8e7..ddfd49c 100644
--- a/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
+++ b/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
@@ -435,6 +435,9 @@ static int ioctl_dqbuf_locked(struct encoder_context *ctx, int fd,
 	if (ret)
 		return ret;
 
+	ret = SYS_IOCTL(fd, VIDIOC_QUERYBUF, buffer);
+	if (ret)
+		return ret;
 	/* Get the encoder configuration and update the library.
 	 * Because we dequeue a null frame to indicate flush is finished, do not
 	 * update the config with this frame. */
diff --git a/libv4l-rockchip_v2/libvepu/h264e/h264e.c b/libv4l-rockchip_v2/libvepu/h264e/h264e.c
index dc321ce..afc30c8 100644
--- a/libv4l-rockchip_v2/libvepu/h264e/h264e.c
+++ b/libv4l-rockchip_v2/libvepu/h264e/h264e.c
@@ -667,15 +667,14 @@ static int h264e_assemble_bitstream(struct rk_venc *ictx, int fd,
 
 	buffer->length = 1;
 
-#define DST_QUEUE_OFF_BASE (1 << 30)
 	buf = mmap(NULL, buffer->m.planes[0].length,
 			PROT_READ | PROT_WRITE,
 			MAP_SHARED, fd,
-			buffer->m.planes[0].m.mem_offset + DST_QUEUE_OFF_BASE);
+			buffer->m.planes[0].m.mem_offset);
 
 	if (buf == MAP_FAILED) {
 		fprintf(stderr, "mmap failure! mem_offset %x\n",
-			buffer->m.planes[0].m.mem_offset + DST_QUEUE_OFF_BASE);
+			buffer->m.planes[0].m.mem_offset);
 		return -1;
 	}
 
-- 
GitLab