diff --git a/NEWS b/NEWS
index cfc6c72c0..1b57dd4c1 100644
--- a/NEWS
+++ b/NEWS
@@ -54,11 +54,14 @@ ver 0.20 (not yet released)
 * update
   - apply .mpdignore matches to subdirectories
 
-ver 0.19.19 (not yet released)
+ver 0.19.19 (2016/08/23)
 * decoder
+  - ffmpeg: bug fix for FFmpeg 3.1 support
   - wildmidi: support libWildMidi 0.4
 * output
   - pulse: support 32 bit, 24 bit and floating point playback
+* support non-x86 NetBSD
+* fix clang 3.9 warnings
 
 ver 0.19.18 (2016/08/05)
 * decoder
diff --git a/src/Compiler.h b/src/Compiler.h
index 0365ef436..957aca551 100644
--- a/src/Compiler.h
+++ b/src/Compiler.h
@@ -28,12 +28,18 @@
 #define GCC_VERSION 0
 #endif
 
+#ifdef __clang__
+#  define CLANG_VERSION GCC_MAKE_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
+#elif defined(__GNUC__)
+#  define CLANG_VERSION 0
+#endif
+
 /**
  * Are we building with the specified version of gcc (not clang or any
  * other compiler) or newer?
  */
 #define GCC_CHECK_VERSION(major, minor) \
-	(defined(__GNUC__) && !defined(__clang__) && \
+	(CLANG_VERSION == 0 && \
 	 GCC_VERSION >= GCC_MAKE_VERSION(major, minor, 0))
 
 /**
@@ -41,18 +47,17 @@
  * gcc version?
  */
 #define CLANG_OR_GCC_VERSION(major, minor) \
-	(defined(__clang__) || GCC_CHECK_VERSION(major, minor))
+	(CLANG_VERSION > 0 || GCC_CHECK_VERSION(major, minor))
 
 /**
  * Are we building with gcc (not clang or any other compiler) and a
  * version older than the specified one?
  */
 #define GCC_OLDER_THAN(major, minor) \
-	(defined(__GNUC__) && !defined(__clang__) && \
+	(GCC_VERSION > 0 && CLANG_VERSION == 0 && \
 	 GCC_VERSION < GCC_MAKE_VERSION(major, minor, 0))
 
 #ifdef __clang__
-#  define CLANG_VERSION GCC_MAKE_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
 #  if __clang_major__ < 3
 #    error Sorry, your clang version is too old.  You need at least version 3.1.
 #  endif
@@ -68,8 +73,7 @@
  * Are we building with the specified version of clang or newer?
  */
 #define CLANG_CHECK_VERSION(major, minor) \
-	(defined(__clang__) && \
-	 CLANG_VERSION >= GCC_MAKE_VERSION(major, minor, 0))
+	(CLANG_VERSION >= GCC_MAKE_VERSION(major, minor, 0))
 
 #if CLANG_OR_GCC_VERSION(4,0)
 
diff --git a/src/decoder/plugins/FfmpegDecoderPlugin.cxx b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
index 10c60b92a..662ba2af9 100644
--- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
@@ -653,6 +653,10 @@ FfmpegDecode(Decoder &decoder, InputStream &input,
 	AtScopeExit(&codec_context) {
 		avcodec_free_context(&codec_context);
 	};
+
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 25, 0) /* FFmpeg 3.1 */
+	avcodec_parameters_to_context(codec_context, av_stream.codecpar);
+#endif
 #endif
 
 	const SampleFormat sample_format =
diff --git a/src/system/ByteOrder.hxx b/src/system/ByteOrder.hxx
index babc503a9..0a12de84c 100644
--- a/src/system/ByteOrder.hxx
+++ b/src/system/ByteOrder.hxx
@@ -42,7 +42,7 @@
 /* well-known big-endian */
 #  define IS_LITTLE_ENDIAN false
 #  define IS_BIG_ENDIAN true
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__NetBSD__)
 /* compile-time check for MacOS */
 #  include <machine/endian.h>
 #  if BYTE_ORDER == LITTLE_ENDIAN