diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c
index 28ea08998b2df44400a898fe57a34d1b1c70f9b5..41c59d1900f26236de2ecb24d07140cf859d0dd0 100644
--- a/modules/access/dvdnav.c
+++ b/modules/access/dvdnav.c
@@ -60,7 +60,7 @@
 
 #include <dvdnav/dvdnav.h>
 
-#include "../demux/ps.h"
+#include "../demux/mpeg/ps.h"
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/access/dvdread.c b/modules/access/dvdread.c
index 9dd4c5bcce406c83ebbffde885171be83446624f..dd89a08c08c15847904f322db00e16621fda7d5a 100644
--- a/modules/access/dvdread.c
+++ b/modules/access/dvdread.c
@@ -48,7 +48,7 @@
 
 #include <vlc_iso_lang.h>
 
-#include "../demux/ps.h"
+#include "../demux/mpeg/ps.h"
 
 #include <sys/types.h>
 #include <unistd.h>
diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am
index cd8a5bdef1ce3939617ff7755c8d842fce3a4b96..6d7e503cbbd38e1347ae3c88492c6b067d1143cd 100644
--- a/modules/demux/Makefile.am
+++ b/modules/demux/Makefile.am
@@ -37,7 +37,7 @@ demux_LTLIBRARIES += libnsv_plugin.la
 libreal_plugin_la_SOURCES = demux/real.c
 demux_LTLIBRARIES += libreal_plugin.la
 
-libps_plugin_la_SOURCES = demux/ps.c demux/ps.h
+libps_plugin_la_SOURCES = demux/mpeg/ps.c demux/mpeg/ps.h
 demux_LTLIBRARIES += libps_plugin.la
 
 libmod_plugin_la_SOURCES = demux/mod.c
@@ -226,12 +226,12 @@ libplaylist_plugin_la_SOURCES = \
 	demux/playlist/playlist.c demux/playlist/playlist.h
 demux_LTLIBRARIES += libplaylist_plugin.la
 
-libts_plugin_la_SOURCES = demux/ts.c \
-        demux/mpeg4_iod.c demux/mpeg4_iod.h \
+libts_plugin_la_SOURCES = demux/mpeg/ts.c \
+        demux/mpeg/mpeg4_iod.c demux/mpeg/mpeg4_iod.h \
 	mux/mpeg/csa.c mux/mpeg/dvbpsi_compat.h \
 	mux/mpeg/streams.h mux/mpeg/tables.c mux/mpeg/tables.h \
 	mux/mpeg/tsutil.c mux/mpeg/tsutil.h \
-	demux/dvb-text.h codec/opus_header.c demux/opus.h
+	demux/mpeg/dvb-text.h codec/opus_header.c demux/opus.h
 libts_plugin_la_CFLAGS = $(AM_CFLAGS) $(DVBPSI_CFLAGS)
 libts_plugin_la_LIBADD = $(DVBPSI_LIBS) $(SOCKET_LIBS)
 if HAVE_ARIBB24
diff --git a/modules/demux/mpeg4_iod.c b/modules/demux/mpeg/mpeg4_iod.c
similarity index 100%
rename from modules/demux/mpeg4_iod.c
rename to modules/demux/mpeg/mpeg4_iod.c
diff --git a/modules/demux/mpeg4_iod.h b/modules/demux/mpeg/mpeg4_iod.h
similarity index 100%
rename from modules/demux/mpeg4_iod.h
rename to modules/demux/mpeg/mpeg4_iod.h
diff --git a/modules/demux/ps.c b/modules/demux/mpeg/ps.c
similarity index 100%
rename from modules/demux/ps.c
rename to modules/demux/mpeg/ps.c
diff --git a/modules/demux/ps.h b/modules/demux/mpeg/ps.h
similarity index 100%
rename from modules/demux/ps.h
rename to modules/demux/mpeg/ps.h
diff --git a/modules/demux/ts.c b/modules/demux/mpeg/ts.c
similarity index 99%
rename from modules/demux/ts.c
rename to modules/demux/mpeg/ts.c
index d474680511b24fe4972cc23a700077d4b13972bd..e43a946c3cc1cb712ba1348274cefb78260b418c 100644
--- a/modules/demux/ts.c
+++ b/modules/demux/mpeg/ts.c
@@ -43,7 +43,7 @@
 #include <vlc_charset.h>   /* FromCharset, for EIT */
 #include <vlc_bits.h>
 
-#include "../mux/mpeg/csa.h"
+#include "../../mux/mpeg/csa.h"
 
 /* Include dvbpsi headers */
 # include <dvbpsi/dvbpsi.h>
@@ -61,14 +61,14 @@
 /* TDT support */
 # include <dvbpsi/tot.h>
 
-#include "../mux/mpeg/dvbpsi_compat.h"
-#include "../mux/mpeg/streams.h"
-#include "../mux/mpeg/tsutil.h"
-#include "../mux/mpeg/tables.h"
+#include "../../mux/mpeg/dvbpsi_compat.h"
+#include "../../mux/mpeg/streams.h"
+#include "../../mux/mpeg/tsutil.h"
+#include "../../mux/mpeg/tables.h"
 
-#include "../codec/opus_header.h"
+#include "../../codec/opus_header.h"
 
-#include "opus.h"
+#include "../opus.h"
 
 #include "mpeg4_iod.h"
 
@@ -3536,7 +3536,7 @@ static void ValidateDVBMeta( demux_t *p_demux, int i_pid )
     p_sys->b_dvb_meta = false;
 }
 
-#include "dvb-text.h"
+#include "../dvb-text.h"
 
 static char *EITConvertToUTF8( demux_t *p_demux,
                                const unsigned char *psz_instring,
diff --git a/modules/demux/vobsub.c b/modules/demux/vobsub.c
index 8de3437e906bb2349f0f7541b13104ce327a40a0..c6e54eac41e31f9f9fecd54cc125b05bcc10eb7b 100644
--- a/modules/demux/vobsub.c
+++ b/modules/demux/vobsub.c
@@ -36,7 +36,7 @@
 #include <vlc_plugin.h>
 #include <vlc_demux.h>
 
-#include "ps.h"
+#include "mpeg/ps.h"
 #include "vobsub.h"
 
 /*****************************************************************************
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2bc143c43f424b7d29a7fb70ab0a1387722fd9c4..04338208292815c991cfd62ec0bdfafc0f626c7a 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -491,6 +491,9 @@ modules/demux/mpeg/es.c
 modules/demux/mpeg/h264.c
 modules/demux/mpeg/hevc.c
 modules/demux/mpeg/mpgv.c
+modules/demux/mpeg/ps.c
+modules/demux/mpeg/ps.h
+modules/demux/mpeg/ts.c
 modules/demux/nsc.c
 modules/demux/nsv.c
 modules/demux/nuv.c
@@ -511,8 +514,6 @@ modules/demux/playlist/qtl.c
 modules/demux/playlist/sgimb.c
 modules/demux/playlist/shoutcast.c
 modules/demux/playlist/xspf.c
-modules/demux/ps.c
-modules/demux/ps.h
 modules/demux/pva.c
 modules/demux/rawaud.c
 modules/demux/rawdv.c
@@ -522,7 +523,6 @@ modules/demux/sid.cpp
 modules/demux/smf.c
 modules/demux/stl.c
 modules/demux/subtitle.c
-modules/demux/ts.c
 modules/demux/tta.c
 modules/demux/ty.c
 modules/demux/vc1.c