diff --git a/libv4l-rockchip_v2/libvepu/h264e/h264e.c b/libv4l-rockchip_v2/libvepu/h264e/h264e.c
index 3dbbf89ad086ddd3d1cbba70d99b7a21dda1f474..d321da8eaf0b201a94466b04af576a62fbbe8bd3 100644
--- a/libv4l-rockchip_v2/libvepu/h264e/h264e.c
+++ b/libv4l-rockchip_v2/libvepu/h264e/h264e.c
@@ -660,18 +660,24 @@ static int h264e_assemble_bitstream(struct rk_venc *ictx, int fd,
 		return -1;
 
 	if (buffer->m.planes[0].bytesused + ctx->stream_header_size >
-	    buffer->m.planes[0].length)
+	    buffer->m.planes[0].length) {
+		fprintf(stderr, "Not enough space for H264 header\n");
 		return -1;
+	}
 
 	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);
+			buffer->m.planes[0].m.mem_offset + DST_QUEUE_OFF_BASE);
 
-	if (buf == MAP_FAILED)
+	if (buf == MAP_FAILED) {
+		fprintf(stderr, "mmap failure! mem_offset %x\n",
+			buffer->m.planes[0].m.mem_offset + DST_QUEUE_OFF_BASE);
 		return -1;
+	}
 
 	memmove((uint8_t *)buf + ctx->stream_header_size, buf,
 		buffer->m.planes[0].bytesused);