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);