diff --git a/configure.ac b/configure.ac
index 0d528c61a..e3d4730f4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1447,7 +1447,7 @@ AM_CONDITIONAL(ENABLE_FLAC_ENCODER, test x$enable_flac_encoder = xyes)
 
 dnl ------------------------------- Shine Encoder ------------------------------
 
-MPD_AUTO_PKG(shine_encoder, SHINE, [shine >= 3],
+MPD_AUTO_PKG(shine_encoder, SHINE, [shine >= 3.1],
 	[shine encoder], [libshine not found])
 
 if test x$enable_shine_encoder = xyes; then
diff --git a/src/encoder/plugins/ShineEncoderPlugin.cxx b/src/encoder/plugins/ShineEncoderPlugin.cxx
index 00b8eec7c..61cb8609e 100644
--- a/src/encoder/plugins/ShineEncoderPlugin.cxx
+++ b/src/encoder/plugins/ShineEncoderPlugin.cxx
@@ -172,8 +172,6 @@ bool
 ShineEncoder::WriteChunk(bool flush)
 {
 	if (flush || input_pos == frame_size) {
-		long written;
-
 		if (flush) {
 			/* fill remaining with 0s */
 			for (; input_pos < frame_size; input_pos++) {
@@ -181,6 +179,7 @@ ShineEncoder::WriteChunk(bool flush)
 			}
 		}
 
+		int written;
 		const uint8_t *out =
 			shine_encode_buffer(shine, stereo, &written);
 
@@ -229,10 +228,11 @@ static bool
 shine_encoder_flush(Encoder *_encoder, gcc_unused Error &error)
 {
 	ShineEncoder *encoder = (ShineEncoder *)_encoder;
-	long written;
 
 	/* flush buffers and flush shine */
 	encoder->WriteChunk(true);
+
+	int written;
 	const uint8_t *data = shine_flush(encoder->shine, &written);
 
 	if (written > 0)