diff --git a/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c b/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
index ddfd49cdb7b22bc9997b38a8b69217f108918036..2e06535e9ac22dcc90673604226c3a25fb59c8d0 100644
--- a/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
+++ b/libv4l-rockchip_v2/libv4l-encplugin-rockchip.c
@@ -432,8 +432,15 @@ static int ioctl_dqbuf_locked(struct encoder_context *ctx, int fd,
 	}
 
 	ret = SYS_IOCTL(fd, VIDIOC_DQBUF, buffer);
-	if (ret)
+	if (ret) {
+		/* In some cases we may not have a buffer with the V4L2_BUF_FLAG_LAST set,
+		 * make sure to reset our flushing state */
+		if (errno == EPIPE) {
+			ctx->flushing = false;
+			ctx->can_qbuf = true;
+		}
 		return ret;
+	}
 
 	ret = SYS_IOCTL(fd, VIDIOC_QUERYBUF, buffer);
 	if (ret)