diff --git a/subprojects/gst-libav/ext/libav/gstavdemux.c b/subprojects/gst-libav/ext/libav/gstavdemux.c
index 811092b29d..d530c2743d 100644
--- a/subprojects/gst-libav/ext/libav/gstavdemux.c
+++ b/subprojects/gst-libav/ext/libav/gstavdemux.c
@@ -1775,9 +1775,8 @@ gst_ffmpegdemux_sink_event (GstPad * sinkpad, GstObject * parent,
       gst_clear_tag_list (&upstream_tags);
       event = gst_event_new_tag (tags);
       gst_event_set_seqnum (event, seqnum);
-
-      /* fall through */
     }
+      /* FALLTHROUGH */
     default:
       /* for a serialized event, wait until an earlier data is gone,
        * though this is no guarantee as to when task is done with it.
diff --git a/subprojects/gst-libav/meson.build b/subprojects/gst-libav/meson.build
index ace9715107..cd6c092a39 100644
--- a/subprojects/gst-libav/meson.build
+++ b/subprojects/gst-libav/meson.build
@@ -195,23 +195,29 @@ else
   message('GStreamer debug system is enabled')
 endif
 
+# NOTE: Keep entries alphabetically sorted
 warning_flags = [
-  '-Wmissing-declarations',
-  '-Wmissing-prototypes',
-  '-Wold-style-definition',
-  '-Wredundant-decls',
-  '-Wundef',
-  '-Wwrite-strings',
+  '-Waddress',
+  '-Waggregate-return',
   '-Wformat',
   '-Wformat-nonliteral',
   '-Wformat-security',
+  '-Wimplicit-fallthrough=3',
   '-Winit-self',
+  '-Wmissing-declarations',
   '-Wmissing-include-dirs',
-  '-Waddress',
+  '-Wmissing-parameter-type',
+  '-Wmissing-prototypes',
   '-Wno-multichar',
-  '-Waggregate-return',
-  '-Wvla',
+  '-Wold-style-definition',
   '-Wpointer-arith',
+  '-Wredundant-decls',
+  '-Wredundant-decls',
+  '-Wshift-negative-value',
+  '-Wtype-limits',
+  '-Wundef',
+  '-Wvla',
+  '-Wwrite-strings',
 ]
 
 foreach extra_arg : warning_flags