[vlc-devel] [PATCH 1/4] core: remove global *_sys_t typedefs

Romain Vimont rom1v at videolabs.io
Fri Apr 27 22:10:57 CEST 2018


Do not declare *_sys_t typedefs globally in vlc_common.h. Instead,
declare them locally in each module that provides a definition.

This paves the way to move C++ definitions into anonymous namespaces in
order to respect C++ ODR.

The picture_resource_t and sout_stream_id_sys_t typedefs will be handled
separately, since they require specific additional changes.

See #18033
---
 include/vlc_common.h                           | 15 ---------------
 modules/access/alsa.c                          |  4 ++--
 modules/access/attachment.c                    |  4 ++--
 modules/access/avio.c                          |  9 +++++----
 modules/access/bluray.c                        |  9 +++++----
 modules/access/cdda.c                          |  8 ++++----
 modules/access/concat.c                        |  4 ++--
 modules/access/dc1394.c                        |  4 ++--
 modules/access/directory.c                     |  4 ++--
 modules/access/dshow/access.h                  |  4 ++++
 modules/access/dsm/sd.c                        |  4 ++--
 modules/access/dtv/access.c                    |  4 ++--
 modules/access/dv.c                            |  4 ++--
 modules/access/dvb/access.c                    |  4 ++--
 modules/access/dvdnav.c                        |  4 ++--
 modules/access/dvdread.c                       |  4 ++--
 modules/access/file.c                          |  4 ++--
 modules/access/ftp.c                           |  3 +++
 modules/access/http.c                          |  4 ++--
 modules/access/http/access.c                   |  4 ++--
 modules/access/idummy.c                        |  4 ++--
 modules/access/imem-access.c                   |  4 ++--
 modules/access/imem.c                          |  4 ++--
 modules/access/jack.c                          |  4 ++--
 modules/access/linsys/linsys_hdsdi.c           |  4 ++--
 modules/access/linsys/linsys_sdi.c             |  4 ++--
 modules/access/mms/mms.c                       |  4 ++--
 modules/access/mms/mmsh.h                      |  4 ++--
 modules/access/mms/mmstu.h                     |  4 ++--
 modules/access/nfs.c                           |  4 ++--
 modules/access/oss.c                           |  4 ++--
 modules/access/pulse.c                         |  4 ++--
 modules/access/rdp.c                           |  4 ++--
 modules/access/rtp/rtp.h                       |  4 ++--
 modules/access/rtsp/access.c                   |  4 ++--
 modules/access/samba.c                         |  4 ++--
 modules/access/satip.c                         |  5 +++--
 modules/access/screen/screen.h                 |  4 ++--
 modules/access/screen/wayland.c                |  4 ++--
 modules/access/screen/xcb.c                    |  4 ++--
 modules/access/sftp.c                          |  4 ++--
 modules/access/shm.c                           |  2 ++
 modules/access/srt.c                           |  4 ++--
 modules/access/timecode.c                      |  4 ++--
 modules/access/udp.c                           |  4 ++--
 modules/access/unc.c                           |  4 ++--
 modules/access/v4l2/access.c                   |  4 ++--
 modules/access/v4l2/demux.c                    |  4 ++--
 modules/access/v4l2/radio.c                    |  4 ++--
 modules/access/vcd/vcd.c                       |  4 ++--
 modules/access/vdr.c                           |  4 ++--
 modules/access/vnc.c                           |  4 ++--
 modules/access/wasapi.c                        |  4 ++--
 modules/access_output/http.c                   |  4 ++--
 modules/access_output/livehttp.c               |  4 ++--
 modules/access_output/shout.c                  |  4 ++--
 modules/access_output/srt.c                    |  4 ++--
 modules/access_output/udp.c                    |  4 ++--
 modules/audio_filter/audiobargraph_a.c         |  4 ++--
 modules/audio_filter/channel_mixer/dolby.c     |  4 ++--
 modules/audio_filter/channel_mixer/headphone.c | 10 +++++-----
 modules/audio_filter/channel_mixer/mono.c      |  8 ++++----
 modules/audio_filter/channel_mixer/remap.c     |  4 ++--
 .../channel_mixer/spatialaudio.cpp             |  4 ++--
 modules/audio_filter/channel_mixer/trivial.c   |  4 ++--
 modules/audio_filter/chorus_flanger.c          |  2 ++
 modules/audio_filter/compressor.c              |  4 ++--
 modules/audio_filter/converter/tospdif.c       |  4 ++--
 modules/audio_filter/equalizer.c               |  4 ++--
 modules/audio_filter/gain.c                    |  4 ++--
 modules/audio_filter/normvol.c                 |  6 +++---
 modules/audio_filter/param_eq.c                |  4 ++--
 modules/audio_filter/resampler/bandlimited.c   |  4 ++--
 modules/audio_filter/resampler/soxr.c          |  6 +++---
 modules/audio_filter/resampler/speex.c         |  2 +-
 modules/audio_filter/resampler/src.c           |  2 +-
 modules/audio_filter/scaletempo.c              |  4 ++--
 modules/audio_filter/stereo_widen.c            |  4 ++--
 modules/audio_output/alsa.c                    |  4 ++--
 modules/audio_output/amem.c                    |  4 ++--
 modules/audio_output/audiotrack.c              |  5 +++--
 modules/audio_output/auhal.c                   |  4 ++--
 modules/audio_output/directsound.c             |  4 ++--
 modules/audio_output/file.c                    |  4 ++--
 modules/audio_output/jack.c                    | 18 +++++++++---------
 modules/audio_output/kai.c                     |  4 ++--
 modules/audio_output/mmdevice.c                |  4 ++--
 modules/audio_output/opensles_android.c        |  4 ++--
 modules/audio_output/oss.c                     |  4 ++--
 modules/audio_output/pulse.c                   |  4 ++--
 modules/audio_output/sndio.c                   |  4 ++--
 modules/audio_output/tizen_audio.c             |  5 +++--
 modules/audio_output/waveout.c                 |  3 +++
 modules/audio_output/winstore.c                |  4 ++--
 modules/codec/a52.c                            |  4 ++--
 modules/codec/adpcm.c                          |  4 ++--
 modules/codec/aes3.c                           |  4 ++--
 modules/codec/aom.c                            |  8 ++++----
 modules/codec/araw.c                           |  4 ++--
 modules/codec/arib/aribsub.c                   |  4 ++--
 modules/codec/audiotoolbox_midi.c              |  4 ++--
 modules/codec/avcodec/audio.c                  |  4 ++--
 modules/codec/avcodec/encoder.c                |  4 ++--
 modules/codec/avcodec/subtitle.c               |  5 +++--
 modules/codec/avcodec/video.c                  |  4 ++--
 modules/codec/bpg.c                            |  4 ++--
 modules/codec/cc.c                             |  4 ++--
 modules/codec/cdg.c                            |  4 ++--
 modules/codec/crystalhd.c                      |  4 ++--
 modules/codec/cvdsub.c                         |  4 ++--
 modules/codec/daala.c                          |  8 ++++----
 modules/codec/dca.c                            |  4 ++--
 modules/codec/dmo/dmo.c                        |  8 ++++----
 modules/codec/dvbsub.c                         |  8 ++++----
 modules/codec/faad.c                           |  4 ++--
 modules/codec/fdkaac.c                         |  4 ++--
 modules/codec/flac.c                           |  8 ++++----
 modules/codec/fluidsynth.c                     |  4 ++--
 modules/codec/g711.c                           |  4 ++--
 modules/codec/gstreamer/gstdecode.c            |  4 ++--
 modules/codec/jpeg.c                           |  8 ++++----
 modules/codec/kate.c                           |  4 ++--
 modules/codec/libass.c                         |  4 ++--
 modules/codec/libmpeg2.c                       |  4 ++--
 modules/codec/lpcm.c                           |  8 ++++----
 modules/codec/mad.c                            |  4 ++--
 modules/codec/mft.c                            |  4 ++--
 modules/codec/mpg123.c                         |  4 ++--
 modules/codec/oggspots.c                       |  4 ++--
 modules/codec/omxil/mediacodec.c               |  4 ++--
 modules/codec/omxil/omxil.h                    |  4 ++--
 modules/codec/opus.c                           |  8 ++++----
 modules/codec/png.c                            |  8 ++++----
 modules/codec/qsv.c                            |  4 ++--
 modules/codec/rawvideo.c                       |  4 ++--
 modules/codec/schroedinger.c                   |  8 ++++----
 modules/codec/scte18.c                         |  4 ++--
 modules/codec/scte27.c                         |  5 +++--
 modules/codec/sdl_image.c                      |  4 ++--
 modules/codec/shine.c                          |  4 ++--
 modules/codec/speex.c                          |  8 ++++----
 modules/codec/spudec/spudec.h                  |  4 ++--
 modules/codec/stl.c                            |  5 +++--
 modules/codec/subsdec.c                        |  4 ++--
 modules/codec/substx3g.c                       |  2 +-
 modules/codec/subsusf.c                        |  4 ++--
 modules/codec/svcdsub.c                        |  4 ++--
 modules/codec/svg.c                            |  4 ++--
 modules/codec/telx.c                           |  4 ++--
 modules/codec/textst.c                         |  4 ++--
 modules/codec/theora.c                         |  8 ++++----
 modules/codec/ttml/substtml.c                  |  4 ++--
 modules/codec/twolame.c                        |  4 ++--
 modules/codec/uleaddvaudio.c                   |  4 ++--
 modules/codec/vorbis.c                         |  8 ++++----
 modules/codec/vpx.c                            |  8 ++++----
 modules/codec/webvtt/subsvtt.c                 |  4 ++--
 modules/codec/wmafixed/wma.c                   |  4 ++--
 modules/codec/x264.c                           |  4 ++--
 modules/codec/x265.c                           |  4 ++--
 modules/codec/zvbi.c                           |  4 ++--
 modules/demux/adaptive/adaptive.cpp            |  2 +-
 modules/demux/adaptive/plumbing/FakeESOut.cpp  |  2 +-
 .../demux/adaptive/plumbing/SourceStream.cpp   |  2 +-
 modules/demux/aiff.c                           |  4 ++--
 modules/demux/asf/asf.c                        |  4 ++--
 modules/demux/au.c                             |  4 ++--
 modules/demux/avformat/demux.c                 |  4 ++--
 modules/demux/avformat/mux.c                   |  4 ++--
 modules/demux/avi/avi.c                        |  4 ++--
 modules/demux/caf.c                            |  4 ++--
 modules/demux/cdg.c                            |  4 ++--
 modules/demux/flac.c                           |  4 ++--
 modules/demux/gme.c                            |  4 ++--
 modules/demux/image.c                          |  4 ++--
 modules/demux/mjpeg.c                          |  4 ++--
 modules/demux/mkv/matroska_segment.hpp         |  1 +
 modules/demux/mod.c                            |  4 ++--
 modules/demux/mp4/mp4.c                        |  4 ++--
 modules/demux/mpc.c                            |  4 ++--
 modules/demux/mpeg/es.c                        |  4 ++--
 modules/demux/mpeg/h26x.c                      |  4 ++--
 modules/demux/mpeg/mpgv.c                      |  4 ++--
 modules/demux/mpeg/ps.c                        |  4 ++--
 modules/demux/mpeg/ts_pid.h                    |  2 ++
 modules/demux/nsv.c                            |  4 ++--
 modules/demux/nuv.c                            |  4 ++--
 modules/demux/ogg.h                            |  4 ++--
 modules/demux/playlist/sgimb.c                 |  4 ++--
 modules/demux/pva.c                            |  4 ++--
 modules/demux/rawaud.c                         |  4 ++--
 modules/demux/rawdv.c                          |  4 ++--
 modules/demux/rawvid.c                         |  4 ++--
 modules/demux/real.c                           |  4 ++--
 modules/demux/sid.cpp                          |  2 +-
 modules/demux/smf.c                            |  4 ++--
 modules/demux/stl.c                            |  5 +++--
 modules/demux/subtitle.c                       |  4 ++--
 modules/demux/tta.c                            |  4 ++--
 modules/demux/ttml.c                           |  4 ++--
 modules/demux/ty.c                             |  4 ++--
 modules/demux/vc1.c                            |  4 ++--
 modules/demux/vobsub.c                         |  4 ++--
 modules/demux/voc.c                            |  4 ++--
 modules/demux/wav.c                            |  4 ++--
 modules/demux/webvtt.c                         |  4 ++--
 modules/demux/xa.c                             |  4 ++--
 modules/hw/d3d11/d3d11_deinterlace.c           |  4 ++--
 modules/hw/d3d11/d3d11_filters.c               |  4 ++--
 modules/hw/d3d11/d3d11_surface.c               |  5 +++--
 modules/hw/d3d9/d3d9_filters.c                 |  4 ++--
 modules/hw/d3d9/dxa9.c                         |  5 +++--
 modules/hw/d3d9/dxva2_deinterlace.c            |  4 ++--
 modules/hw/mmal/codec.c                        |  5 +++--
 modules/hw/mmal/deinterlace.c                  |  5 +++--
 modules/hw/vaapi/chroma.c                      |  4 ++--
 modules/hw/vaapi/filters.c                     |  4 ++--
 modules/hw/vdpau/adjust.c                      |  4 ++--
 modules/hw/vdpau/chroma.c                      |  4 ++--
 modules/hw/vdpau/deinterlace.c                 |  4 ++--
 modules/hw/vdpau/sharpen.c                     |  4 ++--
 modules/lua/services_discovery.c               |  4 ++--
 modules/misc/rtsp.c                            |  4 ++--
 modules/misc/stats.c                           |  4 ++--
 modules/misc/xml/libxml.c                      |  4 ++--
 modules/mux/asf.c                              |  4 ++--
 modules/mux/avi.c                              |  4 ++--
 modules/mux/dummy.c                            |  4 ++--
 modules/mux/mp4/mp4.c                          |  4 ++--
 modules/mux/mpeg/ps.c                          |  4 ++--
 modules/mux/mpeg/ts.c                          |  4 ++--
 modules/mux/ogg.c                              |  4 ++--
 modules/mux/wav.c                              |  4 ++--
 modules/packetizer/a52.c                       |  4 ++--
 modules/packetizer/avparser.c                  |  4 ++--
 modules/packetizer/copy.c                      |  4 ++--
 modules/packetizer/dts.c                       |  4 ++--
 modules/packetizer/flac.c                      |  4 ++--
 modules/packetizer/h264.c                      |  4 ++--
 modules/packetizer/hevc.c                      |  4 ++--
 modules/packetizer/mlp.c                       |  4 ++--
 modules/packetizer/mpeg4audio.c                |  4 ++--
 modules/packetizer/mpeg4video.c                |  4 ++--
 modules/packetizer/mpegaudio.c                 |  4 ++--
 modules/packetizer/mpegvideo.c                 |  4 ++--
 modules/packetizer/vc1.c                       |  4 ++--
 modules/services_discovery/avahi.c             |  4 ++--
 modules/services_discovery/mediadirs.c         |  4 ++--
 modules/services_discovery/microdns.c          |  4 ++--
 modules/services_discovery/mtp.c               |  4 ++--
 modules/services_discovery/podcast.c           |  4 ++--
 modules/services_discovery/pulse.c             |  4 ++--
 modules/services_discovery/sap.c               |  8 ++++----
 modules/services_discovery/udev.c              |  4 ++--
 modules/services_discovery/xcb_apps.c          |  4 ++--
 modules/spu/audiobargraph_v.c                  |  4 ++--
 modules/spu/dynamicoverlay/dynamicoverlay.h    |  4 ++--
 modules/spu/logo.c                             |  4 ++--
 modules/spu/marq.c                             |  4 ++--
 modules/spu/mosaic.c                           |  4 ++--
 modules/spu/remoteosd.c                        |  2 ++
 modules/spu/rss.c                              |  4 ++--
 modules/spu/subsdelay.c                        |  4 ++--
 modules/stream_filter/accesstweaks.c           |  4 ++--
 modules/stream_filter/aribcam.c                |  4 ++--
 modules/stream_filter/cache_block.c            |  4 ++--
 modules/stream_filter/cache_read.c             |  4 ++--
 modules/stream_filter/decomp.c                 |  4 ++--
 modules/stream_filter/hds/hds.c                |  4 ++--
 modules/stream_filter/inflate.c                |  4 ++--
 modules/stream_filter/prefetch.c               |  4 ++--
 modules/stream_filter/record.c                 |  4 ++--
 modules/stream_out/autodel.c                   |  4 ++--
 modules/stream_out/bridge.c                    |  4 ++--
 modules/stream_out/chromaprint.c               |  4 ++--
 .../stream_out/chromecast/chromecast_demux.cpp |  1 -
 modules/stream_out/cycle.c                     |  4 ++--
 modules/stream_out/delay.c                     |  4 ++--
 modules/stream_out/description.c               |  4 ++--
 modules/stream_out/display.c                   |  4 ++--
 modules/stream_out/duplicate.c                 |  4 ++--
 modules/stream_out/es.c                        |  4 ++--
 modules/stream_out/gather.c                    |  4 ++--
 modules/stream_out/mosaic_bridge.c             |  4 ++--
 modules/stream_out/record.c                    |  4 ++--
 modules/stream_out/rtp.c                       |  6 +++---
 modules/stream_out/setid.c                     |  4 ++--
 modules/stream_out/smem.c                      |  4 ++--
 modules/stream_out/standard.c                  |  4 ++--
 modules/stream_out/stats.c                     |  4 ++--
 modules/stream_out/transcode/transcode.h       |  4 ++--
 modules/stream_out/vod.c                       |  4 ++--
 modules/text_renderer/freetype/freetype.h      |  4 ++--
 modules/text_renderer/svg.c                    |  4 ++--
 modules/video_chroma/chain.c                   |  4 ++--
 modules/video_chroma/cvpx.c                    |  4 ++--
 modules/video_chroma/i420_nv12.c               |  4 ++--
 modules/video_chroma/i420_rgb.h                |  4 ++--
 modules/video_chroma/swscale.c                 |  4 ++--
 modules/video_filter/adjust.c                  |  4 ++--
 modules/video_filter/alphamask.c               |  4 ++--
 modules/video_filter/anaglyph.c                |  4 ++--
 modules/video_filter/antiflicker.c             |  4 ++--
 modules/video_filter/ball.c                    |  3 +++
 modules/video_filter/blendbench.c              |  4 ++--
 modules/video_filter/bluescreen.c              |  4 ++--
 modules/video_filter/canvas.c                  |  4 ++--
 modules/video_filter/colorthres.c              |  4 ++--
 modules/video_filter/croppadd.c                |  4 ++--
 modules/video_filter/deinterlace/deinterlace.h |  4 ++--
 modules/video_filter/edgedetection.c           |  4 ++--
 modules/video_filter/erase.c                   |  4 ++--
 modules/video_filter/extract.c                 |  4 ++--
 modules/video_filter/fps.c                     |  4 ++--
 modules/video_filter/freeze.c                  |  5 +++--
 modules/video_filter/gaussianblur.c            |  4 ++--
 modules/video_filter/gradfun.c                 |  5 +++--
 modules/video_filter/gradient.c                |  4 ++--
 modules/video_filter/grain.c                   |  5 +++--
 modules/video_filter/hqdn3d.c                  |  4 ++--
 modules/video_filter/magnify.c                 |  4 ++--
 modules/video_filter/mirror.c                  |  4 ++--
 modules/video_filter/motionblur.c              |  2 ++
 modules/video_filter/motiondetect.c            |  4 ++--
 modules/video_filter/oldmovie.c                |  5 +++--
 modules/video_filter/opencv_wrapper.c          |  4 ++--
 modules/video_filter/posterize.c               |  4 ++--
 modules/video_filter/postproc.c                |  4 ++--
 modules/video_filter/psychedelic.c             |  4 ++--
 modules/video_filter/puzzle_mgt.h              |  2 ++
 modules/video_filter/ripple.c                  |  4 ++--
 modules/video_filter/rotate.c                  |  8 ++++----
 modules/video_filter/scene.c                   |  4 ++--
 modules/video_filter/sepia.c                   |  4 ++--
 modules/video_filter/sharpen.c                 |  4 ++--
 modules/video_filter/transform.c               |  5 +++--
 modules/video_filter/vhs.c                     |  5 +++--
 modules/video_filter/wave.c                    |  4 ++--
 modules/video_output/decklink.cpp              |  2 +-
 modules/visualization/glspectrum.c             |  4 ++--
 modules/visualization/goom.c                   |  4 ++--
 modules/visualization/visual/visual.c          |  4 ++--
 src/input/es_out.c                             |  4 ++--
 src/input/es_out_timeshift.c                   |  4 ++--
 344 files changed, 752 insertions(+), 723 deletions(-)

diff --git a/include/vlc_common.h b/include/vlc_common.h
index c11b76dbb3..13b7d2e331 100644
--- a/include/vlc_common.h
+++ b/include/vlc_common.h
@@ -338,7 +338,6 @@ typedef struct date_t date_t;
 typedef struct playlist_t playlist_t;
 typedef struct playlist_item_t playlist_item_t;
 typedef struct services_discovery_t services_discovery_t;
-typedef struct services_discovery_sys_t services_discovery_sys_t;
 typedef struct vlc_renderer_discovery_t vlc_renderer_discovery_t;
 typedef struct vlc_renderer_item_t vlc_renderer_item_t;
 
@@ -352,14 +351,10 @@ typedef struct config_category_t config_category_t;
 typedef struct input_thread_t input_thread_t;
 typedef struct input_item_t input_item_t;
 typedef struct input_item_node_t input_item_node_t;
-typedef struct access_sys_t access_sys_t;
 typedef struct stream_t     stream_t;
-typedef struct stream_sys_t stream_sys_t;
 typedef struct stream_t demux_t;
-typedef struct demux_sys_t demux_sys_t;
 typedef struct es_out_t     es_out_t;
 typedef struct es_out_id_t  es_out_id_t;
-typedef struct es_out_sys_t es_out_sys_t;
 typedef struct seekpoint_t seekpoint_t;
 typedef struct info_t info_t;
 typedef struct info_category_t info_category_t;
@@ -374,7 +369,6 @@ typedef struct video_palette_t video_palette_t;
 
 /* Audio */
 typedef struct audio_output audio_output_t;
-typedef struct aout_sys_t aout_sys_t;
 typedef audio_format_t audio_sample_format_t;
 
 /* Video */
@@ -399,29 +393,23 @@ typedef struct sout_input_t sout_input_t;
 typedef struct sout_packetizer_input_t sout_packetizer_input_t;
 
 typedef struct sout_access_out_t sout_access_out_t;
-typedef struct sout_access_out_sys_t   sout_access_out_sys_t;
 
 typedef struct sout_mux_t sout_mux_t;
-typedef struct sout_mux_sys_t sout_mux_sys_t;
 
 typedef struct sout_stream_t    sout_stream_t;
-typedef struct sout_stream_sys_t sout_stream_sys_t;
 
 typedef struct config_chain_t       config_chain_t;
 typedef struct session_descriptor_t session_descriptor_t;
 
 /* Decoders */
 typedef struct decoder_t         decoder_t;
-typedef struct decoder_sys_t     decoder_sys_t;
 typedef struct decoder_synchro_t decoder_synchro_t;
 
 /* Encoders */
 typedef struct encoder_t      encoder_t;
-typedef struct encoder_sys_t  encoder_sys_t;
 
 /* Filters */
 typedef struct filter_t filter_t;
-typedef struct filter_sys_t filter_sys_t;
 
 /* Network */
 typedef struct vlc_url_t vlc_url_t;
@@ -438,13 +426,10 @@ typedef struct md5_s md5_t;
 
 /* XML */
 typedef struct xml_t xml_t;
-typedef struct xml_sys_t xml_sys_t;
 typedef struct xml_reader_t xml_reader_t;
-typedef struct xml_reader_sys_t xml_reader_sys_t;
 
 /* vod server */
 typedef struct vod_t     vod_t;
-typedef struct vod_sys_t vod_sys_t;
 typedef struct vod_media_t vod_media_t;
 
 /* VLM */
diff --git a/modules/access/alsa.c b/modules/access/alsa.c
index 1126d97c5d..99cb1dcbd8 100644
--- a/modules/access/alsa.c
+++ b/modules/access/alsa.c
@@ -122,7 +122,7 @@ static void DumpDeviceStatus (vlc_object_t *obj, snd_pcm_t *pcm)
 #define DumpDeviceStatus(o, p) DumpDeviceStatus(VLC_OBJECT(o), p)
 
 
-struct demux_sys_t
+typedef struct
 {
     snd_pcm_t *pcm;
     es_out_id_t *es;
@@ -132,7 +132,7 @@ struct demux_sys_t
     mtime_t caching;
     snd_pcm_uframes_t period_size;
     unsigned rate;
-};
+} demux_sys_t;
 
 static void Poll (snd_pcm_t *pcm, int canc)
 {
diff --git a/modules/access/attachment.c b/modules/access/attachment.c
index 9623f82369..06791b2db8 100644
--- a/modules/access/attachment.c
+++ b/modules/access/attachment.c
@@ -58,11 +58,11 @@ static ssize_t Read(stream_t *, void *, size_t);
 static int     Seek(stream_t *, uint64_t);
 static int     Control(stream_t *, int, va_list);
 
-struct access_sys_t
+typedef struct
 {
     input_attachment_t *attachment;
     size_t offset;
-};
+} access_sys_t;
 
 /* */
 static int Open(vlc_object_t *object)
diff --git a/modules/access/avio.c b/modules/access/avio.c
index c88e812165..1e90dac8dc 100644
--- a/modules/access/avio.c
+++ b/modules/access/avio.c
@@ -65,15 +65,16 @@ static int UrlInterruptCallback(void *access)
     return vlc_killed();
 }
 
-struct access_sys_t
+typedef struct
 {
     AVIOContext *context;
     int64_t size;
-};
+} access_sys_t;
 
-struct sout_access_out_sys_t {
+typedef struct
+{
     AVIOContext *context;
-};
+} sout_access_out_sys_t;
 
 
 /* */
diff --git a/modules/access/bluray.c b/modules/access/bluray.c
index 4b7e0d497b..293d1cd440 100644
--- a/modules/access/bluray.c
+++ b/modules/access/bluray.c
@@ -145,7 +145,7 @@ typedef struct bluray_overlay_t
     struct subpicture_updater_sys_t *p_updater;
 } bluray_overlay_t;
 
-struct  demux_sys_t
+typedef struct
 {
     BLURAY              *bluray;
 
@@ -200,7 +200,7 @@ struct  demux_sys_t
 
     /* Used to store bluray disc path */
     char                *psz_bd_path;
-};
+} demux_sys_t;
 
 struct subpicture_updater_sys_t
 {
@@ -921,9 +921,10 @@ static void blurayClose(vlc_object_t *object)
  * Elementary streams handling
  *****************************************************************************/
 
-struct es_out_sys_t {
+typedef struct
+{
     demux_t *p_demux;
-};
+} es_out_sys_t;
 
 typedef struct  fmt_es_pair {
     int         i_id;
diff --git a/modules/access/cdda.c b/modules/access/cdda.c
index 6163265b5b..dff0d5e6d0 100644
--- a/modules/access/cdda.c
+++ b/modules/access/cdda.c
@@ -115,7 +115,7 @@ static vcddev_t *DiscOpen(vlc_object_t *obj, const char *location,
 /* how many blocks Demux() will read in each iteration */
 #define CDDA_BLOCKS_ONCE 20
 
-struct demux_sys_t
+typedef struct
 {
     vcddev_t    *vcddev;                            /* vcd device descriptor */
     es_out_id_t *es;
@@ -124,7 +124,7 @@ struct demux_sys_t
     unsigned start; /**< Track first sector */
     unsigned length; /**< Track total sectors */
     unsigned position; /**< Current offset within track sectors */
-};
+} demux_sys_t;
 
 static int Demux(demux_t *demux)
 {
@@ -269,7 +269,7 @@ error:
 /*****************************************************************************
  * Access: local prototypes
  *****************************************************************************/
-struct access_sys_t
+typedef struct
 {
     vcddev_t    *vcddev;                            /* vcd device descriptor */
     int         *p_sectors;                                 /* Track sectors */
@@ -279,7 +279,7 @@ struct access_sys_t
 #ifdef HAVE_LIBCDDB
     cddb_disc_t *cddb;
 #endif
-};
+} access_sys_t;
 
 #ifdef HAVE_LIBCDDB
 static cddb_disc_t *GetCDDBInfo( vlc_object_t *obj, int i_titles, int *p_sectors )
diff --git a/modules/access/concat.c b/modules/access/concat.c
index 11c5ef3cd9..d8a94c465d 100644
--- a/modules/access/concat.c
+++ b/modules/access/concat.c
@@ -35,7 +35,7 @@ struct access_entry
     char mrl[1];
 };
 
-struct access_sys_t
+typedef struct
 {
     stream_t *access;
     struct access_entry *next;
@@ -46,7 +46,7 @@ struct access_sys_t
     bool can_control_pace;
     uint64_t size;
     int64_t caching;
-};
+} access_sys_t;
 
 static stream_t *GetAccess(stream_t *access)
 {
diff --git a/modules/access/dc1394.c b/modules/access/dc1394.c
index adec9ac313..f3e381f4a4 100644
--- a/modules/access/dc1394.c
+++ b/modules/access/dc1394.c
@@ -54,7 +54,7 @@ vlc_module_begin()
     set_callbacks( Open, Close )
 vlc_module_end()
 
-struct demux_sys_t
+typedef struct
 {
     /* camera info */
     dc1394_t            *p_dccontext;
@@ -77,7 +77,7 @@ struct demux_sys_t
     unsigned int        focus;
     es_out_id_t         *p_es_video;
     dc1394video_frame_t *frame;
-};
+} demux_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/access/directory.c b/modules/access/directory.c
index 59915de767..1cc93791cf 100644
--- a/modules/access/directory.c
+++ b/modules/access/directory.c
@@ -42,11 +42,11 @@
 #include <vlc_fs.h>
 #include <vlc_url.h>
 
-struct access_sys_t
+typedef struct
 {
     char *base_uri;
     DIR *dir;
-};
+} access_sys_t;
 
 /*****************************************************************************
  * DirInit: Init the directory access with a directory stream
diff --git a/modules/access/dshow/access.h b/modules/access/dshow/access.h
index 0527423c6b..271657e0af 100644
--- a/modules/access/dshow/access.h
+++ b/modules/access/dshow/access.h
@@ -33,6 +33,8 @@
 #include <wrl/client.h>
 using Microsoft::WRL::ComPtr;
 
+typedef struct demux_sys_t demux_sys_t;
+
 /****************************************************************************
  * Crossbar stuff
  ****************************************************************************/
@@ -47,6 +49,8 @@ struct CrossbarRoute
     LONG        AudioOutputIndex;
 };
 
+struct access_sys_t;
+
 void DeleteCrossbarRoutes( access_sys_t * );
 HRESULT FindCrossbarRoutes( vlc_object_t *, access_sys_t *,
                             IPin *, LONG, int = 0 );
diff --git a/modules/access/dsm/sd.c b/modules/access/dsm/sd.c
index 276e01fe9a..2c006b8fda 100644
--- a/modules/access/dsm/sd.c
+++ b/modules/access/dsm/sd.c
@@ -51,11 +51,11 @@ struct entry_item
     input_item_t *p_item;
 };
 
-struct services_discovery_sys_t
+typedef struct
 {
     netbios_ns      *p_ns;
     vlc_array_t      entry_item_list;
-};
+} services_discovery_sys_t;
 
 static void entry_item_append( services_discovery_t *p_sd,
                                netbios_ns_entry *p_entry,
diff --git a/modules/access/dtv/access.c b/modules/access/dtv/access.c
index e748ec6cb1..333d9b0997 100644
--- a/modules/access/dtv/access.c
+++ b/modules/access/dtv/access.c
@@ -426,12 +426,12 @@ vlc_module_begin ()
 #endif
 vlc_module_end ()
 
-struct access_sys_t
+typedef struct
 {
     dvb_device_t *dev;
     uint8_t signal_poll;
     tuner_setup_t pf_setup;
-};
+} access_sys_t;
 
 static block_t *Read (stream_t *, bool *);
 static int Control (stream_t *, int, va_list);
diff --git a/modules/access/dv.c b/modules/access/dv.c
index b15b22f490..08c7632916 100644
--- a/modules/access/dv.c
+++ b/modules/access/dv.c
@@ -92,7 +92,7 @@ static int AVCPlay( stream_t *, int );
 static int AVCPause( stream_t *, int );
 static int AVCStop( stream_t *, int );
 
-struct access_sys_t
+typedef struct
 {
     raw1394handle_t p_avc1394;
     raw1394handle_t p_raw1394;
@@ -108,7 +108,7 @@ struct access_sys_t
     event_thread_t *p_ev;
     vlc_mutex_t lock;
     block_t *p_frame;
-};
+} access_sys_t;
 
 #define ISOCHRONOUS_QUEUE_LENGTH 1000
 #define ISOCHRONOUS_MAX_PACKET_SIZE 4096
diff --git a/modules/access/dvb/access.c b/modules/access/dvb/access.c
index ec0f7c4002..9a1acc91af 100644
--- a/modules/access/dvb/access.c
+++ b/modules/access/dvb/access.c
@@ -47,7 +47,7 @@
 #include "dvb.h"
 #include "scan.h"
 
-struct access_sys_t
+typedef struct
 {
     demux_handle_t p_demux_handles[MAX_DEMUX];
     dvb_sys_t dvb;
@@ -55,7 +55,7 @@ struct access_sys_t
     /* Scan */
     struct scan_t *scan;
     bool done;
-};
+} access_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c
index 1be6762199..0386102772 100644
--- a/modules/access/dvdnav.c
+++ b/modules/access/dvdnav.c
@@ -120,7 +120,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     dvdnav_t    *dvdnav;
 
@@ -165,7 +165,7 @@ struct demux_sys_t
     mtime_t     i_pgc_length;
     int         i_vobu_index;
     int         i_vobu_flush;
-};
+} demux_sys_t;
 
 static int Control( demux_t *, int, va_list );
 static int Demux( demux_t * );
diff --git a/modules/access/dvdread.c b/modules/access/dvdread.c
index 44ae8b60df..89ecfc8906 100644
--- a/modules/access/dvdread.c
+++ b/modules/access/dvdread.c
@@ -92,7 +92,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct demux_sys_t
+typedef struct
 {
     /* DVDRead state */
     dvd_reader_t *p_dvdread;
@@ -145,7 +145,7 @@ struct demux_sys_t
 
     /* SPU */
     uint32_t clut[16];
-};
+} demux_sys_t;
 
 static int Control   ( demux_t *, int, va_list );
 static int Demux     ( demux_t * );
diff --git a/modules/access/file.c b/modules/access/file.c
index 4a6213b73a..16b5c740cd 100644
--- a/modules/access/file.c
+++ b/modules/access/file.c
@@ -64,12 +64,12 @@
 #include <vlc_url.h>
 #include <vlc_interrupt.h>
 
-struct access_sys_t
+typedef struct
 {
     int fd;
 
     bool b_pace_control;
-};
+} access_sys_t;
 
 #if !defined (_WIN32) && !defined (__OS2__)
 static bool IsRemote (int fd)
diff --git a/modules/access/ftp.c b/modules/access/ftp.c
index 8100bf8444..f7317698e1 100644
--- a/modules/access/ftp.c
+++ b/modules/access/ftp.c
@@ -107,6 +107,9 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
+
+typedef struct access_sys_t access_sys_t;
+
 static ssize_t Read( stream_t *, void *, size_t );
 static int Seek( stream_t *, uint64_t );
 static int Control( stream_t *, int, va_list );
diff --git a/modules/access/http.c b/modules/access/http.c
index f5b4eacbd1..a09a7ff74a 100644
--- a/modules/access/http.c
+++ b/modules/access/http.c
@@ -79,7 +79,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct access_sys_t
+typedef struct
 {
     int fd;
 
@@ -115,7 +115,7 @@ struct access_sys_t
 
     bool b_reconnect;
     bool b_has_size;
-};
+} access_sys_t;
 
 /* */
 static ssize_t Read( stream_t *, void *, size_t );
diff --git a/modules/access/http/access.c b/modules/access/http/access.c
index ab72107a04..24af4ce22a 100644
--- a/modules/access/http/access.c
+++ b/modules/access/http/access.c
@@ -38,11 +38,11 @@
 #include "file.h"
 #include "live.h"
 
-struct access_sys_t
+typedef struct
 {
     struct vlc_http_mgr *manager;
     struct vlc_http_resource *resource;
-};
+} access_sys_t;
 
 static block_t *FileRead(stream_t *access, bool *restrict eof)
 {
diff --git a/modules/access/idummy.c b/modules/access/idummy.c
index f95e68634f..b0e82166c5 100644
--- a/modules/access/idummy.c
+++ b/modules/access/idummy.c
@@ -60,11 +60,11 @@ static int DemuxHold( demux_t *demux )
     return 1;
 }
 
-struct demux_sys_t
+typedef struct
 {
     mtime_t end;
     mtime_t length;
-};
+} demux_sys_t;
 
 static int DemuxPause( demux_t *demux )
 {
diff --git a/modules/access/imem-access.c b/modules/access/imem-access.c
index 5649cc0603..7856c041c0 100644
--- a/modules/access/imem-access.c
+++ b/modules/access/imem-access.c
@@ -28,14 +28,14 @@
 #include <vlc_access.h>
 #include <vlc_plugin.h>
 
-struct access_sys_t
+typedef struct
 {
     void *opaque;
     ssize_t (*read_cb)(void *, unsigned char *, size_t);
     int (*seek_cb)(void *, uint64_t);
     void (*close_cb)(void *);
     uint64_t size;
-};
+} access_sys_t;
 
 static ssize_t Read(stream_t *access, void *buf, size_t len)
 {
diff --git a/modules/access/imem.c b/modules/access/imem.c
index 008e0ebde2..8a1a584271 100644
--- a/modules/access/imem.c
+++ b/modules/access/imem.c
@@ -306,7 +306,7 @@ static int OpenAccess(vlc_object_t *object)
     access->pf_read    = NULL;
     access->pf_block   = Block;
     access->pf_seek    = NULL;
-    access->p_sys      = (access_sys_t*)sys;
+    access->p_sys      = sys;
 
     return VLC_SUCCESS;
 }
@@ -495,7 +495,7 @@ static int OpenDemux(vlc_object_t *object)
     /* */
     demux->pf_control = ControlDemux;
     demux->pf_demux   = Demux;
-    demux->p_sys      = (demux_sys_t*)sys;
+    demux->p_sys      = sys;
 
     return VLC_SUCCESS;
 }
diff --git a/modules/access/jack.c b/modules/access/jack.c
index d986dc14a0..ac166ea7bb 100644
--- a/modules/access/jack.c
+++ b/modules/access/jack.c
@@ -83,7 +83,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct demux_sys_t
+typedef struct
 {
     /* Audio properties */
     vlc_fourcc_t                i_acodec_raw;
@@ -106,7 +106,7 @@ struct demux_sys_t
     char                        *psz_ports;
     char                        **pp_jack_port_table;
     char                        i_match_ports;
-};
+} demux_sys_t;
 
 static int Demux( demux_t * );
 static int Control( demux_t *p_demux, int i_query, va_list args );
diff --git a/modules/access/linsys/linsys_hdsdi.c b/modules/access/linsys/linsys_hdsdi.c
index 01f195a410..7b0aa17a94 100644
--- a/modules/access/linsys/linsys_hdsdi.c
+++ b/modules/access/linsys/linsys_hdsdi.c
@@ -121,7 +121,7 @@ typedef struct hdsdi_audio_t
     es_out_id_t *p_es;
 } hdsdi_audio_t;
 
-struct demux_sys_t
+typedef struct
 {
     /* video device reader */
     int          i_vfd;
@@ -157,7 +157,7 @@ struct demux_sys_t
 
     pthread_t thread;
     int evfd;
-};
+} demux_sys_t;
 
 static int Control( demux_t *, int, va_list );
 static void *Demux( void * );
diff --git a/modules/access/linsys/linsys_sdi.c b/modules/access/linsys/linsys_sdi.c
index c9efc415ea..5921b19af2 100644
--- a/modules/access/linsys/linsys_sdi.c
+++ b/modules/access/linsys/linsys_sdi.c
@@ -146,7 +146,7 @@ enum {
     STATE_SYNC,
 };
 
-struct demux_sys_t
+typedef struct
 {
     /* device reader */
     int              i_fd;
@@ -186,7 +186,7 @@ struct demux_sys_t
     es_out_id_t      *p_es_video;
     sdi_audio_t      p_audios[MAX_AUDIOS];
     es_out_id_t      *p_es_telx;
-};
+} demux_sys_t;
 
 static int Control( demux_t *, int, va_list );
 static int DemuxControl( demux_t *, int, va_list );
diff --git a/modules/access/mms/mms.c b/modules/access/mms/mms.c
index 87f42055ff..60b7d3effc 100644
--- a/modules/access/mms/mms.c
+++ b/modules/access/mms/mms.c
@@ -80,10 +80,10 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct access_sys_t
+typedef struct
 {
     int i_proto;
-};
+} access_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/access/mms/mmsh.h b/modules/access/mms/mmsh.h
index 27f77bacf2..a3d6bf5248 100644
--- a/modules/access/mms/mmsh.h
+++ b/modules/access/mms/mmsh.h
@@ -40,7 +40,7 @@ typedef struct
 } chunk_t;
 
 #define BUFFER_SIZE 65536
-struct access_sys_t
+typedef struct
 {
     int             i_proto;
 
@@ -69,6 +69,6 @@ struct access_sys_t
 
     asf_header_t    asfh;
     guid_t          guid;
-};
+} access_sys_t;
 
 #endif
diff --git a/modules/access/mms/mmstu.h b/modules/access/mms/mmstu.h
index 186f8f1a4b..9c72d1f5fc 100644
--- a/modules/access/mms/mmstu.h
+++ b/modules/access/mms/mmstu.h
@@ -34,7 +34,7 @@
 
 #define MMS_BUFFER_SIZE 100000
 
-struct access_sys_t
+typedef struct
 {
     int         i_proto;        /* MMS_PROTO_TCP, MMS_PROTO_UDP */
     int         i_handle_tcp;   /* TCP socket for communication with server */
@@ -100,6 +100,6 @@ struct access_sys_t
     vlc_mutex_t  lock_netwrite;
     bool         b_keep_alive;
     vlc_thread_t keep_alive;
-};
+} access_sys_t;
 
 #endif
diff --git a/modules/access/nfs.c b/modules/access/nfs.c
index 0d01dd8426..574d10dd4f 100644
--- a/modules/access/nfs.c
+++ b/modules/access/nfs.c
@@ -64,7 +64,7 @@ vlc_module_begin()
     set_callbacks(Open, Close)
 vlc_module_end()
 
-struct access_sys_t
+typedef struct
 {
     struct rpc_context *    p_mount; /* used to to get exports mount point */
     struct nfs_context *    p_nfs;
@@ -95,7 +95,7 @@ struct access_sys_t
             bool b_done;
         } seek;
     } res;
-};
+} access_sys_t;
 
 static bool
 nfs_check_status(stream_t *p_access, int i_status, const char *psz_error,
diff --git a/modules/access/oss.c b/modules/access/oss.c
index aa03f6e4aa..44b8b17c17 100644
--- a/modules/access/oss.c
+++ b/modules/access/oss.c
@@ -108,7 +108,7 @@ struct buffer_t
     size_t  length;
 };
 
-struct demux_sys_t
+typedef struct
 {
     const char *psz_device;  /* OSS device from MRL */
 
@@ -122,7 +122,7 @@ struct demux_sys_t
     es_out_id_t *p_es;
 
     int64_t i_next_demux_date; /* Used to handle oss:// as input-slave properly */
-};
+} demux_sys_t;
 
 static int FindMainDevice( demux_t *p_demux )
 {
diff --git a/modules/access/pulse.c b/modules/access/pulse.c
index a5808ae387..f3ec93a498 100644
--- a/modules/access/pulse.c
+++ b/modules/access/pulse.c
@@ -50,7 +50,7 @@ vlc_module_begin ()
     set_callbacks (Open, Close)
 vlc_module_end ()
 
-struct demux_sys_t
+typedef struct
 {
     pa_stream *stream; /**< PulseAudio playback stream object */
     pa_context *context; /**< PulseAudio connection context */
@@ -60,7 +60,7 @@ struct demux_sys_t
     bool discontinuity; /**< The next block will not follow the last one */
     unsigned framesize; /**< Byte size of a sample */
     mtime_t caching; /**< Caching value */
-};
+} demux_sys_t;
 
 /* Stream helpers */
 static void stream_state_cb(pa_stream *s, void *userdata)
diff --git a/modules/access/rdp.c b/modules/access/rdp.c
index 8805f22646..fc7716687b 100644
--- a/modules/access/rdp.c
+++ b/modules/access/rdp.c
@@ -103,7 +103,7 @@ vlc_module_end()
 
 #define RDP_MAX_FD 32
 
-struct demux_sys_t
+typedef struct
 {
     vlc_thread_t thread;
     freerdp *p_instance;
@@ -121,7 +121,7 @@ struct demux_sys_t
     int i_port;
     /* cancelability */
     int i_cancel_state;
-};
+} demux_sys_t;
 
 /* context */
 
diff --git a/modules/access/rtp/rtp.h b/modules/access/rtp/rtp.h
index ccb176617d..50f3f50e49 100644
--- a/modules/access/rtp/rtp.h
+++ b/modules/access/rtp/rtp.h
@@ -62,7 +62,7 @@ void *rtp_dgram_thread (void *data);
 void *rtp_stream_thread (void *data);
 
 /* Global data */
-struct demux_sys_t
+typedef struct
 {
     rtp_session_t *session;
     struct vlc_demux_chained_t *chained_demux;
@@ -79,5 +79,5 @@ struct demux_sys_t
     uint8_t       max_src; /**< Max simultaneous RTP sources */
     bool          thread_ready;
     bool          autodetect; /**< Payload type autodetection pending */
-};
+} demux_sys_t;
 
diff --git a/modules/access/rtsp/access.c b/modules/access/rtsp/access.c
index aacf82c79b..3dfe6d9143 100644
--- a/modules/access/rtsp/access.c
+++ b/modules/access/rtsp/access.c
@@ -62,14 +62,14 @@ static block_t *BlockRead( stream_t *, bool * );
 static int     Seek( stream_t *, uint64_t );
 static int     Control( stream_t *, int, va_list );
 
-struct access_sys_t
+typedef struct
 {
     rtsp_client_t *p_rtsp;
 
     int fd;
 
     block_t *p_header;
-};
+} access_sys_t;
 
 /*****************************************************************************
  * Network wrappers
diff --git a/modules/access/samba.c b/modules/access/samba.c
index 9de12308b1..8d683f2572 100644
--- a/modules/access/samba.c
+++ b/modules/access/samba.c
@@ -38,12 +38,12 @@
 
 #include "smb_common.h"
 
-struct access_sys_t
+typedef struct
 {
     int i_smb;
     uint64_t size;
     vlc_url_t url;
-};
+} access_sys_t;
 
 /* Build an SMB URI
  * smb://[[[domain;]user[:password@]]server[/share[/path[/file]]]] */
diff --git a/modules/access/satip.c b/modules/access/satip.c
index 2e173cfb81..2e5c7ad5b4 100644
--- a/modules/access/satip.c
+++ b/modules/access/satip.c
@@ -92,7 +92,8 @@ enum rtsp_result {
 };
 
 #define UDP_ADDRESS_LEN 16
-struct access_sys_t {
+typedef struct
+{
     char *content_base;
     char *control;
     char session_id[64];
@@ -115,7 +116,7 @@ struct access_sys_t {
     uint16_t last_seq_nr;
 
     bool woken;
-};
+} access_sys_t;
 
 static void parse_session(char *request_line, char *session, unsigned max, int *timeout) {
     char *state;
diff --git a/modules/access/screen/screen.h b/modules/access/screen/screen.h
index cd5fe3b191..e0713d2d04 100644
--- a/modules/access/screen/screen.h
+++ b/modules/access/screen/screen.h
@@ -39,7 +39,7 @@
 
 typedef struct screen_data_t screen_data_t;
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t fmt;
     es_out_id_t *es;
@@ -73,7 +73,7 @@ struct demux_sys_t
 #endif
 
     screen_data_t *p_data;
-};
+} demux_sys_t;
 
 int      screen_InitCapture ( demux_t * );
 int      screen_CloseCapture( demux_t * );
diff --git a/modules/access/screen/wayland.c b/modules/access/screen/wayland.c
index c0505fbc52..7ba84443f8 100644
--- a/modules/access/screen/wayland.c
+++ b/modules/access/screen/wayland.c
@@ -41,7 +41,7 @@
 #include <vlc_fs.h>
 #include <vlc_plugin.h>
 
-struct demux_sys_t
+typedef struct
 {
     struct wl_display *display;
     struct wl_output *output;
@@ -62,7 +62,7 @@ struct demux_sys_t
     mtime_t start;
 
     vlc_thread_t thread;
-};
+} demux_sys_t;
 
 static bool DisplayError(vlc_object_t *obj, struct wl_display *display)
 {
diff --git a/modules/access/screen/xcb.c b/modules/access/screen/xcb.c
index 1d7b16325f..47203d8d31 100644
--- a/modules/access/screen/xcb.c
+++ b/modules/access/screen/xcb.c
@@ -101,7 +101,7 @@ static int Control (demux_t *, int, va_list);
 static es_out_id_t *InitES (demux_t *, uint_fast16_t, uint_fast16_t,
                             uint_fast8_t, uint8_t *);
 
-struct demux_sys_t
+typedef struct
 {
     /* All owned by timer thread while timer is armed: */
     xcb_connection_t *conn; /**< XCB connection */
@@ -118,7 +118,7 @@ struct demux_sys_t
     uint16_t          cur_w, cur_h; /**< Actual capture pixel dimensions */
     /* Timer does not use this, only input thread: */
     vlc_timer_t       timer;
-};
+} demux_sys_t;
 
 /** Checks MIT-SHM shared memory support */
 static bool CheckSHM (xcb_connection_t *conn)
diff --git a/modules/access/sftp.c b/modules/access/sftp.c
index 92bfc55a01..56d1281218 100644
--- a/modules/access/sftp.c
+++ b/modules/access/sftp.c
@@ -82,7 +82,7 @@ static int      Control( stream_t *, int, va_list );
 
 static int DirRead( stream_t *, input_item_node_t * );
 
-struct access_sys_t
+typedef struct
 {
     int i_socket;
     LIBSSH2_SESSION* ssh_session;
@@ -90,7 +90,7 @@ struct access_sys_t
     LIBSSH2_SFTP_HANDLE* file;
     uint64_t filesize;
     char *psz_base_url;
-};
+} access_sys_t;
 
 static int AuthKeyAgent( stream_t *p_access, const char *psz_username )
 {
diff --git a/modules/access/shm.c b/modules/access/shm.c
index 740fc67098..1d19266204 100644
--- a/modules/access/shm.c
+++ b/modules/access/shm.c
@@ -110,6 +110,8 @@ vlc_module_begin ()
     add_shortcut ("shm")
 vlc_module_end ()
 
+typedef struct demux_sys_t demux_sys_t;
+
 static int Control (demux_t *, int, va_list);
 static void DemuxFile (void *);
 static void CloseFile (demux_sys_t *);
diff --git a/modules/access/srt.c b/modules/access/srt.c
index f215f53eb8..92fb957fca 100644
--- a/modules/access/srt.c
+++ b/modules/access/srt.c
@@ -56,7 +56,7 @@ static const char *const srt_key_length_names[] = {
     N_("16 bytes"), N_("24 bytes"), N_("32 bytes"),
 };
 
-struct stream_sys_t
+typedef struct
 {
     SRTSOCKET   sock;
     int         i_poll_id;
@@ -64,7 +64,7 @@ struct stream_sys_t
     bool        b_interrupted;
     char       *psz_host;
     int         i_port;
-};
+} stream_sys_t;
 
 static void srt_wait_interrupted(void *p_data)
 {
diff --git a/modules/access/timecode.c b/modules/access/timecode.c
index 97787468df..a319b75d2c 100644
--- a/modules/access/timecode.c
+++ b/modules/access/timecode.c
@@ -51,12 +51,12 @@ vlc_module_begin ()
         change_safe ()
 vlc_module_end ()
 
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *es;
     date_t date;
     mtime_t next_time;
-};
+} demux_sys_t;
 
 static int DemuxOnce (demux_t *demux, bool master)
 {
diff --git a/modules/access/udp.c b/modules/access/udp.c
index cf6ebb7125..f2269d3659 100644
--- a/modules/access/udp.c
+++ b/modules/access/udp.c
@@ -76,12 +76,12 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
-struct access_sys_t
+typedef struct
 {
     int fd;
     int timeout;
     size_t mtu;
-};
+} access_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/access/unc.c b/modules/access/unc.c
index 5cfc30eae3..187df23e36 100644
--- a/modules/access/unc.c
+++ b/modules/access/unc.c
@@ -43,12 +43,12 @@
 
 #include "smb_common.h"
 
-struct access_sys_t
+typedef struct
 {
     int i_smb;
     uint64_t size;
     vlc_url_t url;
-};
+} access_sys_t;
 
 static void Win32AddConnection(stream_t *access, const char *server,
                                const char *share, const char *user,
diff --git a/modules/access/v4l2/access.c b/modules/access/v4l2/access.c
index cb56e10955..e44a94d08d 100644
--- a/modules/access/v4l2/access.c
+++ b/modules/access/v4l2/access.c
@@ -37,7 +37,7 @@
 
 #include "v4l2.h"
 
-struct access_sys_t
+typedef struct
 {
     int fd;
     uint32_t block_flags;
@@ -48,7 +48,7 @@ struct access_sys_t
     };
     struct buffer_t *bufv;
     vlc_v4l2_ctrl_t *controls;
-};
+} access_sys_t;
 
 static block_t *MMapBlock (stream_t *, bool *);
 static block_t *ReadBlock (stream_t *, bool *);
diff --git a/modules/access/v4l2/demux.c b/modules/access/v4l2/demux.c
index c30b16373f..99ec83f624 100644
--- a/modules/access/v4l2/demux.c
+++ b/modules/access/v4l2/demux.c
@@ -42,7 +42,7 @@
 
 #include "v4l2.h"
 
-struct demux_sys_t
+typedef struct
 {
     int fd;
     vlc_thread_t thread;
@@ -62,7 +62,7 @@ struct demux_sys_t
 #ifdef ZVBI_COMPILED
     vlc_v4l2_vbi_t *vbi;
 #endif
-};
+} demux_sys_t;
 
 static void *UserPtrThread (void *);
 static void *MmapThread (void *);
diff --git a/modules/access/v4l2/radio.c b/modules/access/v4l2/radio.c
index c91ee2a512..bc458f71b9 100644
--- a/modules/access/v4l2/radio.c
+++ b/modules/access/v4l2/radio.c
@@ -30,12 +30,12 @@
 
 #include "v4l2.h"
 
-struct demux_sys_t
+typedef struct
 {
     int fd;
     vlc_v4l2_ctrl_t *controls;
     mtime_t start;
-};
+} demux_sys_t;
 
 static int RadioControl (demux_t *demux, int query, va_list args)
 {
diff --git a/modules/access/vcd/vcd.c b/modules/access/vcd/vcd.c
index 3463ee0adf..91a331ba38 100644
--- a/modules/access/vcd/vcd.c
+++ b/modules/access/vcd/vcd.c
@@ -63,7 +63,7 @@ vlc_module_end ()
 #define VCD_BLOCKS_ONCE 20
 #define VCD_DATA_ONCE   (VCD_BLOCKS_ONCE * VCD_DATA_SIZE)
 
-struct access_sys_t
+typedef struct
 {
     vcddev_t    *vcddev;                            /* vcd device descriptor */
     uint64_t    offset;
@@ -80,7 +80,7 @@ struct access_sys_t
 
     int         i_sector;                                  /* Current Sector */
     int         *p_sectors;                                 /* Track sectors */
-};
+} access_sys_t;
 
 static block_t *Block( stream_t *, bool * );
 static int      Seek( stream_t *, uint64_t );
diff --git a/modules/access/vdr.c b/modules/access/vdr.c
index cd9ee7fea6..33e570a7f4 100644
--- a/modules/access/vdr.c
+++ b/modules/access/vdr.c
@@ -106,7 +106,7 @@ vlc_module_end ()
 
 TYPEDEF_ARRAY( uint64_t, size_array_t );
 
-struct access_sys_t
+typedef struct
 {
     /* file sizes of all parts */
     size_array_t file_sizes;
@@ -128,7 +128,7 @@ struct access_sys_t
 
     /* file format: true=TS, false=PES */
     bool b_ts_format;
-};
+} access_sys_t;
 
 #define CURRENT_FILE_SIZE ARRAY_VAL(p_sys->file_sizes, p_sys->i_current_file)
 #define FILE_SIZE(pos)    ARRAY_VAL(p_sys->file_sizes, pos)
diff --git a/modules/access/vnc.c b/modules/access/vnc.c
index bb89f34800..fb59fd9b4a 100644
--- a/modules/access/vnc.c
+++ b/modules/access/vnc.c
@@ -111,7 +111,7 @@ vlc_module_begin()
     set_callbacks( Open, Close )
 vlc_module_end()
 
-struct demux_sys_t
+typedef struct
 {
     vlc_thread_t thread;
     int i_cancel_state;
@@ -125,7 +125,7 @@ struct demux_sys_t
     mtime_t i_starttime;
 
     es_out_id_t *es;
-};
+} demux_sys_t;
 
 static void *DemuxThread( void *p_data );
 
diff --git a/modules/access/wasapi.c b/modules/access/wasapi.c
index 58ee86c959..0aa6cb6d52 100644
--- a/modules/access/wasapi.c
+++ b/modules/access/wasapi.c
@@ -267,7 +267,7 @@ static es_out_id_t *CreateES(demux_t *demux, IAudioClient *client, bool loop,
     return es_out_Add(demux->out, &fmt);
 }
 
-struct demux_sys_t
+typedef struct
 {
     IAudioClient *client;
     es_out_id_t *es;
@@ -281,7 +281,7 @@ struct demux_sys_t
         HANDLE thread;
         HANDLE ready;
     };
-};
+} demux_sys_t;
 
 static unsigned __stdcall Thread(void *data)
 {
diff --git a/modules/access_output/http.c b/modules/access_output/http.c
index 78bbf88423..d36fe6e2b0 100644
--- a/modules/access_output/http.c
+++ b/modules/access_output/http.c
@@ -91,7 +91,7 @@ static const char *const ppsz_sout_options[] = {
 static ssize_t Write( sout_access_out_t *, block_t * );
 static int Control( sout_access_out_t *, int, va_list );
 
-struct sout_access_out_sys_t
+typedef struct
 {
     /* host */
     httpd_host_t        *p_httpd_host;
@@ -106,7 +106,7 @@ struct sout_access_out_sys_t
     bool                b_header_complete;
     bool                b_metacube;
     bool                b_has_keyframes;
-};
+} sout_access_out_sys_t;
 
 /* Definitions for the Metacube2 protocol, used to communicate with Cubemap. */
 
diff --git a/modules/access_output/livehttp.c b/modules/access_output/livehttp.c
index 904b1a7d66..30c33a1452 100644
--- a/modules/access_output/livehttp.c
+++ b/modules/access_output/livehttp.c
@@ -173,7 +173,7 @@ typedef struct output_segment
     uint8_t aes_ivs[16];
 } output_segment_t;
 
-struct sout_access_out_sys_t
+typedef struct
 {
     char *psz_cursegPath;
     char *psz_indexPath;
@@ -205,7 +205,7 @@ struct sout_access_out_sys_t
     uint8_t stuffing_bytes[16];
     ssize_t stuffing_size;
     vlc_array_t segments_t;
-};
+} sout_access_out_sys_t;
 
 static int LoadCryptFile( sout_access_out_t *p_access);
 static int CryptSetup( sout_access_out_t *p_access, char *keyfile );
diff --git a/modules/access_output/shout.c b/modules/access_output/shout.c
index 6bd0776ad9..6e25fbf870 100644
--- a/modules/access_output/shout.c
+++ b/modules/access_output/shout.c
@@ -152,10 +152,10 @@ static const char *const ppsz_sout_options[] = {
 static ssize_t Write( sout_access_out_t *, block_t * );
 static int Control( sout_access_out_t *, int, va_list );
 
-struct sout_access_out_sys_t
+typedef struct
 {
     shout_t *p_shout;
-};
+} sout_access_out_sys_t;
 
 /*****************************************************************************
  * Open: open the shout connection
diff --git a/modules/access_output/srt.c b/modules/access_output/srt.c
index 36516a0099..3dffed96b5 100644
--- a/modules/access_output/srt.c
+++ b/modules/access_output/srt.c
@@ -57,13 +57,13 @@ static const char *const srt_key_length_names[] = {
     N_("16 bytes"), N_("24 bytes"), N_("32 bytes"),
 };
 
-struct sout_access_out_sys_t
+typedef struct
 {
     SRTSOCKET     sock;
     int           i_poll_id;
     bool          b_interrupted;
     vlc_mutex_t   lock;
-};
+} sout_access_out_sys_t;
 
 static void srt_wait_interrupted(void *p_data)
 {
diff --git a/modules/access_output/udp.c b/modules/access_output/udp.c
index 472fd8c4a2..64684a6053 100644
--- a/modules/access_output/udp.c
+++ b/modules/access_output/udp.c
@@ -109,7 +109,7 @@ static int Control( sout_access_out_t *, int, va_list );
 static void* ThreadWrite( void * );
 static block_t *NewUDPPacket( sout_access_out_t *, mtime_t );
 
-struct sout_access_out_sys_t
+typedef struct
 {
     mtime_t       i_caching;
     int           i_handle;
@@ -121,7 +121,7 @@ struct sout_access_out_sys_t
     block_t      *p_buffer;
 
     vlc_thread_t  thread;
-};
+} sout_access_out_sys_t;
 
 #define DEFAULT_PORT 1234
 
diff --git a/modules/audio_filter/audiobargraph_a.c b/modules/audio_filter/audiobargraph_a.c
index bdccf32f38..0cd5ddc5bf 100644
--- a/modules/audio_filter/audiobargraph_a.c
+++ b/modules/audio_filter/audiobargraph_a.c
@@ -92,7 +92,7 @@ typedef struct ValueDate_t {
     struct ValueDate_t* next;
 } ValueDate_t;
 
-struct filter_sys_t
+typedef struct
 {
     bool            bargraph;
     int             bargraph_repetition;
@@ -105,7 +105,7 @@ struct filter_sys_t
     ValueDate_t*    last;
     int             started;
     mtime_t         lastAlarm;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Open: open the visualizer
diff --git a/modules/audio_filter/channel_mixer/dolby.c b/modules/audio_filter/channel_mixer/dolby.c
index 5e4f966a09..215089dca9 100644
--- a/modules/audio_filter/channel_mixer/dolby.c
+++ b/modules/audio_filter/channel_mixer/dolby.c
@@ -58,7 +58,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Internal data structures
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     int i_left;
     int i_center;
@@ -66,7 +66,7 @@ struct filter_sys_t
     int i_rear_left;
     int i_rear_center;
     int i_rear_right;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocate headphone downmixer
diff --git a/modules/audio_filter/channel_mixer/headphone.c b/modules/audio_filter/channel_mixer/headphone.c
index 918b68721f..37b9bf90c7 100644
--- a/modules/audio_filter/channel_mixer/headphone.c
+++ b/modules/audio_filter/channel_mixer/headphone.c
@@ -103,13 +103,13 @@ struct atomic_operation_t
     double d_amplitude_factor;
 };
 
-struct filter_sys_t
+typedef struct
 {
     size_t i_overflow_buffer_size;/* in bytes */
     float * p_overflow_buffer;
     unsigned int i_nb_atomic_operations;
     struct atomic_operation_t * p_atomic_operations;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Init: initialize internal data structures
@@ -129,7 +129,7 @@ struct filter_sys_t
  *
  *          x-axis
  *  */
-static void ComputeChannelOperations( struct filter_sys_t * p_data
+static void ComputeChannelOperations( filter_sys_t * p_data
         , unsigned int i_rate, unsigned int i_next_atomic_operation
         , int i_source_channel_offset, double d_x, double d_z
         , double d_compensation_length, double d_channel_amplitude_factor )
@@ -186,7 +186,7 @@ static void ComputeChannelOperations( struct filter_sys_t * p_data
     }
 }
 
-static int Init( vlc_object_t *p_this, struct filter_sys_t * p_data
+static int Init( vlc_object_t *p_this, filter_sys_t * p_data
         , unsigned int i_nb_channels, uint32_t i_physical_channels
         , unsigned int i_rate )
 {
@@ -451,7 +451,7 @@ static int OpenFilter( vlc_object_t *p_this )
     }
 
     /* Allocate the memory needed to store the module's structure */
-    p_sys = p_filter->p_sys = malloc( sizeof(struct filter_sys_t) );
+    p_sys = p_filter->p_sys = malloc( sizeof(filter_sys_t) );
     if( p_sys == NULL )
         return VLC_ENOMEM;
     p_sys->i_overflow_buffer_size = 0;
diff --git a/modules/audio_filter/channel_mixer/mono.c b/modules/audio_filter/channel_mixer/mono.c
index c54d56f79d..7a988150a5 100644
--- a/modules/audio_filter/channel_mixer/mono.c
+++ b/modules/audio_filter/channel_mixer/mono.c
@@ -61,7 +61,7 @@ struct atomic_operation_t
     double d_amplitude_factor;
 };
 
-struct filter_sys_t
+typedef struct
 {
     bool b_downmix;
 
@@ -73,7 +73,7 @@ struct filter_sys_t
     uint8_t * p_overflow_buffer;
     unsigned int i_nb_atomic_operations;
     struct atomic_operation_t * p_atomic_operations;
-};
+} filter_sys_t;
 
 #define MONO_DOWNMIX_TEXT N_("Use downmix algorithm")
 #define MONO_DOWNMIX_LONGTEXT N_("This option selects a stereo to mono " \
@@ -135,7 +135,7 @@ vlc_module_end ()
  *
  *          x-axis
  *  */
-static void ComputeChannelOperations( struct filter_sys_t * p_data,
+static void ComputeChannelOperations( filter_sys_t * p_data,
         unsigned int i_rate, unsigned int i_next_atomic_operation,
         int i_source_channel_offset, double d_x, double d_z,
         double d_compensation_length, double d_channel_amplitude_factor )
@@ -192,7 +192,7 @@ static void ComputeChannelOperations( struct filter_sys_t * p_data,
     }
 }
 
-static int Init( vlc_object_t *p_this, struct filter_sys_t * p_data,
+static int Init( vlc_object_t *p_this, filter_sys_t * p_data,
                  unsigned int i_nb_channels, uint32_t i_physical_channels,
                  unsigned int i_rate )
 {
diff --git a/modules/audio_filter/channel_mixer/remap.c b/modules/audio_filter/channel_mixer/remap.c
index aee515e625..b3d284a582 100644
--- a/modules/audio_filter/channel_mixer/remap.c
+++ b/modules/audio_filter/channel_mixer/remap.c
@@ -104,13 +104,13 @@ static block_t *Remap( filter_t *, block_t * );
 typedef void (*remap_fun_t)( filter_t *, const void *, void *,
                              int, unsigned, unsigned);
 
-struct filter_sys_t
+typedef struct
 {
     remap_fun_t pf_remap;
     int nb_in_ch[AOUT_CHAN_MAX];
     int8_t map_ch[AOUT_CHAN_MAX];
     bool b_normalize;
-};
+} filter_sys_t;
 
 static const uint32_t valid_channels[] = {
 /* list taken from aout_FormatPrintChannels */
diff --git a/modules/audio_filter/channel_mixer/spatialaudio.cpp b/modules/audio_filter/channel_mixer/spatialaudio.cpp
index f82794a8b5..6448585e37 100644
--- a/modules/audio_filter/channel_mixer/spatialaudio.cpp
+++ b/modules/audio_filter/channel_mixer/spatialaudio.cpp
@@ -380,7 +380,7 @@ static int OpenBinauralizer(vlc_object_t *p_this)
     aout_FormatPrepare(infmt);
     aout_FormatPrepare(outfmt);
 
-    p_filter->p_sys = reinterpret_cast<filter_sys_t*>(p_sys);
+    p_filter->p_sys = p_sys;
     p_filter->pf_audio_filter = Mix;
     p_filter->pf_flush = Flush;
     p_filter->pf_change_viewpoint = ChangeViewpoint;
@@ -513,7 +513,7 @@ static int Open(vlc_object_t *p_this)
         return VLC_EGENERIC;
     }
 
-    p_filter->p_sys = reinterpret_cast<filter_sys_t*>(p_sys);
+    p_filter->p_sys = p_sys;
     p_filter->pf_audio_filter = Mix;
     p_filter->pf_flush = Flush;
     p_filter->pf_change_viewpoint = ChangeViewpoint;
diff --git a/modules/audio_filter/channel_mixer/trivial.c b/modules/audio_filter/channel_mixer/trivial.c
index 942846e937..d84fb6e6dc 100644
--- a/modules/audio_filter/channel_mixer/trivial.c
+++ b/modules/audio_filter/channel_mixer/trivial.c
@@ -46,10 +46,10 @@ vlc_module_begin ()
     set_callbacks( Create, Destroy )
 vlc_module_end ()
 
-struct filter_sys_t
+typedef struct
 {
     int channel_map[AOUT_CHAN_MAX];
-};
+} filter_sys_t;
 
 /**
  * Trivially upmixes
diff --git a/modules/audio_filter/chorus_flanger.c b/modules/audio_filter/chorus_flanger.c
index 0fe19c208f..9f64ac4b07 100644
--- a/modules/audio_filter/chorus_flanger.c
+++ b/modules/audio_filter/chorus_flanger.c
@@ -38,6 +38,8 @@
  * Local prototypes
  *****************************************************************************/
 
+typedef struct filter_sys_t filter_sys_t;
+
 static int  Open     ( vlc_object_t * );
 static void Close    ( vlc_object_t * );
 static block_t *DoWork( filter_t *, block_t * );
diff --git a/modules/audio_filter/compressor.c b/modules/audio_filter/compressor.c
index 6a7f726f79..1e5951047b 100644
--- a/modules/audio_filter/compressor.c
+++ b/modules/audio_filter/compressor.c
@@ -80,7 +80,7 @@ typedef struct
 
 } lookahead;
 
-struct filter_sys_t
+typedef struct
 {
     float f_amp;
     float pf_as[A_TBL];
@@ -106,7 +106,7 @@ struct filter_sys_t
     float f_ratio;
     float f_knee;
     float f_makeup_gain;
-};
+} filter_sys_t;
 
 typedef union
 {
diff --git a/modules/audio_filter/converter/tospdif.c b/modules/audio_filter/converter/tospdif.c
index 8eb4d574b0..20da0894bc 100644
--- a/modules/audio_filter/converter/tospdif.c
+++ b/modules/audio_filter/converter/tospdif.c
@@ -51,7 +51,7 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
-struct filter_sys_t
+typedef struct
 {
     block_t *p_out_buf;
     size_t i_out_offset;
@@ -71,7 +71,7 @@ struct filter_sys_t
             bool b_skip;
         } dtshd;
     };
-};
+} filter_sys_t;
 
 #define SPDIF_HEADER_SIZE 8
 
diff --git a/modules/audio_filter/equalizer.c b/modules/audio_filter/equalizer.c
index f83d4599ca..84ea52959f 100644
--- a/modules/audio_filter/equalizer.c
+++ b/modules/audio_filter/equalizer.c
@@ -101,7 +101,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     /* Filter static config */
     int i_band;
@@ -123,7 +123,7 @@ struct filter_sys_t
     float y2[32][128][2];
 
     vlc_mutex_t lock;
-};
+} filter_sys_t;
 
 static block_t *DoWork( filter_t *, block_t * );
 
diff --git a/modules/audio_filter/gain.c b/modules/audio_filter/gain.c
index b03ef4dc40..609aa67afe 100644
--- a/modules/audio_filter/gain.c
+++ b/modules/audio_filter/gain.c
@@ -44,12 +44,12 @@ static int      Open        ( vlc_object_t * );
 static void     Close       ( vlc_object_t * );
 static block_t  *Process    ( filter_t *, block_t * );
 
-struct filter_sys_t
+typedef struct
 {
     audio_volume_t volume;
     float f_gain;
     module_t *module;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/audio_filter/normvol.c b/modules/audio_filter/normvol.c
index 3b09d9d935..52c400b09e 100644
--- a/modules/audio_filter/normvol.c
+++ b/modules/audio_filter/normvol.c
@@ -52,12 +52,12 @@ static int  Open     ( vlc_object_t * );
 static void Close    ( vlc_object_t * );
 static block_t *DoWork( filter_t *, block_t * );
 
-struct filter_sys_t
+typedef struct
 {
     int i_nb;
     float *p_last;
     float f_max;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Module descriptor
@@ -140,7 +140,7 @@ static block_t *DoWork( filter_t *p_filter, block_t *p_in_buf )
     float *p_out = (float*)p_in_buf->p_buffer;
     float *p_in =  (float*)p_in_buf->p_buffer;
 
-    struct filter_sys_t *p_sys = p_filter->p_sys;
+    filter_sys_t *p_sys = p_filter->p_sys;
 
     pf_sum = calloc( i_channels, sizeof(float) );
     if( !pf_sum )
diff --git a/modules/audio_filter/param_eq.c b/modules/audio_filter/param_eq.c
index 438f7adb8d..c01cabf3b0 100644
--- a/modules/audio_filter/param_eq.c
+++ b/modules/audio_filter/param_eq.c
@@ -83,7 +83,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     /* Filter static config */
     float   f_lowf, f_lowgain;
@@ -95,7 +95,7 @@ struct filter_sys_t
     float   coeffs[5*5];
     /* State */
     float  *p_state;
-};
+} filter_sys_t;
 
 
 
diff --git a/modules/audio_filter/resampler/bandlimited.c b/modules/audio_filter/resampler/bandlimited.c
index abd8a50161..90fbeb94f8 100644
--- a/modules/audio_filter/resampler/bandlimited.c
+++ b/modules/audio_filter/resampler/bandlimited.c
@@ -66,7 +66,7 @@ static void ResampleFloat( filter_t *p_filter,
 /*****************************************************************************
  * Local structures
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     int32_t *p_buf;                        /* this filter introduces a delay */
     size_t i_buf_size;
@@ -78,7 +78,7 @@ struct filter_sys_t
     bool b_first;
 
     date_t end_date;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/audio_filter/resampler/soxr.c b/modules/audio_filter/resampler/soxr.c
index 70fad88087..703b0545b4 100644
--- a/modules/audio_filter/resampler/soxr.c
+++ b/modules/audio_filter/resampler/soxr.c
@@ -80,7 +80,7 @@ vlc_module_begin ()
     add_shortcut( "soxr" )
 vlc_module_end ()
 
-struct filter_sys_t
+typedef struct
 {
     soxr_t  soxr;
     soxr_t  vr_soxr;
@@ -88,7 +88,7 @@ struct filter_sys_t
     double  f_fixed_ratio;
     size_t  i_last_olen;
     mtime_t i_last_pts;
-};
+} filter_sys_t;
 
 static block_t *Resample( filter_t *, block_t * );
 static block_t *Drain( filter_t * );
@@ -131,7 +131,7 @@ Open( vlc_object_t *p_obj, bool b_change_ratio )
      || !SoXR_GetFormat( p_filter->fmt_out.audio.i_format, &i_otype ) )
         return VLC_EGENERIC;
 
-    filter_sys_t *p_sys = calloc( 1, sizeof( struct filter_sys_t ) );
+    filter_sys_t *p_sys = calloc( 1, sizeof( filter_sys_t ) );
     if( unlikely( p_sys == NULL ) )
         return VLC_ENOMEM;
 
diff --git a/modules/audio_filter/resampler/speex.c b/modules/audio_filter/resampler/speex.c
index fb2e349d9e..992d084719 100644
--- a/modules/audio_filter/resampler/speex.c
+++ b/modules/audio_filter/resampler/speex.c
@@ -92,7 +92,7 @@ static int OpenResampler (vlc_object_t *obj)
         return VLC_ENOMEM;
     }
 
-    filter->p_sys = (filter_sys_t *)st;
+    filter->p_sys = st;
     filter->pf_audio_filter = Resample;
     return VLC_SUCCESS;
 }
diff --git a/modules/audio_filter/resampler/src.c b/modules/audio_filter/resampler/src.c
index 93febbf644..fda4e94b23 100644
--- a/modules/audio_filter/resampler/src.c
+++ b/modules/audio_filter/resampler/src.c
@@ -103,7 +103,7 @@ static int OpenResampler (vlc_object_t *obj)
         return VLC_EGENERIC;
     }
 
-    filter->p_sys = (filter_sys_t *)s;
+    filter->p_sys = s;
     filter->pf_audio_filter = Resample;
     return VLC_SUCCESS;
 }
diff --git a/modules/audio_filter/scaletempo.c b/modules/audio_filter/scaletempo.c
index f1f93bde1b..36a33ae09e 100644
--- a/modules/audio_filter/scaletempo.c
+++ b/modules/audio_filter/scaletempo.c
@@ -95,7 +95,7 @@ vlc_module_end ()
  * frame: a single set of samples, one for each channel
  * VLC uses these terms differently
  */
-struct filter_sys_t
+typedef struct
 {
     /* Filter static config */
     double    scale;
@@ -135,7 +135,7 @@ struct filter_sys_t
     filter_t * resampler;
     vlc_atomic_float rate_shift;
 #endif
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * best_overlap_offset: calculate best offset for overlap
diff --git a/modules/audio_filter/stereo_widen.c b/modules/audio_filter/stereo_widen.c
index 317868d495..69cb7e0e72 100644
--- a/modules/audio_filter/stereo_widen.c
+++ b/modules/audio_filter/stereo_widen.c
@@ -39,7 +39,7 @@ static block_t *Filter ( filter_t *, block_t * );
 static int paramCallback( vlc_object_t *, char const *, vlc_value_t ,
                             vlc_value_t , void * );
 
-struct filter_sys_t
+typedef struct
 {
     float *pf_ringbuf;  /* circular buffer to store samples */
     float *pf_write;    /* where to write current sample    */
@@ -48,7 +48,7 @@ struct filter_sys_t
     float f_feedback;
     float f_crossfeed;
     float f_dry_mix;
-};
+} filter_sys_t;
 
 #define HELP_TEXT N_("This filter enhances the stereo effect by "\
             "suppressing mono (signal common to both channels) "\
diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c
index 1e7889e6d8..acf3ed590d 100644
--- a/modules/audio_output/alsa.c
+++ b/modules/audio_output/alsa.c
@@ -40,7 +40,7 @@
 #include <alsa/version.h>
 
 /** Private data for an ALSA PCM playback stream */
-struct aout_sys_t
+typedef struct
 {
     snd_pcm_t *pcm;
     unsigned rate; /**< Sample rate */
@@ -51,7 +51,7 @@ struct aout_sys_t
     bool soft_mute;
     float soft_gain;
     char *device;
-};
+} aout_sys_t;
 
 enum {
     PASSTHROUGH_NONE,
diff --git a/modules/audio_output/amem.c b/modules/audio_output/amem.c
index db90fc250a..30535e1ab8 100644
--- a/modules/audio_output/amem.c
+++ b/modules/audio_output/amem.c
@@ -52,7 +52,7 @@ vlc_module_begin ()
 
 vlc_module_end ()
 
-struct aout_sys_t
+typedef struct
 {
     void *opaque;
     int (*setup) (void **, char *, unsigned *, unsigned *);
@@ -78,7 +78,7 @@ struct aout_sys_t
     float volume;
     bool mute;
     bool ready;
-};
+} aout_sys_t;
 
 static void Play (audio_output_t *aout, block_t *block)
 {
diff --git a/modules/audio_output/audiotrack.c b/modules/audio_output/audiotrack.c
index 238826bb95..db51da3dbe 100644
--- a/modules/audio_output/audiotrack.c
+++ b/modules/audio_output/audiotrack.c
@@ -79,7 +79,8 @@ static const struct {
     {  NULL, NULL, AT_DEV_DEFAULT },
 };
 
-struct aout_sys_t {
+typedef struct
+{
     /* sw gain */
     float soft_gain;
     bool soft_mute;
@@ -166,7 +167,7 @@ struct aout_sys_t {
             } bytebuffer;
         } u;
     } circular;
-};
+} aout_sys_t;
 
 /* Soft volume helper */
 #include "audio_output/volume.h"
diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c
index 1192cb3962..7d4b34a8c6 100644
--- a/modules/audio_output/auhal.c
+++ b/modules/audio_output/auhal.c
@@ -74,7 +74,7 @@ vlc_module_end ()
  * This structure is part of the audio output thread descriptor.
  * It describes the CoreAudio specific properties of an output thread.
  *****************************************************************************/
-struct aout_sys_t
+typedef struct
 {
     struct aout_sys_common c;
 
@@ -121,7 +121,7 @@ struct aout_sys_t
     bool                        b_mute;
 
     bool                        b_ignore_streams_changed_callback;
-};
+} aout_sys_t;
 
 #pragma mark -
 #pragma mark helpers
diff --git a/modules/audio_output/directsound.c b/modules/audio_output/directsound.c
index 7ede804abc..707d2d9deb 100644
--- a/modules/audio_output/directsound.c
+++ b/modules/audio_output/directsound.c
@@ -127,7 +127,7 @@ typedef struct aout_stream_sys
  * This structure is part of the audio output thread descriptor.
  * It describes the direct sound specific properties of an audio device.
  */
-struct aout_sys_t
+typedef struct
 {
     aout_stream_sys_t s;
     struct
@@ -136,7 +136,7 @@ struct aout_sys_t
         LONG          mb;
         bool          mute;
     } volume;
-};
+} aout_sys_t;
 
 static HRESULT Flush( aout_stream_sys_t *sys, bool drain);
 static HRESULT TimeGet( aout_stream_sys_t *sys, mtime_t *delay )
diff --git a/modules/audio_output/file.c b/modules/audio_output/file.c
index 267a2eac68..6fe0083a26 100644
--- a/modules/audio_output/file.c
+++ b/modules/audio_output/file.c
@@ -47,13 +47,13 @@
  * This structure is part of the audio output thread descriptor.
  * It describes the direct sound specific properties of an audio device.
  *****************************************************************************/
-struct aout_sys_t
+typedef struct
 {
     FILE     * p_file;
     bool b_add_wav_header;
 
     WAVEHEADER waveh;                      /* Wave header of the output file */
-};
+} aout_sys_t;
 
 #define CHANNELS_MAX 6
 static const int pi_channels_maps[CHANNELS_MAX+1] =
diff --git a/modules/audio_output/jack.c b/modules/audio_output/jack.c
index 5710fed72d..e995b10ff4 100644
--- a/modules/audio_output/jack.c
+++ b/modules/audio_output/jack.c
@@ -51,7 +51,7 @@ typedef jack_default_audio_sample_t jack_sample_t;
  * This structure is part of the audio output thread descriptor.
  * It describes some JACK specific variables.
  *****************************************************************************/
-struct aout_sys_t
+typedef struct
 {
     jack_ringbuffer_t *p_jack_ringbuffer;
     jack_client_t  *p_jack_client;
@@ -63,7 +63,7 @@ struct aout_sys_t
     float soft_gain;
     bool soft_mute;
     mtime_t paused; /**< Time when (last) paused */
-};
+} aout_sys_t;
 
 /*****************************************************************************
  * Local prototypes
@@ -116,7 +116,7 @@ vlc_module_end ()
 static int Start( audio_output_t *p_aout, audio_sample_format_t *restrict fmt )
 {
     char *psz_name;
-    struct aout_sys_t *p_sys = p_aout->sys;
+    aout_sys_t *p_sys = p_aout->sys;
     int status = VLC_SUCCESS;
     unsigned int i;
     int i_error;
@@ -285,7 +285,7 @@ error_out:
 
 static void Play (audio_output_t * p_aout, block_t * p_block)
 {
-    struct aout_sys_t *p_sys = p_aout->sys;
+    aout_sys_t *p_sys = p_aout->sys;
     jack_ringbuffer_t *rb = p_sys->p_jack_ringbuffer;
     const size_t bytes_per_frame = p_sys->i_channels * sizeof(jack_sample_t);
 
@@ -330,7 +330,7 @@ static void Pause(audio_output_t *aout, bool paused, mtime_t date)
 
 static void Flush(audio_output_t *p_aout, bool wait)
 {
-    struct aout_sys_t * p_sys = p_aout->sys;
+    aout_sys_t * p_sys = p_aout->sys;
     jack_ringbuffer_t *rb = p_sys->p_jack_ringbuffer;
 
     /* Sleep if wait was requested */
@@ -347,7 +347,7 @@ static void Flush(audio_output_t *p_aout, bool wait)
 
 static int TimeGet(audio_output_t *p_aout, mtime_t *delay)
 {
-    struct aout_sys_t * p_sys = p_aout->sys;
+    aout_sys_t * p_sys = p_aout->sys;
     jack_ringbuffer_t *rb = p_sys->p_jack_ringbuffer;
     const size_t bytes_per_frame = p_sys->i_channels * sizeof(jack_sample_t);
 
@@ -367,7 +367,7 @@ int Process( jack_nframes_t i_frames, void *p_arg )
     size_t bytes_read = 0;
     size_t frames_read;
     audio_output_t *p_aout = (audio_output_t*) p_arg;
-    struct aout_sys_t *p_sys = p_aout->sys;
+    aout_sys_t *p_sys = p_aout->sys;
 
     /* Get the next audio data buffer unless paused */
 
@@ -414,7 +414,7 @@ int Process( jack_nframes_t i_frames, void *p_arg )
 static int GraphChange( void *p_arg )
 {
   audio_output_t *p_aout = (audio_output_t*) p_arg;
-  struct aout_sys_t *p_sys = p_aout->sys;
+  aout_sys_t *p_sys = p_aout->sys;
   unsigned int i;
   jack_latency_range_t port_latency;
 
@@ -439,7 +439,7 @@ static int GraphChange( void *p_arg )
 static void Stop( audio_output_t *p_aout )
 {
     int i_error;
-    struct aout_sys_t *p_sys = p_aout->sys;
+    aout_sys_t *p_sys = p_aout->sys;
 
     i_error = jack_deactivate( p_sys->p_jack_client );
     if( i_error )
diff --git a/modules/audio_output/kai.c b/modules/audio_output/kai.c
index 34d7b53b6e..99ea583343 100644
--- a/modules/audio_output/kai.c
+++ b/modules/audio_output/kai.c
@@ -58,14 +58,14 @@ typedef struct audio_buffer_t audio_buffer_t;
  * This structure is part of the audio output thread descriptor.
  * It describes the specific properties of an audio device.
  *****************************************************************************/
-struct aout_sys_t
+typedef struct
 {
     audio_buffer_t *buffer;
     HKAI            hkai;
     float           soft_gain;
     bool            soft_mute;
     audio_sample_format_t format;
-};
+} aout_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index d3e0f4be9b..a4f99d3c5e 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -74,7 +74,7 @@ static void LeaveMTA(void)
 static wchar_t default_device[1] = L"";
 static char default_device_b[1] = "";
 
-struct aout_sys_t
+typedef struct
 {
     aout_stream_t *stream; /**< Underlying audio output stream */
     module_t *module;
@@ -99,7 +99,7 @@ struct aout_sys_t
     CONDITION_VARIABLE work;
     CONDITION_VARIABLE ready;
     vlc_thread_t thread; /**< Thread for audio session control */
-};
+} aout_sys_t;
 
 /* NOTE: The Core Audio API documentation totally fails to specify the thread
  * safety (or lack thereof) of the interfaces. This code takes the most
diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c
index e954ff6d49..475ac93e54 100644
--- a/modules/audio_output/opensles_android.c
+++ b/modules/audio_output/opensles_android.c
@@ -80,7 +80,7 @@ typedef SLresult (*slCreateEngine_t)(
 /*****************************************************************************
  *
  *****************************************************************************/
-struct aout_sys_t
+typedef struct
 {
     /* OpenSL objects */
     SLObjectItf                     engineObject;
@@ -118,7 +118,7 @@ struct aout_sys_t
     block_t                        *p_buffer_chain;
     block_t                       **pp_buffer_last;
     size_t                          samples;
-};
+} aout_sys_t;
 
 /*****************************************************************************
  * Local prototypes.
diff --git a/modules/audio_output/oss.c b/modules/audio_output/oss.c
index 0c3e6af25a..1fb380eb62 100644
--- a/modules/audio_output/oss.c
+++ b/modules/audio_output/oss.c
@@ -51,7 +51,7 @@
 
 #define A52_FRAME_NB 1536
 
-struct aout_sys_t
+typedef struct
 {
     int fd;
     audio_sample_format_t format;
@@ -59,7 +59,7 @@ struct aout_sys_t
     bool soft_mute;
     float soft_gain;
     char *device;
-};
+} aout_sys_t;
 
 #include "volume.h"
 
diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index e8feec3095..e216975e00 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -61,7 +61,7 @@ struct sink
     char name[1];
 };
 
-struct aout_sys_t
+typedef struct
 {
     pa_stream *stream; /**< PulseAudio playback stream object */
     pa_context *context; /**< PulseAudio connection context */
@@ -75,7 +75,7 @@ struct aout_sys_t
     char *sink_force; /**< Forced sink name (stream must be NULL) */
 
     struct sink *sinks; /**< Locally-cached list of sinks */
-};
+} aout_sys_t;
 
 static void VolumeReport(audio_output_t *aout)
 {
diff --git a/modules/audio_output/sndio.c b/modules/audio_output/sndio.c
index c5608b161d..548b6e31ca 100644
--- a/modules/audio_output/sndio.c
+++ b/modules/audio_output/sndio.c
@@ -51,7 +51,7 @@ static int MuteSet (audio_output_t *, bool);
 static void VolumeChanged (void *, unsigned);
 static void PositionChanged (void *, int);
 
-struct aout_sys_t
+typedef struct
 {
     struct sio_hdl *hdl;
     int started;
@@ -59,7 +59,7 @@ struct aout_sys_t
     unsigned rate;
     unsigned volume;
     bool mute;
-};
+} aout_sys_t;
 
 /** Initializes an sndio playback stream */
 static int Start (audio_output_t *aout, audio_sample_format_t *restrict fmt)
diff --git a/modules/audio_output/tizen_audio.c b/modules/audio_output/tizen_audio.c
index 4139df1ddc..b10265b9d2 100644
--- a/modules/audio_output/tizen_audio.c
+++ b/modules/audio_output/tizen_audio.c
@@ -39,7 +39,8 @@
 static int  Open( vlc_object_t * );
 static void Close( vlc_object_t * );
 
-struct aout_sys_t {
+typedef struct
+{
     /* sw gain */
     float               soft_gain;
     bool                soft_mute;
@@ -55,7 +56,7 @@ struct aout_sys_t {
 
     int (*pf_audio_out_drain)( audio_out_h output );
     int (*pf_audio_out_flush)( audio_out_h output );
-};
+} aout_sys_t;
 
 /* Soft volume helper */
 #include "audio_output/volume.h"
diff --git a/modules/audio_output/waveout.c b/modules/audio_output/waveout.c
index 746672fd37..5b67ddb0b4 100644
--- a/modules/audio_output/waveout.c
+++ b/modules/audio_output/waveout.c
@@ -54,6 +54,9 @@ static void Play         ( audio_output_t *, block_t * );
 /*****************************************************************************
  * notification_thread_t: waveOut event thread
  *****************************************************************************/
+
+typedef struct aout_sys_t aout_sys_t;
+
 struct lkwavehdr
 {
     WAVEHDR hdr;
diff --git a/modules/audio_output/winstore.c b/modules/audio_output/winstore.c
index d345673249..1990b899e4 100644
--- a/modules/audio_output/winstore.c
+++ b/modules/audio_output/winstore.c
@@ -50,12 +50,12 @@ static void LeaveMTA(void)
     CoUninitialize();
 }
 
-struct aout_sys_t
+typedef struct
 {
     aout_stream_t *stream; /**< Underlying audio output stream */
     module_t *module;
     IAudioClient *client;
-};
+} aout_sys_t;
 
 static int vlc_FromHR(audio_output_t *aout, HRESULT hr)
 {
diff --git a/modules/codec/a52.c b/modules/codec/a52.c
index 4e221286d7..3a552323d2 100644
--- a/modules/codec/a52.c
+++ b/modules/codec/a52.c
@@ -55,7 +55,7 @@
 static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
-struct decoder_sys_t
+typedef struct
 {
     a52_state_t     *p_liba52; /* liba52 internal structure */
     bool            b_dynrng; /* see below */
@@ -65,7 +65,7 @@ struct decoder_sys_t
 
     uint8_t         pi_chan_table[AOUT_CHAN_MAX]; /* channel reordering */
     bool            b_synced;
-};
+} decoder_sys_t;
 
 #define DYNRNG_TEXT N_("A/52 dynamic range compression")
 #define DYNRNG_LONGTEXT N_( \
diff --git a/modules/codec/adpcm.c b/modules/codec/adpcm.c
index a1979bd344..2028403a21 100644
--- a/modules/codec/adpcm.c
+++ b/modules/codec/adpcm.c
@@ -65,7 +65,7 @@ enum adpcm_codec_e
     ADPCM_EA
 };
 
-struct decoder_sys_t
+typedef struct
 {
     enum adpcm_codec_e codec;
 
@@ -74,7 +74,7 @@ struct decoder_sys_t
 
     date_t              end_date;
     int16_t            *prev;
-};
+} decoder_sys_t;
 
 static void DecodeAdpcmMs    ( decoder_t *, int16_t *, uint8_t * );
 static void DecodeAdpcmImaWav( decoder_t *, int16_t *, uint8_t * );
diff --git a/modules/codec/aes3.c b/modules/codec/aes3.c
index cf27aed845..a7e2cbd91f 100644
--- a/modules/codec/aes3.c
+++ b/modules/codec/aes3.c
@@ -58,13 +58,13 @@ vlc_module_end ()
 /*****************************************************************************
  * decoder_sys_t : aes3 decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Output properties
      */
     date_t end_date;
-};
+} decoder_sys_t;
 
 #define AES3_HEADER_LEN 4
 
diff --git a/modules/codec/aom.c b/modules/codec/aom.c
index a5759ee660..45a7462dbd 100644
--- a/modules/codec/aom.c
+++ b/modules/codec/aom.c
@@ -96,10 +96,10 @@ static void aom_err_msg(vlc_object_t *this, aom_codec_ctx_t *ctx,
 /*****************************************************************************
  * decoder_sys_t: libaom decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     aom_codec_ctx_t ctx;
-};
+} decoder_sys_t;
 
 static const struct
 {
@@ -327,10 +327,10 @@ static void CloseDecoder(vlc_object_t *p_this)
 /*****************************************************************************
  * encoder_sys_t: libaom encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     struct aom_codec_ctx ctx;
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * OpenEncoder: probe the encoder
diff --git a/modules/codec/araw.c b/modules/codec/araw.c
index 605e4f3822..d7248a1df3 100644
--- a/modules/codec/araw.c
+++ b/modules/codec/araw.c
@@ -69,12 +69,12 @@ vlc_module_end ()
 static int DecodeBlock( decoder_t *, block_t * );
 static void Flush( decoder_t * );
 
-struct decoder_sys_t
+typedef struct
 {
     void (*decode) (void *, const uint8_t *, unsigned);
     size_t framebits;
     date_t end_date;
-};
+} decoder_sys_t;
 
 static const uint16_t pi_channels_maps[] =
 {
diff --git a/modules/codec/arib/aribsub.c b/modules/codec/arib/aribsub.c
index 214f6f51af..d984d17572 100644
--- a/modules/codec/arib/aribsub.c
+++ b/modules/codec/arib/aribsub.c
@@ -66,7 +66,7 @@ vlc_module_end ()
  * Local structures
  ****************************************************************************/
 
-struct decoder_sys_t
+typedef struct
 {
     bool              b_a_profile;
     bool              b_ignore_ruby;
@@ -75,7 +75,7 @@ struct decoder_sys_t
 
     arib_instance_t  *p_arib_instance;
     char             *psz_arib_base_dir;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/codec/audiotoolbox_midi.c b/modules/codec/audiotoolbox_midi.c
index dc33f6df89..c1617472dd 100644
--- a/modules/codec/audiotoolbox_midi.c
+++ b/modules/codec/audiotoolbox_midi.c
@@ -65,13 +65,13 @@ vlc_module_begin()
 vlc_module_end()
 
 
-struct decoder_sys_t
+typedef struct
 {
     AUGraph     graph;
     AudioUnit   synthUnit;
     AudioUnit   outputUnit;
     date_t       end_date;
-};
+} decoder_sys_t;
 
 static int  DecodeBlock (decoder_t *p_dec, block_t *p_block);
 static void Flush (decoder_t *);
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
index b9eb7d5856..6cac62a073 100644
--- a/modules/codec/avcodec/audio.c
+++ b/modules/codec/avcodec/audio.c
@@ -47,7 +47,7 @@
 /*****************************************************************************
  * decoder_sys_t : decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     AVCodecContext *p_context;
     const AVCodec  *p_codec;
@@ -66,7 +66,7 @@ struct decoder_sys_t
     int     pi_extraction[AOUT_CHAN_MAX];
     int     i_previous_channels;
     uint64_t i_previous_layout;
-};
+} decoder_sys_t;
 
 #define BLOCK_FLAG_PRIVATE_REALLOCATED (1 << BLOCK_FLAG_PRIVATE_SHIFT)
 
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
index c1fef935df..0226ef281f 100644
--- a/modules/codec/avcodec/encoder.c
+++ b/modules/codec/avcodec/encoder.c
@@ -88,7 +88,7 @@ struct thread_context_t
 /*****************************************************************************
  * encoder_sys_t : libavcodec encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     /*
      * libavcodec properties
@@ -146,7 +146,7 @@ struct encoder_sys_t
     int        i_aac_profile; /* AAC profile to use.*/
 
     AVFrame    *frame;
-};
+} encoder_sys_t;
 
 
 /* Taken from audio.c*/
diff --git a/modules/codec/avcodec/subtitle.c b/modules/codec/avcodec/subtitle.c
index 2623a2c9b2..91c391115e 100644
--- a/modules/codec/avcodec/subtitle.c
+++ b/modules/codec/avcodec/subtitle.c
@@ -38,11 +38,12 @@
 
 #include "avcodec.h"
 
-struct decoder_sys_t {
+typedef struct
+{
     AVCodecContext *p_context;
     const AVCodec  *p_codec;
     bool b_need_ephemer; /* Does the format need the ephemer flag (no end time set) */
-};
+} decoder_sys_t;
 
 static subpicture_t *ConvertSubtitle(decoder_t *, AVSubtitle *, mtime_t pts,
                                      AVCodecContext *avctx);
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index a1c22c31d3..4fb7f70214 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -63,7 +63,7 @@ struct frame_info_s
 /*****************************************************************************
  * decoder_sys_t : decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     AVCodecContext *p_context;
     const AVCodec  *p_codec;
@@ -111,7 +111,7 @@ struct decoder_sys_t
     int level;
 
     vlc_sem_t sem_mt;
-};
+} decoder_sys_t;
 
 static inline void wait_mt(decoder_sys_t *sys)
 {
diff --git a/modules/codec/bpg.c b/modules/codec/bpg.c
index 28b0167a18..b6a3be8c54 100644
--- a/modules/codec/bpg.c
+++ b/modules/codec/bpg.c
@@ -29,10 +29,10 @@
 #include <vlc_codec.h>
 #include <libbpg.h>
 
-struct decoder_sys_t
+typedef struct
 {
     struct BPGDecoderContext *p_bpg;
-};
+} decoder_sys_t;
 
 static int  OpenDecoder(vlc_object_t *);
 static void CloseDecoder(vlc_object_t *);
diff --git a/modules/codec/cc.c b/modules/codec/cc.c
index d51a6d0569..3ae5a90cb7 100644
--- a/modules/codec/cc.c
+++ b/modules/codec/cc.c
@@ -211,7 +211,7 @@ static void         Eia608FillUpdaterRegions( subpicture_updater_sys_t *p_update
 /* It will be enough up to 63 B frames, which is far too high for
  * broadcast environment */
 #define CC_MAX_REORDER_SIZE (64)
-struct decoder_sys_t
+typedef struct
 {
     int      i_queue;
     block_t *p_queue;
@@ -226,7 +226,7 @@ struct decoder_sys_t
     cea708_t *p_cea708;
     eia608_t *p_eia608;
     bool b_opaque;
-};
+} decoder_sys_t;
 
 static int Decode( decoder_t *, block_t * );
 static void Flush( decoder_t * );
diff --git a/modules/codec/cdg.c b/modules/codec/cdg.c
index 084fc3b61b..970c19b15b 100644
--- a/modules/codec/cdg.c
+++ b/modules/codec/cdg.c
@@ -50,7 +50,7 @@
 
 #define CDG_SCREEN_PITCH CDG_SCREEN_WIDTH
 
-struct decoder_sys_t
+typedef struct
 {
     uint8_t  color[16][3];
     unsigned i_offseth;
@@ -59,7 +59,7 @@ struct decoder_sys_t
     uint8_t  *p_screen;
 
     int      i_packet;
-};
+} decoder_sys_t;
 
 #define CDG_PACKET_SIZE 24u
 
diff --git a/modules/codec/crystalhd.c b/modules/codec/crystalhd.c
index 4ca058e66e..532fef8ae5 100644
--- a/modules/codec/crystalhd.c
+++ b/modules/codec/crystalhd.c
@@ -103,7 +103,7 @@ static int crystal_insert_sps_pps(decoder_t *, uint8_t *, uint32_t);
 /*****************************************************************************
  * decoder_sys_t : CrysalHD decoder structure
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     HANDLE bcm_handle;       /* Device Handle */
 
@@ -130,7 +130,7 @@ struct decoder_sys_t
                             BC_DTS_PROC_OUT *pOut );
     BC_STATUS (WINAPI *OurDtsIsEndOfStream)( HANDLE hDevice, U8* bEOS );
 #endif
-};
+} decoder_sys_t;
 
 /*****************************************************************************
 * OpenDecoder: probe the decoder and return score
diff --git a/modules/codec/cvdsub.c b/modules/codec/cvdsub.c
index c6fd0b0ddd..1c40eedba9 100644
--- a/modules/codec/cvdsub.c
+++ b/modules/codec/cvdsub.c
@@ -72,7 +72,7 @@ static void RenderImage( decoder_t *, block_t *, subpicture_region_t * );
 #define SUBTITLE_BLOCK_PARTIAL 1
 #define SUBTITLE_BLOCK_COMPLETE 2
 
-struct decoder_sys_t
+typedef struct
 {
   int      b_packetizer;
 
@@ -100,7 +100,7 @@ struct decoder_sys_t
 
   uint8_t p_palette[4][4];       /* Palette of colors used in subtitle */
   uint8_t p_palette_highlight[4][4];
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * DecoderOpen: open/initialize the cvdsub decoder.
diff --git a/modules/codec/daala.c b/modules/codec/daala.c
index 95e61bb9ff..25b879e112 100644
--- a/modules/codec/daala.c
+++ b/modules/codec/daala.c
@@ -45,7 +45,7 @@
 /*****************************************************************************
  * decoder_sys_t : daala decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /* Module mode */
     bool b_packetizer;
@@ -71,7 +71,7 @@ struct decoder_sys_t
      * Common properties
      */
     mtime_t i_pts;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
@@ -579,12 +579,12 @@ static void daala_CopyPicture( picture_t *p_pic,
 }
 
 #ifdef ENABLE_SOUT
-struct encoder_sys_t
+typedef struct
 {
     daala_info      di;                     /* daala bitstream settings */
     daala_comment   dc;                     /* daala comment header */
     daala_enc_ctx   *dcx;                   /* daala context */
-};
+} encoder_sys_t;
 
 static int OpenEncoder( vlc_object_t *p_this )
 {
diff --git a/modules/codec/dca.c b/modules/codec/dca.c
index 2a90fb3ac2..91d286b0cd 100644
--- a/modules/codec/dca.c
+++ b/modules/codec/dca.c
@@ -46,7 +46,7 @@
 static int  Open ( vlc_object_t * );
 static void Close( vlc_object_t * );
 
-struct decoder_sys_t
+typedef struct
 {
     dca_state_t     *p_libdca; /* libdca internal structure */
     bool            b_dynrng; /* see below */
@@ -56,7 +56,7 @@ struct decoder_sys_t
 
     uint8_t         pi_chan_table[AOUT_CHAN_MAX]; /* channel reordering */
     bool            b_synced;
-};
+} decoder_sys_t;
 
 #define DYNRNG_TEXT N_("DTS dynamic range compression")
 #define DYNRNG_LONGTEXT N_( \
diff --git a/modules/codec/dmo/dmo.c b/modules/codec/dmo/dmo.c
index 0277b47712..3a447cb8d6 100644
--- a/modules/codec/dmo/dmo.c
+++ b/modules/codec/dmo/dmo.c
@@ -117,7 +117,7 @@ vlc_module_end ()
 /****************************************************************************
  * Decoder descriptor declaration
  ****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     HINSTANCE hmsdmo_dll;
     IMediaObject *p_dmo;
@@ -132,7 +132,7 @@ struct decoder_sys_t
     vlc_cond_t   wait_input, wait_output;
     bool         b_ready, b_works;
     block_t     *p_input;
-};
+} decoder_sys_t;
 
 const GUID IID_IWMCodecPrivateData = {0x73f0be8e, 0x57f7, 0x4f01, {0xaa, 0x66, 0x9f, 0x57, 0x34, 0xc, 0xfe, 0xe}};
 const GUID IID_IMediaObject = {0xd8ad0f58, 0x5494, 0x4102, {0x97, 0xc5, 0xec, 0x79, 0x8e, 0x59, 0xbc, 0xf4}};
@@ -1043,7 +1043,7 @@ static void *DecoderThread( void *data )
 /****************************************************************************
  * Encoder descriptor declaration
  ****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     HINSTANCE hmsdmo_dll;
     IMediaObject *p_dmo;
@@ -1052,7 +1052,7 @@ struct encoder_sys_t
 
     date_t end_date;
 
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * EncoderOpen: open dmo codec
diff --git a/modules/codec/dvbsub.c b/modules/codec/dvbsub.c
index 2040b90c77..f28b824a06 100644
--- a/modules/codec/dvbsub.c
+++ b/modules/codec/dvbsub.c
@@ -249,7 +249,7 @@ typedef struct
 
 } dvbsub_page_t;
 
-struct decoder_sys_t
+typedef struct
 {
     bs_t               bs;
 
@@ -270,7 +270,7 @@ struct decoder_sys_t
     /* this is very small, so keep forever */
     dvbsub_display_t   display;
     dvbsub_clut_t      default_clut;
-};
+} decoder_sys_t;
 
 
 /* List of different SEGMENT TYPES */
@@ -1682,7 +1682,7 @@ typedef struct encoder_region_t
 
 } encoder_region_t;
 
-struct encoder_sys_t
+typedef struct
 {
     unsigned int i_page_ver;
     unsigned int i_region_ver;
@@ -1696,7 +1696,7 @@ struct encoder_sys_t
     /* subpicture positioning */
     int i_offset_x;
     int i_offset_y;
-};
+} encoder_sys_t;
 
 #ifdef ENABLE_SOUT
 static void encode_page_composition( encoder_t *, bs_t *, subpicture_t * );
diff --git a/modules/codec/faad.c b/modules/codec/faad.c
index 16d0b0c765..ec1788cce7 100644
--- a/modules/codec/faad.c
+++ b/modules/codec/faad.c
@@ -65,7 +65,7 @@ static int DecodeBlock( decoder_t *, block_t * );
 static void Flush( decoder_t * );
 static void DoReordering( uint32_t *, uint32_t *, int, int, uint8_t * );
 
-struct decoder_sys_t
+typedef struct
 {
     /* faad handler */
     NeAACDecHandle *hfaad;
@@ -80,7 +80,7 @@ struct decoder_sys_t
     uint32_t pi_channel_positions[MPEG4_ASC_MAX_INDEXEDPOS];
 
     bool b_sbr, b_ps, b_discontinuity;
-};
+} decoder_sys_t;
 
 #if MPEG4_ASC_MAX_INDEXEDPOS != LFE_CHANNEL
     #error MPEG4_ASC_MAX_INDEXEDPOS != LFE_CHANNEL
diff --git a/modules/codec/fdkaac.c b/modules/codec/fdkaac.c
index d64adf0459..44fa6c1e20 100644
--- a/modules/codec/fdkaac.c
+++ b/modules/codec/fdkaac.c
@@ -131,7 +131,7 @@ static const char *const ppsz_enc_options[] = {
 /*****************************************************************************
  * encoder_sys_t : aac encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     double d_compression_ratio;
     mtime_t i_pts_last;
@@ -139,7 +139,7 @@ struct encoder_sys_t
     int i_frame_size;
     int i_maxoutputsize; /* Maximum buffer size for encoded output */
     HANDLE_AACENCODER handle;
-};
+} encoder_sys_t;
 
 static const char *fdkaac_error(AACENC_ERROR erraac)
 {
diff --git a/modules/codec/flac.c b/modules/codec/flac.c
index 13580f9a90..45fd417099 100644
--- a/modules/codec/flac.c
+++ b/modules/codec/flac.c
@@ -56,7 +56,7 @@
 /*****************************************************************************
  * decoder_sys_t : FLAC decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input/Output properties
@@ -73,7 +73,7 @@ struct decoder_sys_t
 
     uint8_t rgi_channels_reorder[AOUT_CHAN_MAX];
     bool b_stream_info;
-};
+} decoder_sys_t;
 
 static const int pi_channels_maps[FLAC__MAX_CHANNELS + 1] =
 {
@@ -702,7 +702,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t *p_block )
 /*****************************************************************************
  * encoder_sys_t : flac encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -726,7 +726,7 @@ struct encoder_sys_t
      * Common properties
      */
     mtime_t i_pts;
-};
+} encoder_sys_t;
 
 #define STREAMINFO_SIZE 34
 
diff --git a/modules/codec/fluidsynth.c b/modules/codec/fluidsynth.c
index 1b69a3718d..965f198fc7 100644
--- a/modules/codec/fluidsynth.c
+++ b/modules/codec/fluidsynth.c
@@ -87,13 +87,13 @@ vlc_module_begin ()
 vlc_module_end ()
 
 
-struct decoder_sys_t
+typedef struct
 {
     fluid_settings_t *settings;
     fluid_synth_t    *synth;
     int               soundfont;
     date_t            end_date;
-};
+} decoder_sys_t;
 
 
 static int  DecodeBlock (decoder_t *p_dec, block_t *p_block);
diff --git a/modules/codec/g711.c b/modules/codec/g711.c
index 911e4e248f..6c41a062e4 100644
--- a/modules/codec/g711.c
+++ b/modules/codec/g711.c
@@ -57,11 +57,11 @@ vlc_module_begin ()
 #endif
 vlc_module_end ()
 
-struct decoder_sys_t
+typedef struct
 {
     const int16_t *table;
     date_t end_date;
-};
+} decoder_sys_t;
 
 static const uint16_t pi_channels_maps[] =
 {
diff --git a/modules/codec/gstreamer/gstdecode.c b/modules/codec/gstreamer/gstdecode.c
index 05aa500205..08cf2b599f 100644
--- a/modules/codec/gstreamer/gstdecode.c
+++ b/modules/codec/gstreamer/gstdecode.c
@@ -42,7 +42,7 @@
 #include "gstvlcpictureplaneallocator.h"
 #include "gstvlcvideosink.h"
 
-struct decoder_sys_t
+typedef struct
 {
     GstElement *p_decoder;
     GstElement *p_decode_src;
@@ -57,7 +57,7 @@ struct decoder_sys_t
     GstAtomicQueue *p_que;
     bool b_prerolled;
     bool b_running;
-};
+} decoder_sys_t;
 
 typedef struct
 {
diff --git a/modules/codec/jpeg.c b/modules/codec/jpeg.c
index c071854725..ebc1c25a50 100644
--- a/modules/codec/jpeg.c
+++ b/modules/codec/jpeg.c
@@ -66,12 +66,12 @@ typedef struct jpeg_sys_t jpeg_sys_t;
 /*
  * jpeg decoder descriptor
  */
-struct decoder_sys_t
+typedef struct
 {
     JPEG_SYS_COMMON_MEMBERS
 
     struct jpeg_decompress_struct p_jpeg;
-};
+} decoder_sys_t;
 
 static int  OpenDecoder(vlc_object_t *);
 static void CloseDecoder(vlc_object_t *);
@@ -81,7 +81,7 @@ static int DecodeBlock(decoder_t *, block_t *);
 /*
  * jpeg encoder descriptor
  */
-struct encoder_sys_t
+typedef struct
 {
     JPEG_SYS_COMMON_MEMBERS
 
@@ -89,7 +89,7 @@ struct encoder_sys_t
 
     int i_blocksize;
     int i_quality;
-};
+} encoder_sys_t;
 
 static const char * const ppsz_enc_options[] = {
     "quality",
diff --git a/modules/codec/kate.c b/modules/codec/kate.c
index 663635ed70..d914869679 100644
--- a/modules/codec/kate.c
+++ b/modules/codec/kate.c
@@ -63,7 +63,7 @@
 /*****************************************************************************
  * decoder_sys_t : decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
 #ifdef ENABLE_PACKETIZER
     /* Module mode */
@@ -113,7 +113,7 @@ struct decoder_sys_t
      */
     bool   b_formatted;
     bool   b_use_tiger;
-};
+} decoder_sys_t;
 
 struct subpicture_updater_sys_t
 {
diff --git a/modules/codec/libass.c b/modules/codec/libass.c
index f743fbb616..d1dc6ff51f 100644
--- a/modules/codec/libass.c
+++ b/modules/codec/libass.c
@@ -72,7 +72,7 @@ static int DecodeBlock( decoder_t *, block_t * );
 static void Flush( decoder_t * );
 
 /* */
-struct decoder_sys_t
+typedef struct
 {
     mtime_t        i_max_stop;
 
@@ -87,7 +87,7 @@ struct decoder_sys_t
 
     /* */
     ASS_Track      *p_track;
-};
+} decoder_sys_t;
 static void DecSysRelease( decoder_sys_t *p_sys );
 static void DecSysHold( decoder_sys_t *p_sys );
 
diff --git a/modules/codec/libmpeg2.c b/modules/codec/libmpeg2.c
index f58972ad18..db003980b8 100644
--- a/modules/codec/libmpeg2.c
+++ b/modules/codec/libmpeg2.c
@@ -59,7 +59,7 @@ typedef struct
     bool      b_displayed;
 } picture_dpb_t;
 
-struct decoder_sys_t
+typedef struct
 {
     /*
      * libmpeg2 properties
@@ -103,7 +103,7 @@ struct decoder_sys_t
 #endif
     uint8_t        *p_gop_user_data;
     uint32_t        i_gop_user_data;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/codec/lpcm.c b/modules/codec/lpcm.c
index 5a9b8c3d35..a39b7e5655 100644
--- a/modules/codec/lpcm.c
+++ b/modules/codec/lpcm.c
@@ -80,7 +80,7 @@ vlc_module_end ()
 /*****************************************************************************
  * decoder_sys_t : lpcm decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /* Module mode */
     bool b_packetizer;
@@ -95,10 +95,10 @@ struct decoder_sys_t
     int      i_type;
     uint8_t  i_chans_to_reorder;
     uint8_t  pi_chan_table[AOUT_CHAN_MAX];
-};
+} decoder_sys_t;
 
 #ifdef ENABLE_SOUT
-struct encoder_sys_t
+typedef struct
 {
     int     i_channels;
     int     i_rate;
@@ -107,7 +107,7 @@ struct encoder_sys_t
     uint8_t *p_buffer;
     int     i_buffer_used;
     int     i_frame_num;
-};
+} encoder_sys_t;
 #endif
 
 /*
diff --git a/modules/codec/mad.c b/modules/codec/mad.c
index 194182961d..665e269c4b 100644
--- a/modules/codec/mad.c
+++ b/modules/codec/mad.c
@@ -59,7 +59,7 @@ static void Close( vlc_object_t * );
 /*****************************************************************************
  * Local structures
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     struct mad_stream mad_stream;
     struct mad_frame  mad_frame;
@@ -67,7 +67,7 @@ struct decoder_sys_t
 
     int               i_reject_count;
     block_t          *p_last_buf;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/codec/mft.c b/modules/codec/mft.c
index 3cf6aa494d..09fd2c7b7b 100644
--- a/modules/codec/mft.c
+++ b/modules/codec/mft.c
@@ -84,7 +84,7 @@ typedef struct
     HRESULT (STDCALL *fptr_MFCreateAlignedMemoryBuffer)(DWORD cbMaxLength, DWORD fAlignmentFlags, IMFMediaBuffer **ppBuffer);
 } MFHandle;
 
-struct decoder_sys_t
+typedef struct
 {
     MFHandle mf_handle;
 
@@ -112,7 +112,7 @@ struct decoder_sys_t
 
     /* H264 only. */
     uint8_t nal_length_size;
-};
+} decoder_sys_t;
 
 static const int pi_channels_maps[9] =
 {
diff --git a/modules/codec/mpg123.c b/modules/codec/mpg123.c
index a4f9ac9b7b..ccbff84e9c 100644
--- a/modules/codec/mpg123.c
+++ b/modules/codec/mpg123.c
@@ -50,13 +50,13 @@ static vlc_mutex_t mpg123_mutex = VLC_STATIC_MUTEX;
 /*****************************************************************************
  * Local structures
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     mpg123_handle * p_handle;
     date_t          end_date;
     block_t       * p_out;
     bool            b_opened;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/codec/oggspots.c b/modules/codec/oggspots.c
index dc3e21cd93..f2b9f3cb42 100644
--- a/modules/codec/oggspots.c
+++ b/modules/codec/oggspots.c
@@ -39,7 +39,7 @@
 /*****************************************************************************
  * decoder_sys_t : oggspots decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /* Module mode */
     bool b_packetizer;
@@ -58,7 +58,7 @@ struct decoder_sys_t
      * Common properties
      */
     mtime_t i_pts;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/codec/omxil/mediacodec.c b/modules/codec/omxil/mediacodec.c
index 1a85452fae..1b7851fdb9 100644
--- a/modules/codec/omxil/mediacodec.c
+++ b/modules/codec/omxil/mediacodec.c
@@ -68,7 +68,7 @@ typedef void (*dec_on_flush_cb)(decoder_t *);
 typedef int (*dec_process_output_cb)(decoder_t *, mc_api_out *, picture_t **,
                                      block_t **);
 
-struct decoder_sys_t
+typedef struct
 {
     mc_api api;
 
@@ -131,7 +131,7 @@ struct decoder_sys_t
             int pi_extraction[AOUT_CHAN_MAX];
         } audio;
     };
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/codec/omxil/omxil.h b/modules/codec/omxil/omxil.h
index bec0a51799..616299db6f 100644
--- a/modules/codec/omxil/omxil.h
+++ b/modules/codec/omxil/omxil.h
@@ -82,7 +82,7 @@ typedef struct OmxPort
     OMX_BOOL b_flushed;
 } OmxPort;
 
-struct decoder_sys_t
+typedef struct
 {
     OMX_HANDLETYPE omx_handle;
 
@@ -109,4 +109,4 @@ struct decoder_sys_t
     uint8_t i_nal_size_length; /* Length of the NAL size field for H264 */
     int b_use_pts;
 
-};
+} decoder_sys_t;
diff --git a/modules/codec/opus.c b/modules/codec/opus.c
index 696c0d3637..f3218572c2 100644
--- a/modules/codec/opus.c
+++ b/modules/codec/opus.c
@@ -77,7 +77,7 @@ vlc_module_end ()
 /*****************************************************************************
  * decoder_sys_t : opus decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -94,7 +94,7 @@ struct decoder_sys_t
      * Common properties
      */
     date_t end_date;
-};
+} decoder_sys_t;
 
 static const int pi_channels_maps[9] =
 {
@@ -518,7 +518,7 @@ static void CloseDecoder( vlc_object_t *p_this )
    packet per page. */
 static const unsigned OPUS_FRAME_SIZE = 960; /* 48000 * 20 / 1000 */
 
-struct encoder_sys_t
+typedef struct
 {
     OpusMSEncoder *enc;
     float *buffer;
@@ -526,7 +526,7 @@ struct encoder_sys_t
     int i_samples_delay;
     block_t *padding;
     int nb_streams;
-};
+} encoder_sys_t;
 
 static unsigned fill_buffer(encoder_t *enc, unsigned src_start, block_t *src,
                             unsigned samples)
diff --git a/modules/codec/png.c b/modules/codec/png.c
index e23f6dc2ae..9f9dc3ef45 100644
--- a/modules/codec/png.c
+++ b/modules/codec/png.c
@@ -55,10 +55,10 @@ typedef struct png_sys_t png_sys_t;
 /*****************************************************************************
  * decoder_sys_t : png decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     PNG_SYS_COMMON_MEMBERS
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
@@ -71,11 +71,11 @@ static int DecodeBlock  ( decoder_t *, block_t * );
 /*
  * png encoder descriptor
  */
-struct encoder_sys_t
+typedef struct
 {
     PNG_SYS_COMMON_MEMBERS
     int i_blocksize;
-};
+} encoder_sys_t;
 
 static int  OpenEncoder(vlc_object_t *);
 static void CloseEncoder(vlc_object_t *);
diff --git a/modules/codec/qsv.c b/modules/codec/qsv.c
index 17a8a0408f..6ae7bcdfb5 100644
--- a/modules/codec/qsv.c
+++ b/modules/codec/qsv.c
@@ -283,7 +283,7 @@ typedef struct async_task_t
 
 TYPED_FIFO(async_task_t, async_task_t)
 
-struct encoder_sys_t
+typedef struct
 {
     mfxSession       session;             // Intel Media SDK Session.
     mfxVideoParam    params;              // Encoding parameters.
@@ -297,7 +297,7 @@ struct encoder_sys_t
 
     picture_pool_t   *input_pool;         // pool of pictures to feed the decoder
                                           //  as it doesn't like constantly changing buffers
-};
+} encoder_sys_t;
 
 static block_t *Encode(encoder_t *, picture_t *);
 
diff --git a/modules/codec/rawvideo.c b/modules/codec/rawvideo.c
index 8fdd57ec21..7d4ca5eda8 100644
--- a/modules/codec/rawvideo.c
+++ b/modules/codec/rawvideo.c
@@ -35,7 +35,7 @@
 /*****************************************************************************
  * decoder_sys_t : raw video decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -48,7 +48,7 @@ struct decoder_sys_t
      * Common properties
      */
     date_t pts;
-};
+} decoder_sys_t;
 
 /****************************************************************************
  * Local prototypes
diff --git a/modules/codec/schroedinger.c b/modules/codec/schroedinger.c
index 405d2b4382..697c433e45 100644
--- a/modules/codec/schroedinger.c
+++ b/modules/codec/schroedinger.c
@@ -536,7 +536,7 @@ struct picture_free_t
 /*****************************************************************************
  * decoder_sys_t : Schroedinger decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Dirac properties
@@ -545,7 +545,7 @@ struct decoder_sys_t
     mtime_t i_frame_pts_delta;
     SchroDecoder *p_schro;
     SchroVideoFormat *p_format;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * OpenDecoder: probe the decoder and return score
@@ -891,7 +891,7 @@ struct picture_pts_t
  * encoder_sys_t : Schroedinger encoder descriptor
  *****************************************************************************/
 #define SCHRO_PTS_TLB_SIZE 256
-struct encoder_sys_t
+typedef struct
 {
     /*
      * Schro properties
@@ -912,7 +912,7 @@ struct encoder_sys_t
 
     bool b_eos_signalled;
     bool b_eos_pulled;
-};
+} encoder_sys_t;
 
 static struct
 {
diff --git a/modules/codec/scte18.c b/modules/codec/scte18.c
index ebcb9315cd..bf4c623087 100644
--- a/modules/codec/scte18.c
+++ b/modules/codec/scte18.c
@@ -46,10 +46,10 @@ vlc_module_begin ()
     set_callbacks(Open, Close)
 vlc_module_end ()
 
-struct decoder_sys_t
+typedef struct
 {
     atsc_a65_handle_t *p_handle;
-};
+} decoder_sys_t;
 
 //#define GPS_UTC_EPOCH_OFFSET 315964800
 //#define GPS_CUR_UTC_LEAP_OFFSET  16 /* 1 Jul 2015 */
diff --git a/modules/codec/scte27.c b/modules/codec/scte27.c
index 797af40715..b918919ba0 100644
--- a/modules/codec/scte27.c
+++ b/modules/codec/scte27.c
@@ -50,12 +50,13 @@ vlc_module_end ()
 /****************************************************************************
  * Local prototypes
  ****************************************************************************/
-struct decoder_sys_t {
+typedef struct
+{
     int     segment_id;
     int     segment_size;
     uint8_t *segment_buffer;
     mtime_t segment_date;
-};
+} decoder_sys_t;
 
 typedef struct {
     uint8_t y, u, v;
diff --git a/modules/codec/sdl_image.c b/modules/codec/sdl_image.c
index 65a1223e1a..54f1adb840 100644
--- a/modules/codec/sdl_image.c
+++ b/modules/codec/sdl_image.c
@@ -38,10 +38,10 @@
 /*****************************************************************************
  * decoder_sys_t : sdl decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     const char *psz_sdl_type;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/codec/shine.c b/modules/codec/shine.c
index 31dc9f0299..ef62376bcd 100644
--- a/modules/codec/shine.c
+++ b/modules/codec/shine.c
@@ -40,7 +40,7 @@
 
 #include <shine/layer3.h>
 
-struct encoder_sys_t
+typedef struct
 {
     shine_t s;
     unsigned int samples_per_frame;
@@ -48,7 +48,7 @@ struct encoder_sys_t
 
     unsigned int i_buffer;
     uint8_t *p_buffer;
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/codec/speex.c b/modules/codec/speex.c
index bfaf85a3db..b2375014e6 100644
--- a/modules/codec/speex.c
+++ b/modules/codec/speex.c
@@ -147,7 +147,7 @@ static const char *const ppsz_enc_options[] = {
 /*****************************************************************************
  * decoder_sys_t : speex decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /* Module mode */
     bool b_packetizer;
@@ -172,7 +172,7 @@ struct decoder_sys_t
      */
     date_t end_date;
 
-};
+} decoder_sys_t;
 
 static const int pi_channels_maps[6] =
 {
@@ -937,7 +937,7 @@ static void CloseDecoder( vlc_object_t *p_this )
  *****************************************************************************/
 #define MAX_FRAME_BYTES 2000
 
-struct encoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -959,7 +959,7 @@ struct encoder_sys_t
     int i_frame_length;
     int i_samples_delay;
     int i_frame_size;
-};
+} encoder_sys_t;
 
 static block_t *Encode   ( encoder_t *, block_t * );
 
diff --git a/modules/codec/spudec/spudec.h b/modules/codec/spudec/spudec.h
index ab53413bbc..bbab8da15a 100644
--- a/modules/codec/spudec/spudec.h
+++ b/modules/codec/spudec/spudec.h
@@ -23,7 +23,7 @@
 
 /* #define DEBUG_SPUDEC 1 */
 
-struct decoder_sys_t
+typedef struct
 {
     bool b_packetizer;
     bool b_disabletrans;
@@ -37,7 +37,7 @@ struct decoder_sys_t
 
     /* We will never overflow */
     uint8_t buffer[65536];
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Amount of bytes we GetChunk() in one go
diff --git a/modules/codec/stl.c b/modules/codec/stl.c
index 7211ad368a..3c45dfeb0a 100644
--- a/modules/codec/stl.c
+++ b/modules/codec/stl.c
@@ -99,11 +99,12 @@ typedef struct {
     const char *str;
 } cct_number_t;
 
-struct decoder_sys_t {
+typedef struct
+{
     stl_sg_t groups[STL_GROUPS_MAX + 1];
     cct_number_value_t cct;
     uint8_t i_fps;
-};
+} decoder_sys_t;
 
 static cct_number_t cct_nums[] = { {CCT_ISO_6937_2, "ISO_6937-2"},
                                    {CCT_ISO_8859_5, "ISO_8859-5"},
diff --git a/modules/codec/subsdec.c b/modules/codec/subsdec.c
index 9b6f5c57cd..05e897ef6a 100644
--- a/modules/codec/subsdec.c
+++ b/modules/codec/subsdec.c
@@ -200,13 +200,13 @@ vlc_module_end ()
  *****************************************************************************/
 #define NO_BREAKING_SPACE  " "
 
-struct decoder_sys_t
+typedef struct
 {
     int                 i_align;          /* Subtitles alignment on the vout */
 
     vlc_iconv_t         iconv_handle;            /* handle to iconv instance */
     bool                b_autodetect_utf8;
-};
+} decoder_sys_t;
 
 
 static int             DecodeBlock   ( decoder_t *, block_t * );
diff --git a/modules/codec/substx3g.c b/modules/codec/substx3g.c
index 4508599543..9dfc718fbf 100644
--- a/modules/codec/substx3g.c
+++ b/modules/codec/substx3g.c
@@ -532,7 +532,7 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     p_dec->pf_decode = Decode;
 
-    p_dec->p_sys = (decoder_sys_t *) text_style_Create( STYLE_NO_DEFAULTS );
+    p_dec->p_sys = text_style_Create( STYLE_NO_DEFAULTS );
     if( !p_dec->p_sys )
         return VLC_ENOMEM;
 
diff --git a/modules/codec/subsusf.c b/modules/codec/subsusf.c
index 9a84c7b7ea..cbe2edc861 100644
--- a/modules/codec/subsusf.c
+++ b/modules/codec/subsusf.c
@@ -86,7 +86,7 @@ typedef struct
     int             i_margin_percent_v;
 }  ssa_style_t;
 
-struct decoder_sys_t
+typedef struct
 {
     int                 i_original_height;
     int                 i_original_width;
@@ -97,7 +97,7 @@ struct decoder_sys_t
 
     image_attach_t      **pp_images;
     int                 i_images;
-};
+} decoder_sys_t;
 
 static int           DecodeBlock   ( decoder_t *, block_t * );
 static char         *CreatePlainText( char * );
diff --git a/modules/codec/svcdsub.c b/modules/codec/svcdsub.c
index e509effdbc..f947ffef05 100644
--- a/modules/codec/svcdsub.c
+++ b/modules/codec/svcdsub.c
@@ -79,7 +79,7 @@ typedef enum  {
   SUBTITLE_BLOCK_COMPLETE = 2
 } packet_state_t;
 
-struct decoder_sys_t
+typedef struct
 {
   packet_state_t i_state; /* data-gathering state for this subtitle */
 
@@ -106,7 +106,7 @@ struct decoder_sys_t
   uint16_t i_width, i_height;    /* dimensions in pixels of image */
 
   uint8_t p_palette[4][4];       /* Palette of colors used in subtitle */
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * DecoderOpen: open/initialize the svcdsub decoder.
diff --git a/modules/codec/svg.c b/modules/codec/svg.c
index 9b76e3d62f..36336cc20c 100644
--- a/modules/codec/svg.c
+++ b/modules/codec/svg.c
@@ -76,12 +76,12 @@ vlc_module_begin ()
     add_float( "svg-scale", -1.0, TEXT_SCALE, LONG_TEXT_SCALE, false )
 vlc_module_end ()
 
-struct decoder_sys_t
+typedef struct
 {
     int32_t i_width;
     int32_t i_height;
     double  f_scale;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * OpenDecoder: probe the decoder and return score
diff --git a/modules/codec/telx.c b/modules/codec/telx.c
index b0a4e773f2..130ff699b3 100644
--- a/modules/codec/telx.c
+++ b/modules/codec/telx.c
@@ -88,7 +88,7 @@ vlc_module_end ()
  * Local structures
  ****************************************************************************/
 
-struct decoder_sys_t
+typedef struct
 {
   int         i_align;
   bool        b_is_subtitle[9];
@@ -100,7 +100,7 @@ struct decoder_sys_t
   const uint16_t *  pi_active_national_set[9];
   int         i_wanted_page, i_wanted_magazine;
   bool        b_ignore_sub_flag;
-};
+} decoder_sys_t;
 
 /****************************************************************************
  * Local data
diff --git a/modules/codec/textst.c b/modules/codec/textst.c
index 72d615f209..c2e470fac7 100644
--- a/modules/codec/textst.c
+++ b/modules/codec/textst.c
@@ -40,10 +40,10 @@
 static int  Open (vlc_object_t *);
 static void Close(vlc_object_t *);
 
-struct decoder_sys_t
+typedef struct
 {
     uint32_t palette[256];
-};
+} decoder_sys_t;
 
 vlc_module_begin()
     set_description(N_("HDMV TextST subtitles decoder"))
diff --git a/modules/codec/theora.c b/modules/codec/theora.c
index fce1dcade5..e73276eaf0 100644
--- a/modules/codec/theora.c
+++ b/modules/codec/theora.c
@@ -47,7 +47,7 @@
 /*****************************************************************************
  * decoder_sys_t : theora decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /* Module mode */
     bool b_packetizer;
@@ -73,7 +73,7 @@ struct decoder_sys_t
      * Common properties
      */
     mtime_t i_pts;
-};
+} decoder_sys_t;
 
 /*****************************************************************************
  * Local prototypes
@@ -662,7 +662,7 @@ static void theora_CopyPicture( picture_t *p_pic,
 /*****************************************************************************
  * encoder_sys_t : theora encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -675,7 +675,7 @@ struct encoder_sys_t
     th_info      ti;                     /* theora bitstream settings */
     th_comment   tc;                     /* theora comment header */
     th_enc_ctx   *tcx;                   /* theora context */
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * OpenEncoder: probe the encoder and return score
diff --git a/modules/codec/ttml/substtml.c b/modules/codec/ttml/substtml.c
index 75b3711ae9..ce1c139d30 100644
--- a/modules/codec/ttml/substtml.c
+++ b/modules/codec/ttml/substtml.c
@@ -93,10 +93,10 @@ typedef struct
     text_segment_t **pp_last_segment;
 } ttml_region_t;
 
-struct decoder_sys_t
+typedef struct
 {
     int                     i_align;
-};
+} decoder_sys_t;
 
 enum
 {
diff --git a/modules/codec/twolame.c b/modules/codec/twolame.c
index 6fdad1164c..05829b3805 100644
--- a/modules/codec/twolame.c
+++ b/modules/codec/twolame.c
@@ -96,7 +96,7 @@ static const char *const ppsz_enc_options[] = {
 /*****************************************************************************
  * encoder_sys_t : twolame encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -110,7 +110,7 @@ struct encoder_sys_t
      */
     twolame_options *p_twolame;
     unsigned char p_out_buffer[MAX_CODED_FRAME_SIZE];
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * OpenEncoder: probe the encoder and return score
diff --git a/modules/codec/uleaddvaudio.c b/modules/codec/uleaddvaudio.c
index b90f0125e4..1b135d9108 100644
--- a/modules/codec/uleaddvaudio.c
+++ b/modules/codec/uleaddvaudio.c
@@ -45,14 +45,14 @@ vlc_module_begin()
     set_callbacks(Open, Close)
 vlc_module_end()
 
-struct decoder_sys_t
+typedef struct
 {
     date_t end_date;
 
     bool     is_pal;
     bool     is_12bit;
     uint16_t shuffle[2000];
-};
+} decoder_sys_t;
 
 static void Flush(decoder_t *dec)
 {
diff --git a/modules/codec/vorbis.c b/modules/codec/vorbis.c
index 4a724a5b63..74ede0b560 100644
--- a/modules/codec/vorbis.c
+++ b/modules/codec/vorbis.c
@@ -62,7 +62,7 @@
 /*****************************************************************************
  * decoder_sys_t : vorbis decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /* Module mode */
     bool b_packetizer;
@@ -90,7 +90,7 @@ struct decoder_sys_t
     ** Channel reordering
     */
     uint8_t pi_chan_table[AOUT_CHAN_MAX];
-};
+} decoder_sys_t;
 
 static const int pi_channels_maps[9] =
 {
@@ -731,7 +731,7 @@ static void CloseDecoder( vlc_object_t *p_this )
 /*****************************************************************************
  * encoder_sys_t : vorbis encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     /*
      * Vorbis properties
@@ -752,7 +752,7 @@ struct encoder_sys_t
     */
     uint8_t pi_chan_table[AOUT_CHAN_MAX];
 
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * OpenEncoder: probe the encoder and return score
diff --git a/modules/codec/vpx.c b/modules/codec/vpx.c
index 8a4a16c969..d7ea0196a0 100644
--- a/modules/codec/vpx.c
+++ b/modules/codec/vpx.c
@@ -96,10 +96,10 @@ static void vpx_err_msg(vlc_object_t *this, struct vpx_codec_ctx *ctx,
 /*****************************************************************************
  * decoder_sys_t: libvpx decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     struct vpx_codec_ctx ctx;
-};
+} decoder_sys_t;
 
 static const struct
 {
@@ -364,11 +364,11 @@ static void CloseDecoder(vlc_object_t *p_this)
 /*****************************************************************************
  * encoder_sys_t: libvpx encoder descriptor
  *****************************************************************************/
-struct encoder_sys_t
+typedef struct
 {
     struct vpx_codec_ctx ctx;
     unsigned long quality;
-};
+} encoder_sys_t;
 
 /*****************************************************************************
  * OpenEncoder: probe the encoder
diff --git a/modules/codec/webvtt/subsvtt.c b/modules/codec/webvtt/subsvtt.c
index 5b92dbded7..c1262c24fc 100644
--- a/modules/codec/webvtt/subsvtt.c
+++ b/modules/codec/webvtt/subsvtt.c
@@ -151,14 +151,14 @@ struct webvtt_dom_node_t
     WEBVTT_NODE_BASE_MEMBERS
 };
 
-struct decoder_sys_t
+typedef struct
 {
     webvtt_dom_tag_t *p_root;
 #ifdef HAVE_CSS
     /* CSS */
     vlc_css_rule_t *p_css_rules;
 #endif
-};
+} decoder_sys_t;
 
 #define ATOM_iden VLC_FOURCC('i', 'd', 'e', 'n')
 #define ATOM_payl VLC_FOURCC('p', 'a', 'y', 'l')
diff --git a/modules/codec/wmafixed/wma.c b/modules/codec/wmafixed/wma.c
index 84c27249f9..4d45a153aa 100644
--- a/modules/codec/wmafixed/wma.c
+++ b/modules/codec/wmafixed/wma.c
@@ -40,7 +40,7 @@
 /*****************************************************************************
  * decoder_sys_t : wma decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     date_t end_date; /* To set the PTS */
     WMADecodeContext wmadec; /* name is self explanative */
@@ -50,7 +50,7 @@ struct decoder_sys_t
     /* to not give too much samples at once to the audio output */
     int8_t *p_samples; /* point into p_output */
     unsigned int i_samples; /* number of buffered samples available */
-};
+} decoder_sys_t;
 
 /* FIXME : check supported configurations */
 /* channel configuration */
diff --git a/modules/codec/x264.c b/modules/codec/x264.c
index dd64381eb1..2487803e4a 100644
--- a/modules/codec/x264.c
+++ b/modules/codec/x264.c
@@ -757,7 +757,7 @@ static const char *const ppsz_sout_options[] = {
 
 static block_t *Encode( encoder_t *, picture_t * );
 
-struct encoder_sys_t
+typedef struct
 {
     x264_t          *h;
     x264_param_t    param;
@@ -768,7 +768,7 @@ struct encoder_sys_t
     int             i_sei_size;
     uint32_t         i_colorspace;
     uint8_t         *p_sei;
-};
+} encoder_sys_t;
 
 #ifdef PTW32_STATIC_LIB
 static vlc_mutex_t pthread_win32_mutex = VLC_STATIC_MUTEX;
diff --git a/modules/codec/x265.c b/modules/codec/x265.c
index c35cf4c6ca..3c02a8cf7e 100644
--- a/modules/codec/x265.c
+++ b/modules/codec/x265.c
@@ -50,7 +50,7 @@ vlc_module_begin ()
     set_subcategory(SUBCAT_INPUT_VCODEC)
 vlc_module_end ()
 
-struct encoder_sys_t
+typedef struct
 {
     x265_encoder    *h;
     x265_param      param;
@@ -62,7 +62,7 @@ struct encoder_sys_t
 #ifndef NDEBUG
     mtime_t         start;
 #endif
-};
+} encoder_sys_t;
 
 static block_t *Encode(encoder_t *p_enc, picture_t *p_pict)
 {
diff --git a/modules/codec/zvbi.c b/modules/codec/zvbi.c
index ffef4dcc77..7215fab33c 100644
--- a/modules/codec/zvbi.c
+++ b/modules/codec/zvbi.c
@@ -150,7 +150,7 @@ typedef enum {
 
 #define MAX_SLICES 32
 
-struct decoder_sys_t
+typedef struct
 {
     vbi_decoder *     p_vbi_dec;
     vbi_sliced        p_vbi_sliced[MAX_SLICES];
@@ -171,7 +171,7 @@ struct decoder_sys_t
         int pgno, subno;
     }                 nav_link[6];
     int               i_key[3];
-};
+} decoder_sys_t;
 
 static int Decode( decoder_t *, block_t * );
 
diff --git a/modules/demux/adaptive/adaptive.cpp b/modules/demux/adaptive/adaptive.cpp
index 3cab4dd13b..0c40d55b28 100644
--- a/modules/demux/adaptive/adaptive.cpp
+++ b/modules/demux/adaptive/adaptive.cpp
@@ -239,7 +239,7 @@ static int Open(vlc_object_t *p_obj)
         return VLC_EGENERIC;
     }
 
-    p_demux->p_sys         = reinterpret_cast<demux_sys_t *>(p_manager);
+    p_demux->p_sys         = p_manager;
     p_demux->pf_demux      = p_manager->demux_callback;
     p_demux->pf_control    = p_manager->control_callback;
 
diff --git a/modules/demux/adaptive/plumbing/FakeESOut.cpp b/modules/demux/adaptive/plumbing/FakeESOut.cpp
index bc1517ebc7..c25991d4ac 100644
--- a/modules/demux/adaptive/plumbing/FakeESOut.cpp
+++ b/modules/demux/adaptive/plumbing/FakeESOut.cpp
@@ -45,7 +45,7 @@ FakeESOut::FakeESOut( es_out_t *es, CommandsQueue *queue )
     fakeesout->pf_del = esOutDel_Callback;
     fakeesout->pf_destroy = esOutDestroy_Callback;
     fakeesout->pf_send = esOutSend_Callback;
-    fakeesout->p_sys = (es_out_sys_t*) this;
+    fakeesout->p_sys = this;
 
     vlc_mutex_init(&lock);
 }
diff --git a/modules/demux/adaptive/plumbing/SourceStream.cpp b/modules/demux/adaptive/plumbing/SourceStream.cpp
index 08cf27c54b..002517a1f6 100644
--- a/modules/demux/adaptive/plumbing/SourceStream.cpp
+++ b/modules/demux/adaptive/plumbing/SourceStream.cpp
@@ -60,7 +60,7 @@ stream_t * ChunksSourceStream::makeStream()
         p_stream->pf_read = read_Callback;
         p_stream->pf_readdir = NULL;
         p_stream->pf_seek = seek_Callback;
-        p_stream->p_sys = reinterpret_cast<stream_sys_t*>(this);
+        p_stream->p_sys = this;
     }
     return p_stream;
 }
diff --git a/modules/demux/aiff.c b/modules/demux/aiff.c
index aa460b77c8..d23b5e150a 100644
--- a/modules/demux/aiff.c
+++ b/modules/demux/aiff.c
@@ -57,7 +57,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t  fmt;
     es_out_id_t *es;
@@ -74,7 +74,7 @@ struct demux_sys_t
     int         i_ssnd_fsize;
 
     int64_t     i_time;
-};
+} demux_sys_t;
 
 static int Demux  ( demux_t *p_demux );
 static int Control( demux_t *p_demux, int i_query, va_list args );
diff --git a/modules/demux/asf/asf.c b/modules/demux/asf/asf.c
index d17fb5e2db..db8809acb8 100644
--- a/modules/demux/asf/asf.c
+++ b/modules/demux/asf/asf.c
@@ -107,7 +107,7 @@ typedef struct
 
 } asf_track_t;
 
-struct demux_sys_t
+typedef struct
 {
     mtime_t             i_time;     /* s */
     mtime_t             i_sendtime;
@@ -136,7 +136,7 @@ struct demux_sys_t
     asf_packet_sys_t    packet_sys;
 
     vlc_meta_t          *meta;
-};
+} demux_sys_t;
 
 static int      DemuxInit( demux_t * );
 static void     DemuxEnd( demux_t * );
diff --git a/modules/demux/au.c b/modules/demux/au.c
index 0cda4bf73e..938921707f 100644
--- a/modules/demux/au.c
+++ b/modules/demux/au.c
@@ -81,7 +81,7 @@ enum AuCat_e
     AU_CAT_ADPCM    = 2
 };
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t     fmt;
     es_out_id_t     *es;
@@ -92,7 +92,7 @@ struct demux_sys_t
     mtime_t         i_frame_length;
 
     uint32_t        i_header_size;
-};
+} demux_sys_t;
 
 static int Demux( demux_t * );
 static int Control ( demux_t *, int i_query, va_list args );
diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
index dc27a58abb..90f330c759 100644
--- a/modules/demux/avformat/demux.c
+++ b/modules/demux/avformat/demux.c
@@ -61,7 +61,7 @@ struct avformat_track_s
 /*****************************************************************************
  * demux_sys_t: demux descriptor
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     AVInputFormat  *fmt;
     AVFormatContext *ic;
@@ -80,7 +80,7 @@ struct demux_sys_t
     input_title_t *p_title;
     int i_seekpoint;
     unsigned i_update;
-};
+} demux_sys_t;
 
 #define AVFORMAT_IOBUFFER_SIZE 32768  /* FIXME */
 
diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
index c4b0f27cdc..c6c3a68f31 100644
--- a/modules/demux/avformat/mux.c
+++ b/modules/demux/avformat/mux.c
@@ -50,7 +50,7 @@ static const char *const ppsz_mux_options[] = {
 /*****************************************************************************
  * mux_sys_t: mux descriptor
  *****************************************************************************/
-struct sout_mux_sys_t
+typedef struct
 {
     AVIOContext     *io;
     int             io_buffer_size;
@@ -64,7 +64,7 @@ struct sout_mux_sys_t
 #if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
     bool     b_header_done;
 #endif
-};
+} sout_mux_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index 575bc96826..23cc585c0d 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -168,7 +168,7 @@ typedef struct
 
 } avi_track_t;
 
-struct demux_sys_t
+typedef struct
 {
     mtime_t i_time;
     mtime_t i_length;
@@ -195,7 +195,7 @@ struct demux_sys_t
 
     unsigned int       i_attachment;
     input_attachment_t **attachment;
-};
+} demux_sys_t;
 
 #define __EVEN(x) (((x) & 1) ? (x) + 1 : (x))
 
diff --git a/modules/demux/caf.c b/modules/demux/caf.c
index 8273efcca2..5c70667b51 100644
--- a/modules/demux/caf.c
+++ b/modules/demux/caf.c
@@ -79,7 +79,7 @@ typedef struct packet_table_t
     uint64_t i_descriptions_start;
 } packet_table_t;
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t  fmt;
     es_out_id_t *es;
@@ -90,7 +90,7 @@ struct demux_sys_t
 
     frame_span_t position;
     packet_table_t packet_table;
-};
+} demux_sys_t;
 
 /*
  We use this value to indicate that the data section extends until the end of the file.
diff --git a/modules/demux/cdg.c b/modules/demux/cdg.c
index 5f958bee68..afd57224eb 100644
--- a/modules/demux/cdg.c
+++ b/modules/demux/cdg.c
@@ -54,13 +54,13 @@ vlc_module_end ()
 static int Demux  ( demux_t * );
 static int Control( demux_t *, int i_query, va_list args );
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t     fmt;
     es_out_id_t     *p_es;
 
     date_t          pts;
-};
+} demux_sys_t;
 
 #define CDG_FRAME_SIZE (96)
 #define CDG_FRAME_RATE (75)
diff --git a/modules/demux/flac.c b/modules/demux/flac.c
index 559bede0ae..c5900c26ed 100644
--- a/modules/demux/flac.c
+++ b/modules/demux/flac.c
@@ -70,7 +70,7 @@ typedef struct
     uint64_t i_byte_offset;
 } flac_seekpoint_t;
 
-struct demux_sys_t
+typedef struct
 {
     bool  b_start;
     int   i_next_block_flags;
@@ -102,7 +102,7 @@ struct demux_sys_t
     input_attachment_t **attachments;
     int                i_cover_idx;
     int                i_cover_score;
-};
+} demux_sys_t;
 
 #define FLAC_PACKET_SIZE 16384
 #define FLAC_MAX_PREROLL      (CLOCK_FREQ * 4)
diff --git a/modules/demux/gme.c b/modules/demux/gme.c
index 6154ed9581..e0d8788da3 100644
--- a/modules/demux/gme.c
+++ b/modules/demux/gme.c
@@ -49,7 +49,7 @@ vlc_module_end ()
 
 #define RATE 48000
 
-struct demux_sys_t
+typedef struct
 {
     Music_Emu   *emu;
     unsigned     track_id;
@@ -60,7 +60,7 @@ struct demux_sys_t
     input_title_t **titlev;
     unsigned        titlec;
     bool            title_changed;
-};
+} demux_sys_t;
 
 
 static int Demux (demux_t *);
diff --git a/modules/demux/image.c b/modules/demux/image.c
index 7b7604156f..4ea027b9d1 100644
--- a/modules/demux/image.c
+++ b/modules/demux/image.c
@@ -98,7 +98,7 @@ vlc_module_end()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     block_t     *data;
     es_out_id_t *es;
@@ -107,7 +107,7 @@ struct demux_sys_t
     mtime_t     pts_origin;
     mtime_t     pts_next;
     date_t        pts;
-};
+} demux_sys_t;
 
 static block_t *Load(demux_t *demux)
 {
diff --git a/modules/demux/mjpeg.c b/modules/demux/mjpeg.c
index 2d7dde7c3c..cb7096356e 100644
--- a/modules/demux/mjpeg.c
+++ b/modules/demux/mjpeg.c
@@ -65,7 +65,7 @@ static int MimeDemux( demux_t * );
 static int MjpgDemux( demux_t * );
 static int Control( demux_t *, int i_query, va_list args );
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t     fmt;
     es_out_id_t     *p_es;
@@ -79,7 +79,7 @@ struct demux_sys_t
     const uint8_t   *p_peek;
     int             i_data_peeked;
     int             i_level;
-};
+} demux_sys_t;
 
 /*****************************************************************************
  * Peek: Helper function to peek data with incremental size.
diff --git a/modules/demux/mkv/matroska_segment.hpp b/modules/demux/mkv/matroska_segment.hpp
index 39320bda3b..dd3ac52723 100644
--- a/modules/demux/mkv/matroska_segment.hpp
+++ b/modules/demux/mkv/matroska_segment.hpp
@@ -25,6 +25,7 @@
 #ifndef VLC_MKV_MATROSKA_SEGMENT_HPP_
 #define VLC_MKV_MATROSKA_SEGMENT_HPP_
 
+#include "demux.hpp"
 #include "mkv.hpp"
 #include "matroska_segment_seeker.hpp"
 #include <vector>
diff --git a/modules/demux/mod.c b/modules/demux/mod.c
index eb513aba3d..bf3b4138e3 100644
--- a/modules/demux/mod.c
+++ b/modules/demux/mod.c
@@ -109,7 +109,7 @@ vlc_module_end ()
  *****************************************************************************/
 static vlc_mutex_t libmodplug_lock = VLC_STATIC_MUTEX;
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t  fmt;
     es_out_id_t *es;
@@ -120,7 +120,7 @@ struct demux_sys_t
     int         i_data;
     uint8_t     *p_data;
     ModPlugFile *f;
-};
+} demux_sys_t;
 
 static int Demux  ( demux_t *p_demux );
 static int Control( demux_t *p_demux, int i_query, va_list args );
diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c
index e36a1676c2..28e42ff708 100644
--- a/modules/demux/mp4/mp4.c
+++ b/modules/demux/mp4/mp4.c
@@ -88,7 +88,7 @@ static int   DemuxRef( demux_t *p_demux ){ (void)p_demux; return 0;}
 static int   DemuxFrag( demux_t * );
 static int   Control ( demux_t *, int, va_list );
 
-struct demux_sys_t
+typedef struct
 {
     MP4_Box_t    *p_root;      /* container for the whole file */
 
@@ -141,7 +141,7 @@ struct demux_sys_t
     } hacks;
 
     mp4_fragments_index_t *p_fragsindex;
-};
+} demux_sys_t;
 
 #define DEMUX_INCREMENT (CLOCK_FREQ / 4) /* How far the pcr will go, each round */
 #define DEMUX_TRACK_MAX_PRELOAD (CLOCK_FREQ * 15) /* maximum preloading, to deal with interleaving */
diff --git a/modules/demux/mpc.c b/modules/demux/mpc.c
index 1635b8874f..df6259cc47 100644
--- a/modules/demux/mpc.c
+++ b/modules/demux/mpc.c
@@ -73,7 +73,7 @@ vlc_module_end ()
 static int Demux  ( demux_t * );
 static int Control( demux_t *, int, va_list );
 
-struct demux_sys_t
+typedef struct
 {
     /* */
     es_out_id_t   *p_es;
@@ -89,7 +89,7 @@ struct demux_sys_t
 
     /* */
     int64_t        i_position;
-};
+} demux_sys_t;
 
 #ifndef HAVE_MPC_MPCDEC_H
 static mpc_int32_t ReaderRead( void *p_private, void *dst, mpc_int32_t i_size );
diff --git a/modules/demux/mpeg/es.c b/modules/demux/mpeg/es.c
index 4710a2894a..829fbf126d 100644
--- a/modules/demux/mpeg/es.c
+++ b/modules/demux/mpeg/es.c
@@ -119,7 +119,7 @@ typedef struct
     sync_table_ctx_t current;
 } sync_table_t;
 
-struct demux_sys_t
+typedef struct
 {
     codec_t codec;
     vlc_fourcc_t i_original;
@@ -161,7 +161,7 @@ struct demux_sys_t
     float rgf_replay_peak[AUDIO_REPLAY_GAIN_MAX];
 
     sync_table_t mllt;
-};
+} demux_sys_t;
 
 static int MpgaProbe( demux_t *p_demux, int64_t *pi_offset );
 static int MpgaInit( demux_t *p_demux );
diff --git a/modules/demux/mpeg/h26x.c b/modules/demux/mpeg/h26x.c
index 3072551a5b..6c1c45951c 100644
--- a/modules/demux/mpeg/h26x.c
+++ b/modules/demux/mpeg/h26x.c
@@ -73,7 +73,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *p_es;
 
@@ -82,7 +82,7 @@ struct demux_sys_t
     unsigned    frame_rate_den;
 
     decoder_t *p_packetizer;
-};
+} demux_sys_t;
 
 static int Demux( demux_t * );
 static int Control( demux_t *, int, va_list );
diff --git a/modules/demux/mpeg/mpgv.c b/modules/demux/mpeg/mpgv.c
index 47be270dbe..3fc7ee724b 100644
--- a/modules/demux/mpeg/mpgv.c
+++ b/modules/demux/mpeg/mpgv.c
@@ -52,14 +52,14 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     bool  b_start;
 
     es_out_id_t *p_es;
 
     decoder_t *p_packetizer;
-};
+} demux_sys_t;
 
 static int Demux( demux_t * );
 static int Control( demux_t *, int, va_list );
diff --git a/modules/demux/mpeg/ps.c b/modules/demux/mpeg/ps.c
index e4ad557993..fc8b305556 100644
--- a/modules/demux/mpeg/ps.c
+++ b/modules/demux/mpeg/ps.c
@@ -82,7 +82,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct demux_sys_t
+typedef struct
 {
     ps_psm_t    psm;
     ps_track_t  tk[PS_TK_COUNT];
@@ -114,7 +114,7 @@ struct demux_sys_t
     int         current_title;
     int         current_seekpoint;
     unsigned    updates;
-};
+} demux_sys_t;
 
 static int Demux  ( demux_t *p_demux );
 static int Control( demux_t *p_demux, int i_query, va_list args );
diff --git a/modules/demux/mpeg/ts_pid.h b/modules/demux/mpeg/ts_pid.h
index c61256ae09..d727adf2e3 100644
--- a/modules/demux/mpeg/ts_pid.h
+++ b/modules/demux/mpeg/ts_pid.h
@@ -26,6 +26,8 @@
 
 #include "ts_streams.h"
 
+typedef struct demux_sys_t demux_sys_t;
+
 typedef enum
 {
     TYPE_FREE = 0,
diff --git a/modules/demux/nsv.c b/modules/demux/nsv.c
index ebb9097d20..a3d61de398 100644
--- a/modules/demux/nsv.c
+++ b/modules/demux/nsv.c
@@ -58,7 +58,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t  fmt_audio;
     es_out_id_t *p_audio;
@@ -74,7 +74,7 @@ struct demux_sys_t
     int64_t     i_pcr_inc;
 
     bool b_start_record;
-};
+} demux_sys_t;
 
 static int Demux  ( demux_t *p_demux );
 static int Control( demux_t *p_demux, int i_query, va_list args );
diff --git a/modules/demux/nuv.c b/modules/demux/nuv.c
index 40f7b4b60a..a14f91a91f 100644
--- a/modules/demux/nuv.c
+++ b/modules/demux/nuv.c
@@ -170,7 +170,7 @@ typedef struct
 
 } extended_header_t;
 
-struct demux_sys_t
+typedef struct
 {
     header_t          hdr;
     extended_header_t exh;
@@ -192,7 +192,7 @@ struct demux_sys_t
     int64_t i_total_length;
     /* first frame position (used for calculating size without seektable) */
     int i_first_frame_offset;
-};
+} demux_sys_t;
 
 static int HeaderLoad( demux_t *, header_t *h );
 static int FrameHeaderLoad( demux_t *, frame_header_t *h );
diff --git a/modules/demux/ogg.h b/modules/demux/ogg.h
index bed61065a2..4b7d6d256c 100644
--- a/modules/demux/ogg.h
+++ b/modules/demux/ogg.h
@@ -169,7 +169,7 @@ struct ogg_skeleton_t
     int64_t        i_indexlastnum;
 };
 
-struct demux_sys_t
+typedef struct
 {
     ogg_sync_state oy;        /* sync and verify incoming physical bitstream */
 
@@ -236,7 +236,7 @@ struct demux_sys_t
 
     bool b_slave;
 
-};
+} demux_sys_t;
 
 
 unsigned const char * Read7BitsVariableLE( unsigned const char *,
diff --git a/modules/demux/playlist/sgimb.c b/modules/demux/playlist/sgimb.c
index af4b3fe832..4153f41944 100644
--- a/modules/demux/playlist/sgimb.c
+++ b/modules/demux/playlist/sgimb.c
@@ -111,7 +111,7 @@
  *****************************************************************************/
 #define MAX_LINE 1024
 
-struct demux_sys_t
+typedef struct
 {
     char        *psz_uri;       /* Stream= or sgiQTFileBegin rtsp link */
     char        *psz_server;    /* sgiNameServerHost= */
@@ -127,7 +127,7 @@ struct demux_sys_t
     int         i_sid;          /* sgiSid= */
     bool  b_concert;      /* DeliveryService=cds */
     bool  b_rtsp_kasenna; /* kasenna style RTSP */
-};
+} demux_sys_t;
 
 static int ReadDir( stream_t *, input_item_node_t * );
 
diff --git a/modules/demux/pva.c b/modules/demux/pva.c
index 8eb52924f4..2089f90ab8 100644
--- a/modules/demux/pva.c
+++ b/modules/demux/pva.c
@@ -52,7 +52,7 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *p_video;
     es_out_id_t *p_audio;
@@ -66,7 +66,7 @@ struct demux_sys_t
     block_t     *p_es;  /* video */
 
     int64_t     b_pcr_audio;
-};
+} demux_sys_t;
 
 static int  Demux   ( demux_t *p_demux );
 static int  Control ( demux_t *p_demux, int i_query, va_list args );
diff --git a/modules/demux/rawaud.c b/modules/demux/rawaud.c
index 375bdb1244..a5b36b2428 100644
--- a/modules/demux/rawaud.c
+++ b/modules/demux/rawaud.c
@@ -80,7 +80,7 @@ vlc_module_end();
 /*****************************************************************************
  * Definitions of structures used by this plugin
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *p_es;
     es_format_t  fmt;
@@ -88,7 +88,7 @@ struct demux_sys_t
     unsigned int i_frame_samples;
     unsigned int i_seek_step;
     date_t       pts;
-};
+} demux_sys_t;
 
 
 /*****************************************************************************
diff --git a/modules/demux/rawdv.c b/modules/demux/rawdv.c
index c081982f69..25f1141828 100644
--- a/modules/demux/rawdv.c
+++ b/modules/demux/rawdv.c
@@ -93,7 +93,7 @@ typedef struct {
     int8_t ap3;
 } dv_header_t;
 
-struct demux_sys_t
+typedef struct
 {
     int    frame_size;
 
@@ -110,7 +110,7 @@ struct demux_sys_t
     /* program clock reference (in units of 90kHz) */
     mtime_t i_pcr;
     bool b_hurry_up;
-};
+} demux_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/demux/rawvid.c b/modules/demux/rawvid.c
index 08882e2e18..9cb45651c8 100644
--- a/modules/demux/rawvid.c
+++ b/modules/demux/rawvid.c
@@ -79,7 +79,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Definitions of structures used by this plugin
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     int    frame_size;
 
@@ -89,7 +89,7 @@ struct demux_sys_t
     date_t pcr;
 
     bool b_y4m;
-};
+} demux_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/demux/real.c b/modules/demux/real.c
index 9cf2bbda13..7b810cae10 100644
--- a/modules/demux/real.c
+++ b/modules/demux/real.c
@@ -117,7 +117,7 @@ typedef struct
     uint32_t i_frame_index;
 } real_index_t;
 
-struct demux_sys_t
+typedef struct
 {
     int64_t  i_data_offset;
     int64_t  i_data_size;
@@ -145,7 +145,7 @@ struct demux_sys_t
     int64_t     i_index_offset;
     bool        b_seek;
     real_index_t *p_index;
-};
+} demux_sys_t;
 
 static const unsigned char i_subpacket_size_sipr[4] = { 29, 19, 37, 20 };
 
diff --git a/modules/demux/sid.cpp b/modules/demux/sid.cpp
index f9362d0a5c..930789b931 100644
--- a/modules/demux/sid.cpp
+++ b/modules/demux/sid.cpp
@@ -177,7 +177,7 @@ static int Open (vlc_object_t *obj)
     /* Callbacks */
     demux->pf_demux = Demux;
     demux->pf_control = Control;
-    demux->p_sys = reinterpret_cast<demux_sys_t*>(sys);
+    demux->p_sys = sys;
 
     return VLC_SUCCESS;
 
diff --git a/modules/demux/smf.c b/modules/demux/smf.c
index cc977fc35e..35fa8833a4 100644
--- a/modules/demux/smf.c
+++ b/modules/demux/smf.c
@@ -91,7 +91,7 @@ static int ReadDeltaTime (stream_t *s, mtrk_t *track)
     return 0;
 }
 
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *es;
     date_t       pts; /*< Play timestamp */
@@ -104,7 +104,7 @@ struct demux_sys_t
 
     unsigned     trackc; /*< Number of tracks */
     mtrk_t       trackv[]; /*< Track states */
-};
+} demux_sys_t;
 
 /**
  * Non-MIDI Meta events handler
diff --git a/modules/demux/stl.c b/modules/demux/stl.c
index 18b07e9d66..d53b750d02 100644
--- a/modules/demux/stl.c
+++ b/modules/demux/stl.c
@@ -58,7 +58,8 @@ typedef struct {
     size_t  count;
 } stl_entry_t;
 
-struct demux_sys_t {
+typedef struct
+{
     size_t      count;
     stl_entry_t *index;
 
@@ -68,7 +69,7 @@ struct demux_sys_t {
     int64_t     next_date;
     bool        b_slave;
     bool        b_first_time;
-};
+} demux_sys_t;
 
 static size_t ParseInteger(uint8_t *data, size_t size)
 {
diff --git a/modules/demux/subtitle.c b/modules/demux/subtitle.c
index 4966062ef7..6bd52b73b5 100644
--- a/modules/demux/subtitle.c
+++ b/modules/demux/subtitle.c
@@ -166,7 +166,7 @@ typedef struct
 
 } subs_properties_t;
 
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *es;
     bool        b_slave;
@@ -187,7 +187,7 @@ struct demux_sys_t
     subs_properties_t props;
 
     block_t * (*pf_convert)( const subtitle_t * );
-};
+} demux_sys_t;
 
 static int  ParseMicroDvd   ( vlc_object_t *, subs_properties_t *, text_t *, subtitle_t *, size_t );
 static int  ParseSubRip     ( vlc_object_t *, subs_properties_t *, text_t *, subtitle_t *, size_t );
diff --git a/modules/demux/tta.c b/modules/demux/tta.c
index 83878b3543..7853180581 100644
--- a/modules/demux/tta.c
+++ b/modules/demux/tta.c
@@ -60,7 +60,7 @@ vlc_module_end ()
 static int Demux  ( demux_t * );
 static int Control( demux_t *, int, va_list );
 
-struct demux_sys_t
+typedef struct
 {
     /* */
     es_out_id_t *p_es;
@@ -75,7 +75,7 @@ struct demux_sys_t
     /* */
     vlc_meta_t     *p_meta;
     int64_t        i_start;
-};
+} demux_sys_t;
 
 /*****************************************************************************
  * Open: initializes ES structures
diff --git a/modules/demux/ttml.c b/modules/demux/ttml.c
index 88dbff268c..ace89eb2be 100644
--- a/modules/demux/ttml.c
+++ b/modules/demux/ttml.c
@@ -41,7 +41,7 @@
 
 //#define TTML_DEMUX_DEBUG
 
-struct demux_sys_t
+typedef struct
 {
     xml_t*          p_xml;
     xml_reader_t*   p_reader;
@@ -65,7 +65,7 @@ struct demux_sys_t
         size_t   i_count;
         size_t   i_current;
     } times;
-};
+} demux_sys_t;
 
 static char *tt_genTiming( tt_time_t t )
 {
diff --git a/modules/demux/ty.c b/modules/demux/ty.c
index b08217564e..fc963ce345 100644
--- a/modules/demux/ty.c
+++ b/modules/demux/ty.c
@@ -212,7 +212,7 @@ typedef struct
 
 } xds_t;
 
-struct demux_sys_t
+typedef struct
 {
   es_out_id_t *p_video;               /* ptr to video codec */
   es_out_id_t *p_audio;               /* holds either ac3 or mpeg codec ptr */
@@ -254,7 +254,7 @@ struct demux_sys_t
   ty_seq_table_t  *seq_table;         /* table of SEQ entries from mstr chk */
   bool      eof;
   bool      b_first_chunk;
-};
+} demux_sys_t;
 
 static int get_chunk_header(demux_t *);
 static mtime_t get_pts( const uint8_t *buf );
diff --git a/modules/demux/vc1.c b/modules/demux/vc1.c
index 41d2366921..08be4ebf38 100644
--- a/modules/demux/vc1.c
+++ b/modules/demux/vc1.c
@@ -57,14 +57,14 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct demux_sys_t
+typedef struct
 {
     mtime_t     i_dts;
     es_out_id_t *p_es;
 
     float       f_fps;
     decoder_t *p_packetizer;
-};
+} demux_sys_t;
 
 static int Demux( demux_t * );
 static int Control( demux_t *, int, va_list );
diff --git a/modules/demux/vobsub.c b/modules/demux/vobsub.c
index 3f1257633d..22d1ae2fb8 100644
--- a/modules/demux/vobsub.c
+++ b/modules/demux/vobsub.c
@@ -87,7 +87,7 @@ typedef struct
     int64_t     i_delay;
 } vobsub_track_t;
 
-struct demux_sys_t
+typedef struct
 {
     int64_t        i_next_demux_date;
     int64_t        i_length;
@@ -103,7 +103,7 @@ struct demux_sys_t
     int            i_original_frame_height;
     bool           b_palette;
     uint32_t       palette[16];
-};
+} demux_sys_t;
 
 
 static int Demux( demux_t * );
diff --git a/modules/demux/voc.c b/modules/demux/voc.c
index 33e6ecf958..839b18c094 100644
--- a/modules/demux/voc.c
+++ b/modules/demux/voc.c
@@ -53,7 +53,7 @@ vlc_module_end ()
 static int Demux  ( demux_t * );
 static int Control( demux_t *, int i_query, va_list args );
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t     fmt;
     es_out_id_t     *p_es;
@@ -66,7 +66,7 @@ struct demux_sys_t
     unsigned        i_silence_countdown;
 
     date_t          pts;
-};
+} demux_sys_t;
 
 static const char ct_header[] = "Creative Voice File\x1a";
 
diff --git a/modules/demux/wav.c b/modules/demux/wav.c
index ab94767f06..5c4083c2fd 100644
--- a/modules/demux/wav.c
+++ b/modules/demux/wav.c
@@ -62,7 +62,7 @@ vlc_module_end ()
 static int Demux  ( demux_t * );
 static int Control( demux_t *, int i_query, va_list args );
 
-struct demux_sys_t
+typedef struct
 {
     es_format_t     fmt;
     es_out_id_t     *p_es;
@@ -78,7 +78,7 @@ struct demux_sys_t
     uint32_t i_channel_mask;
     uint8_t i_chans_to_reorder;            /* do we need channel reordering */
     uint8_t pi_chan_table[AOUT_CHAN_MAX];
-};
+} demux_sys_t;
 
 static int ChunkFind( demux_t *, const char *, unsigned int * );
 
diff --git a/modules/demux/webvtt.c b/modules/demux/webvtt.c
index bbb822722a..85311b2494 100644
--- a/modules/demux/webvtt.c
+++ b/modules/demux/webvtt.c
@@ -42,7 +42,7 @@ struct index_entry_s
     unsigned active;
 };
 
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t *es;
     bool         b_slave;
@@ -72,7 +72,7 @@ struct demux_sys_t
     } index;
 
     webvtt_text_parser_t *p_streamparser;
-};
+} demux_sys_t;
 
 #define WEBVTT_PREALLOC 64
 
diff --git a/modules/demux/xa.c b/modules/demux/xa.c
index c55632e3b1..6d1f86f376 100644
--- a/modules/demux/xa.c
+++ b/modules/demux/xa.c
@@ -54,7 +54,7 @@ vlc_module_end ()
 static int Demux  ( demux_t * );
 static int Control( demux_t *, int i_query, va_list args );
 
-struct demux_sys_t
+typedef struct
 {
     es_out_id_t     *p_es;
 
@@ -64,7 +64,7 @@ struct demux_sys_t
     unsigned int    i_bitrate;
 
     date_t          pts;
-};
+} demux_sys_t;
 
 typedef struct xa_header_t
 {
diff --git a/modules/hw/d3d11/d3d11_deinterlace.c b/modules/hw/d3d11/d3d11_deinterlace.c
index b1db82efa7..6e3de6f8aa 100644
--- a/modules/hw/d3d11/d3d11_deinterlace.c
+++ b/modules/hw/d3d11/d3d11_deinterlace.c
@@ -49,7 +49,7 @@ typedef UINT D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS;
 #define D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION          0x20
 #endif
 
-struct filter_sys_t
+typedef struct
 {
     d3d11_handle_t                 hd3d;
     d3d11_device_t                 d3d_dev;
@@ -67,7 +67,7 @@ struct filter_sys_t
 
     struct deinterlace_ctx         context;
     picture_t *                    (*buffer_new)( filter_t * );
-};
+} filter_sys_t;
 
 struct filter_mode_t
 {
diff --git a/modules/hw/d3d11/d3d11_filters.c b/modules/hw/d3d11/d3d11_filters.c
index daeb1b4e7d..d400cabd6a 100644
--- a/modules/hw/d3d11/d3d11_filters.c
+++ b/modules/hw/d3d11/d3d11_filters.c
@@ -59,7 +59,7 @@ struct filter_level
     D3D11_VIDEO_PROCESSOR_FILTER_RANGE Range;
 };
 
-struct filter_sys_t
+typedef struct
 {
     float f_gamma;
     bool  b_brightness_threshold;
@@ -82,7 +82,7 @@ struct filter_sys_t
     } out[PROCESSOR_SLICES];
     ID3D11VideoProcessorInputView  *procInput[PROCESSOR_SLICES];
     ID3D11VideoProcessorOutputView *procOutput[PROCESSOR_SLICES];
-};
+} filter_sys_t;
 
 #define THRES_TEXT N_("Brightness threshold")
 #define THRES_LONGTEXT N_("When this mode is enabled, pixels will be " \
diff --git a/modules/hw/d3d11/d3d11_surface.c b/modules/hw/d3d11/d3d11_surface.c
index 5aff51f4be..80a51e0086 100644
--- a/modules/hw/d3d11/d3d11_surface.c
+++ b/modules/hw/d3d11/d3d11_surface.c
@@ -50,7 +50,8 @@
 #define CAN_PROCESSOR 0
 #endif
 
-struct filter_sys_t {
+typedef struct
+{
     copy_cache_t     cache;
     union {
         ID3D11Texture2D  *staging;
@@ -77,7 +78,7 @@ struct filter_sys_t {
     picture_t  *staging_pic;
 
     d3d11_handle_t  hd3d;
-};
+} filter_sys_t;
 
 #if CAN_PROCESSOR
 static int SetupProcessor(filter_t *p_filter, ID3D11Device *d3ddevice,
diff --git a/modules/hw/d3d9/d3d9_filters.c b/modules/hw/d3d9/d3d9_filters.c
index 680f120b33..2fc363ad9c 100644
--- a/modules/hw/d3d9/d3d9_filters.c
+++ b/modules/hw/d3d9/d3d9_filters.c
@@ -50,7 +50,7 @@ struct filter_level
     DXVA2_ValueRange Range;
 };
 
-struct filter_sys_t
+typedef struct
 {
     HINSTANCE                      hdecoder_dll;
     /* keep a reference in case the vout is released first */
@@ -63,7 +63,7 @@ struct filter_sys_t
     struct filter_level Contrast;
     struct filter_level Hue;
     struct filter_level Saturation;
-};
+} filter_sys_t;
 
 #define THRES_TEXT N_("Brightness threshold")
 #define THRES_LONGTEXT N_("When this mode is enabled, pixels will be " \
diff --git a/modules/hw/d3d9/dxa9.c b/modules/hw/d3d9/dxa9.c
index 099dc64813..166de39328 100644
--- a/modules/hw/d3d9/dxa9.c
+++ b/modules/hw/d3d9/dxa9.c
@@ -42,7 +42,8 @@
 #include <d3d9.h>
 #include "../../video_chroma/d3d9_fmt.h"
 
-struct filter_sys_t {
+typedef struct
+{
     /* GPU to CPU */
     copy_cache_t      cache;
 
@@ -51,7 +52,7 @@ struct filter_sys_t {
     d3d9_device_t     d3d_dev;
     filter_t          *filter;
     picture_t         *staging;
-};
+} filter_sys_t;
 
 static bool GetLock(filter_t *p_filter, LPDIRECT3DSURFACE9 d3d,
                     D3DLOCKED_RECT *p_lock, D3DSURFACE_DESC *p_desc)
diff --git a/modules/hw/d3d9/dxva2_deinterlace.c b/modules/hw/d3d9/dxva2_deinterlace.c
index 111e706f50..2b90536cbb 100644
--- a/modules/hw/d3d9/dxva2_deinterlace.c
+++ b/modules/hw/d3d9/dxva2_deinterlace.c
@@ -40,7 +40,7 @@
 
 #include "d3d9_filters.h"
 
-struct filter_sys_t
+typedef struct
 {
     HINSTANCE                      hdecoder_dll;
     /* keep a reference in case the vout is released first */
@@ -58,7 +58,7 @@ struct filter_sys_t
 
     struct deinterlace_ctx         context;
     picture_t *                    (*buffer_new)( filter_t * );
-};
+} filter_sys_t;
 
 struct filter_mode_t
 {
diff --git a/modules/hw/mmal/codec.c b/modules/hw/mmal/codec.c
index 1b82c4d270..005ab98332 100644
--- a/modules/hw/mmal/codec.c
+++ b/modules/hw/mmal/codec.c
@@ -64,7 +64,8 @@ vlc_module_begin()
     set_callbacks(OpenDecoder, CloseDecoder)
 vlc_module_end()
 
-struct decoder_sys_t {
+typedef struct
+{
     bool opaque;
     MMAL_COMPONENT_T *component;
     MMAL_PORT_T *input;
@@ -81,7 +82,7 @@ struct decoder_sys_t {
     int output_in_transit;
     int input_in_transit;
     atomic_bool started;
-};
+} decoder_sys_t;
 
 /* Utilities */
 static int change_output_format(decoder_t *dec);
diff --git a/modules/hw/mmal/deinterlace.c b/modules/hw/mmal/deinterlace.c
index be70c0d4b4..2f8f507e08 100644
--- a/modules/hw/mmal/deinterlace.c
+++ b/modules/hw/mmal/deinterlace.c
@@ -61,7 +61,8 @@ vlc_module_begin()
                     MMAL_DEINTERLACE_QPU_LONGTEXT, true);
 vlc_module_end()
 
-struct filter_sys_t {
+typedef struct
+{
     MMAL_COMPONENT_T *component;
     MMAL_PORT_T *input;
     MMAL_PORT_T *output;
@@ -74,7 +75,7 @@ struct filter_sys_t {
     /* statistics */
     int output_in_transit;
     int input_in_transit;
-};
+} filter_sys_t;
 
 static void control_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer);
 static void input_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer);
diff --git a/modules/hw/vaapi/chroma.c b/modules/hw/vaapi/chroma.c
index 94a2d3886f..d8bb7d7ae2 100644
--- a/modules/hw/vaapi/chroma.c
+++ b/modules/hw/vaapi/chroma.c
@@ -37,7 +37,7 @@
 
 # define DEST_PICS_POOL_SZ 3
 
-struct filter_sys_t
+typedef struct
 {
     struct vlc_vaapi_instance *va_inst;
     VADisplay           dpy;
@@ -47,7 +47,7 @@ struct filter_sys_t
 
     bool                derive_failed;
     bool                image_fallback_failed;
-};
+} filter_sys_t;
 
 static int CreateFallbackImage(filter_t *filter, picture_t *src_pic,
                                VADisplay va_dpy, VAImage *image_fallback)
diff --git a/modules/hw/vaapi/filters.c b/modules/hw/vaapi/filters.c
index a3fe898040..fac00ade64 100644
--- a/modules/hw/vaapi/filters.c
+++ b/modules/hw/vaapi/filters.c
@@ -109,13 +109,13 @@ struct  va_filter_desc
     VASurfaceID *       surface_ids;
 };
 
-struct  filter_sys_t
+typedef struct
 {
     struct va_filter_desc       va;
     picture_pool_t *            dest_pics;
     bool                        b_pipeline_fast;
     void *                      p_data;
-};
+} filter_sys_t;
 
 #define DEST_PICS_POOL_SZ       3
 
diff --git a/modules/hw/vdpau/adjust.c b/modules/hw/vdpau/adjust.c
index f7905d65d6..d522279c49 100644
--- a/modules/hw/vdpau/adjust.c
+++ b/modules/hw/vdpau/adjust.c
@@ -32,13 +32,13 @@
 #include <vlc_picture.h>
 #include "vlc_vdpau.h"
 
-struct filter_sys_t
+typedef struct
 {
     vlc_atomic_float brightness;
     vlc_atomic_float contrast;
     vlc_atomic_float saturation;
     vlc_atomic_float hue;
-};
+} filter_sys_t;
 
 static float vlc_to_vdp_brightness(float brightness)
 {
diff --git a/modules/hw/vdpau/chroma.c b/modules/hw/vdpau/chroma.c
index 028f3d808c..ad8f6e79c6 100644
--- a/modules/hw/vdpau/chroma.c
+++ b/modules/hw/vdpau/chroma.c
@@ -36,7 +36,7 @@
 #define MAX_PAST   2
 #define MAX_FUTURE 1
 
-struct filter_sys_t
+typedef struct
 {
     vdp_t *vdp;
     VdpDevice device;
@@ -58,7 +58,7 @@ struct filter_sys_t
         float saturation;
         float hue;
     } procamp;
-};
+} filter_sys_t;
 
 /** Initialize the colour space conversion matrix */
 static VdpStatus MixerSetupColors(filter_t *filter, const VdpProcamp *procamp,
diff --git a/modules/hw/vdpau/deinterlace.c b/modules/hw/vdpau/deinterlace.c
index 2cc8b371d2..1013b8206a 100644
--- a/modules/hw/vdpau/deinterlace.c
+++ b/modules/hw/vdpau/deinterlace.c
@@ -31,10 +31,10 @@
 #include <vlc_picture.h>
 #include "vlc_vdpau.h"
 
-struct filter_sys_t
+typedef struct
 {
     mtime_t last_pts;
-};
+} filter_sys_t;
 
 static picture_t *Deinterlace(filter_t *filter, picture_t *src)
 {
diff --git a/modules/hw/vdpau/sharpen.c b/modules/hw/vdpau/sharpen.c
index 1dcc7aa088..72ccbcedf0 100644
--- a/modules/hw/vdpau/sharpen.c
+++ b/modules/hw/vdpau/sharpen.c
@@ -31,10 +31,10 @@
 #include <vlc_picture.h>
 #include "vlc_vdpau.h"
 
-struct filter_sys_t
+typedef struct
 {
     atomic_uint_fast32_t sigma;
-};
+} filter_sys_t;
 
 static float vlc_to_vdp_sigma(float sigma)
 {
diff --git a/modules/lua/services_discovery.c b/modules/lua/services_discovery.c
index 6d847dc212..2bbffe203e 100644
--- a/modules/lua/services_discovery.c
+++ b/modules/lua/services_discovery.c
@@ -135,7 +135,7 @@ static const char * const ppsz_sd_options[] = { "sd", NULL };
 /*****************************************************************************
  * Local structures
  *****************************************************************************/
-struct services_discovery_sys_t
+typedef struct
 {
     lua_State *L;
     char *psz_filename;
@@ -146,7 +146,7 @@ struct services_discovery_sys_t
 
     char **ppsz_query;
     int i_query;
-};
+} services_discovery_sys_t;
 static const luaL_Reg p_reg[] = { { NULL, NULL } };
 
 /*****************************************************************************
diff --git a/modules/misc/rtsp.c b/modules/misc/rtsp.c
index d72fd5ba31..427867e5d3 100644
--- a/modules/misc/rtsp.c
+++ b/modules/misc/rtsp.c
@@ -162,7 +162,7 @@ struct vod_media_t
     mtime_t i_length;
 };
 
-struct vod_sys_t
+typedef struct
 {
     /* RTSP server */
     httpd_host_t *p_rtsp_host;
@@ -182,7 +182,7 @@ struct vod_sys_t
     /* */
     vlc_thread_t thread;
     block_fifo_t *p_fifo_cmd;
-};
+} vod_sys_t;
 
 /* rtsp delayed command (to avoid deadlock between vlm/httpd) */
 typedef enum
diff --git a/modules/misc/stats.c b/modules/misc/stats.c
index 4d02a307d9..703910fd56 100644
--- a/modules/misc/stats.c
+++ b/modules/misc/stats.c
@@ -133,13 +133,13 @@ static int OpenEncoder ( vlc_object_t *p_this )
 #endif
 
 /*** Demuxer ***/
-struct demux_sys_t
+typedef struct
 {
     es_format_t     fmt;
     es_out_id_t     *p_es;
 
     date_t          pts;
-};
+} demux_sys_t;
 
 static int Demux( demux_t *p_demux )
 {
diff --git a/modules/misc/xml/libxml.c b/modules/misc/xml/libxml.c
index 7b90954250..f34c68ede4 100644
--- a/modules/misc/xml/libxml.c
+++ b/modules/misc/xml/libxml.c
@@ -102,11 +102,11 @@ static void ReaderErrorHandler( void *p_arg, const char *p_msg,
     msg_Err( p_reader, "XML parser error (line %d) : %s", line, p_msg );
 }
 
-struct xml_reader_sys_t
+typedef struct
 {
     xmlTextReaderPtr xml;
     char *node;
-};
+} xml_reader_sys_t;
 
 static int ReaderUseDTD ( xml_reader_t *p_reader )
 {
diff --git a/modules/mux/asf.c b/modules/mux/asf.c
index d7bed245e6..b72ba70c4c 100644
--- a/modules/mux/asf.c
+++ b/modules/mux/asf.c
@@ -130,7 +130,7 @@ typedef struct
 
 } asf_track_t;
 
-struct sout_mux_sys_t
+typedef struct
 {
     guid_t          fid;    /* file id */
     int             i_packet_size;
@@ -159,7 +159,7 @@ struct sout_mux_sys_t
     char            *psz_copyright;
     char            *psz_comment;
     char            *psz_rating;
-};
+} sout_mux_sys_t;
 
 static block_t *asf_header_create( sout_mux_t *, bool );
 static block_t *asf_packet_create( sout_mux_t *, asf_track_t *, block_t * );
diff --git a/modules/mux/avi.c b/modules/mux/avi.c
index b4a55a2a75..5b3db485fb 100644
--- a/modules/mux/avi.c
+++ b/modules/mux/avi.c
@@ -123,7 +123,7 @@ typedef struct avi_idx1_s
     avi_idx1_entry_t *entry;
 } avi_idx1_t;
 
-struct sout_mux_sys_t
+typedef struct
 {
     bool b_write_header;
 
@@ -136,7 +136,7 @@ struct sout_mux_sys_t
     avi_idx1_t idx1;
     off_t i_idx1_size;
 
-};
+} sout_mux_sys_t;
 
 #define HDR_BASE_SIZE 512 /* single video&audio ~ 400 bytes header */
 
diff --git a/modules/mux/dummy.c b/modules/mux/dummy.c
index 72c320c4bb..2f8b810e33 100644
--- a/modules/mux/dummy.c
+++ b/modules/mux/dummy.c
@@ -58,12 +58,12 @@ static int AddStream( sout_mux_t *, sout_input_t * );
 static void DelStream( sout_mux_t *, sout_input_t * );
 static int Mux      ( sout_mux_t * );
 
-struct sout_mux_sys_t
+typedef struct
 {
     /* Some streams have special initialization data, we'll output this
      * data as an header in the stream. */
     bool b_header;
-};
+} sout_mux_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/mux/mp4/mp4.c b/modules/mux/mp4/mp4.c
index 352e5b502f..e739db029b 100644
--- a/modules/mux/mp4/mp4.c
+++ b/modules/mux/mp4/mp4.c
@@ -150,7 +150,7 @@ typedef struct
     uint32_t         i_indexentries;
 } mp4_stream_t;
 
-struct sout_mux_sys_t
+typedef struct
 {
     bool b_mov;
     bool b_3gp;
@@ -173,7 +173,7 @@ struct sout_mux_sys_t
     bool           b_fragmented;
     mtime_t        i_written_duration;
     uint32_t       i_mfhd_sequence;
-};
+} sout_mux_sys_t;
 
 static void box_send(sout_mux_t *p_mux,  bo_t *box);
 static bo_t *BuildMoov(sout_mux_t *p_mux);
diff --git a/modules/mux/mpeg/ps.c b/modules/mux/mpeg/ps.c
index 8d1a9575bb..81753b74de 100644
--- a/modules/mux/mpeg/ps.c
+++ b/modules/mux/mpeg/ps.c
@@ -107,7 +107,7 @@ typedef struct ps_stream_s
 
 } ps_stream_t;
 
-struct sout_mux_sys_t
+typedef struct
 {
     /* Which id are unused */
     bool  stream_id_mpga[16]; /* 0xc0 -> 0xcf */
@@ -134,7 +134,7 @@ struct sout_mux_sys_t
 
     int i_psm_version;
     uint32_t crc32_table[256];
-};
+} sout_mux_sys_t;
 
 static const char *const ppsz_sout_options[] = {
     "dts-delay", "pes-max-size", NULL
diff --git a/modules/mux/mpeg/ts.c b/modules/mux/mpeg/ts.c
index c3b715a7c4..ade131c994 100644
--- a/modules/mux/mpeg/ts.c
+++ b/modules/mux/mpeg/ts.c
@@ -340,7 +340,7 @@ typedef struct
     pes_state_t  state;
 } sout_input_sys_t;
 
-struct sout_mux_sys_t
+typedef struct
 {
     sout_input_t    *p_pcr_input;
 
@@ -385,7 +385,7 @@ struct sout_mux_sys_t
     int             i_csa_pkt_size;
     bool            b_crypt_audio;
     bool            b_crypt_video;
-};
+} sout_mux_sys_t;
 
 
 static int GetNextFreePID( sout_mux_t *p_mux, int i_pid_start )
diff --git a/modules/mux/ogg.c b/modules/mux/ogg.c
index df1ec7173b..534bd7185a 100644
--- a/modules/mux/ogg.c
+++ b/modules/mux/ogg.c
@@ -186,7 +186,7 @@ typedef struct
 
 } ogg_stream_t;
 
-struct sout_mux_sys_t
+typedef struct
 {
     int     i_streams;
 
@@ -219,7 +219,7 @@ struct sout_mux_sys_t
     ssize_t i_pos;
     ssize_t i_data_start;
     ssize_t i_segment_start;
-};
+} sout_mux_sys_t;
 
 static void OggSetDate( block_t *, mtime_t , mtime_t  );
 static block_t *OggStreamFlush( sout_mux_t *, ogg_stream_state *, mtime_t );
diff --git a/modules/mux/wav.c b/modules/mux/wav.c
index 2791777b21..52f9655807 100644
--- a/modules/mux/wav.c
+++ b/modules/mux/wav.c
@@ -61,7 +61,7 @@ static int Mux      ( sout_mux_t * );
 
 #define MAX_CHANNELS 6
 
-struct sout_mux_sys_t
+typedef struct
 {
     bool b_used;
     bool b_header;
@@ -77,7 +77,7 @@ struct sout_mux_sys_t
     uint32_t i_channel_mask;
     uint8_t i_chans_to_reorder;            /* do we need channel reordering */
     uint8_t pi_chan_table[AOUT_CHAN_MAX];
-};
+} sout_mux_sys_t;
 
 static const uint32_t pi_channels_in[] =
     { WAVE_SPEAKER_FRONT_LEFT, WAVE_SPEAKER_FRONT_RIGHT,
diff --git a/modules/packetizer/a52.c b/modules/packetizer/a52.c
index 28c4ea010d..269a291ebb 100644
--- a/modules/packetizer/a52.c
+++ b/modules/packetizer/a52.c
@@ -53,7 +53,7 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -71,7 +71,7 @@ struct decoder_sys_t
 
     vlc_a52_header_t frame;
     size_t  i_input_size;
-};
+} decoder_sys_t;
 
 static void PacketizeFlush( decoder_t *p_dec )
 {
diff --git a/modules/packetizer/avparser.c b/modules/packetizer/avparser.c
index aae267734a..a9c864e25b 100644
--- a/modules/packetizer/avparser.c
+++ b/modules/packetizer/avparser.c
@@ -50,12 +50,12 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     AVCodecParserContext * p_parser_ctx;
     AVCodecContext * p_codec_ctx;
     int i_offset;
-};
+} decoder_sys_t;
 
 static block_t * Packetize( decoder_t *, block_t ** );
 static block_t * PacketizeClosed( decoder_t *, block_t ** );
diff --git a/modules/packetizer/copy.c b/modules/packetizer/copy.c
index f37e68dd18..9044e829ca 100644
--- a/modules/packetizer/copy.c
+++ b/modules/packetizer/copy.c
@@ -53,11 +53,11 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     block_t *p_block;
     void (*pf_parse)( decoder_t *, block_t * );
-};
+} decoder_sys_t;
 
 static block_t *Packetize   ( decoder_t *, block_t ** );
 static block_t *PacketizeSub( decoder_t *, block_t ** );
diff --git a/modules/packetizer/dts.c b/modules/packetizer/dts.c
index e9ca41d267..75ca1de5dc 100644
--- a/modules/packetizer/dts.c
+++ b/modules/packetizer/dts.c
@@ -49,7 +49,7 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -70,7 +70,7 @@ struct decoder_sys_t
 
     vlc_dts_header_t dts;
     size_t  i_input_size;
-};
+} decoder_sys_t;
 
 static void PacketizeFlush( decoder_t *p_dec )
 {
diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c
index ff5e1ac076..e658f97d56 100644
--- a/modules/packetizer/flac.c
+++ b/modules/packetizer/flac.c
@@ -54,7 +54,7 @@ vlc_module_end()
 /*****************************************************************************
  * decoder_sys_t : FLAC decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -83,7 +83,7 @@ struct decoder_sys_t
     uint8_t *p_buf;
 
     int i_next_block_flags;
-};
+} decoder_sys_t;
 
 static const int pi_channels_maps[9] =
 {
diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
index f7c068a4f9..3678c41ac4 100644
--- a/modules/packetizer/h264.c
+++ b/modules/packetizer/h264.c
@@ -69,7 +69,7 @@ vlc_module_end ()
  * Local prototypes
  ****************************************************************************/
 
-struct decoder_sys_t
+typedef struct
 {
     /* */
     packetizer_t packetizer;
@@ -131,7 +131,7 @@ struct decoder_sys_t
 
     /* */
     cc_storage_t *p_ccs;
-};
+} decoder_sys_t;
 
 #define BLOCK_FLAG_PRIVATE_AUD (1 << BLOCK_FLAG_PRIVATE_SHIFT)
 #define BLOCK_FLAG_PRIVATE_SEI (2 << BLOCK_FLAG_PRIVATE_SHIFT)
diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c
index 151fbf81bc..7036bf62f8 100644
--- a/modules/packetizer/hevc.c
+++ b/modules/packetizer/hevc.c
@@ -73,7 +73,7 @@ static int PacketizeValidate(void *p_private, block_t *);
 static bool ParseSEICallback( const hxxx_sei_data_t *, void * );
 static block_t *GetCc( decoder_t *, decoder_cc_desc_t * );
 
-struct decoder_sys_t
+typedef struct
 {
     /* */
     packetizer_t packetizer;
@@ -106,7 +106,7 @@ struct decoder_sys_t
 
     /* */
     cc_storage_t *p_ccs;
-};
+} decoder_sys_t;
 
 #define BLOCK_FLAG_DROP (1 << BLOCK_FLAG_PRIVATE_SHIFT)
 
diff --git a/modules/packetizer/mlp.c b/modules/packetizer/mlp.c
index 60e02ca615..3bd1211da8 100644
--- a/modules/packetizer/mlp.c
+++ b/modules/packetizer/mlp.c
@@ -70,7 +70,7 @@ typedef struct
 
 } mlp_header_t;
 
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -90,7 +90,7 @@ struct decoder_sys_t
 
     bool         b_mlp;
     mlp_header_t mlp;
-};
+} decoder_sys_t;
 
 #define MLP_MAX_SUBSTREAMS (16)
 #define MLP_HEADER_SYNC (28)
diff --git a/modules/packetizer/mpeg4audio.c b/modules/packetizer/mpeg4audio.c
index 5c4a3208f5..2735c07350 100644
--- a/modules/packetizer/mpeg4audio.c
+++ b/modules/packetizer/mpeg4audio.c
@@ -114,7 +114,7 @@ typedef struct
     int i_crc;  /* -1 if not set */
 } latm_mux_t;
 
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -142,7 +142,7 @@ struct decoder_sys_t
     latm_mux_t latm;
 
     int i_warnings;
-};
+} decoder_sys_t;
 
 enum
 {
diff --git a/modules/packetizer/mpeg4video.c b/modules/packetizer/mpeg4video.c
index 7ad0e67a54..5f7a88ea85 100644
--- a/modules/packetizer/mpeg4video.c
+++ b/modules/packetizer/mpeg4video.c
@@ -60,7 +60,7 @@ vlc_module_end ()
 /****************************************************************************
  * Local prototypes
  ****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -90,7 +90,7 @@ struct decoder_sys_t
     /* Current frame being built */
     block_t    *p_frame;
     block_t    **pp_last;
-};
+} decoder_sys_t;
 
 static block_t *Packetize( decoder_t *, block_t ** );
 static void PacketizeFlush( decoder_t * );
diff --git a/modules/packetizer/mpegaudio.c b/modules/packetizer/mpegaudio.c
index 1529d25215..b65e2ee387 100644
--- a/modules/packetizer/mpegaudio.c
+++ b/modules/packetizer/mpegaudio.c
@@ -45,7 +45,7 @@
 /*****************************************************************************
  * decoder_sys_t : decoder descriptor
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -67,7 +67,7 @@ struct decoder_sys_t
     unsigned int i_layer, i_bit_rate;
 
     bool   b_discontinuity;
-};
+} decoder_sys_t;
 
 #define MAD_BUFFER_GUARD 8
 #define MPGA_HEADER_SIZE 4
diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c
index 457913777f..b1c769e373 100644
--- a/modules/packetizer/mpegvideo.c
+++ b/modules/packetizer/mpegvideo.c
@@ -113,7 +113,7 @@ enum extension_start_code_identifier_e
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -173,7 +173,7 @@ struct decoder_sys_t
     mtime_t i_cc_pts;
     mtime_t i_cc_dts;
     cc_data_t cc;
-};
+} decoder_sys_t;
 
 static block_t *Packetize( decoder_t *, block_t ** );
 static void PacketizeFlush( decoder_t * );
diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c
index 901e2c03d8..34dfe8042d 100644
--- a/modules/packetizer/vc1.c
+++ b/modules/packetizer/vc1.c
@@ -59,7 +59,7 @@ vlc_module_end ()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct decoder_sys_t
+typedef struct
 {
     /*
      * Input properties
@@ -103,7 +103,7 @@ struct decoder_sys_t
     cc_data_t cc;
 
     cc_data_t cc_next;
-};
+} decoder_sys_t;
 
 typedef enum
 {
diff --git a/modules/services_discovery/avahi.c b/modules/services_discovery/avahi.c
index dbfac40809..956835dbc1 100644
--- a/modules/services_discovery/avahi.c
+++ b/modules/services_discovery/avahi.c
@@ -67,12 +67,12 @@ vlc_module_end ()
  * Local structures
  *****************************************************************************/
 
-struct services_discovery_sys_t
+typedef struct
 {
     AvahiThreadedPoll   *poll;
     AvahiClient         *client;
     vlc_dictionary_t    services_name_to_input_item;
-};
+} services_discovery_sys_t;
 
 static const struct
 {
diff --git a/modules/services_discovery/mediadirs.c b/modules/services_discovery/mediadirs.c
index 3b681c9661..65ddb129c8 100644
--- a/modules/services_discovery/mediadirs.c
+++ b/modules/services_discovery/mediadirs.c
@@ -104,14 +104,14 @@ static int onNewFileAdded( vlc_object_t*, char const *,
 static enum type_e fileType( services_discovery_t *p_sd, const char* psz_file );
 static void formatSnapshotItem( input_item_t* );
 
-struct services_discovery_sys_t
+typedef struct
 {
     vlc_thread_t thread;
     enum type_e i_type;
 
     char* psz_dir[2];
     const char* psz_var;
-};
+} services_discovery_sys_t;
 
 /*****************************************************************************
  * Open: initialize module
diff --git a/modules/services_discovery/microdns.c b/modules/services_discovery/microdns.c
index d4d4e9c496..97f250e65b 100644
--- a/modules/services_discovery/microdns.c
+++ b/modules/services_discovery/microdns.c
@@ -97,10 +97,10 @@ struct discovery_sys
     vlc_array_t         items;
 };
 
-struct services_discovery_sys_t
+typedef struct
 {
     struct discovery_sys s;
-};
+} services_discovery_sys_t;
 
 struct vlc_renderer_discovery_sys
 {
diff --git a/modules/services_discovery/mtp.c b/modules/services_discovery/mtp.c
index 8e60910a3c..e56ea3f7ae 100644
--- a/modules/services_discovery/mtp.c
+++ b/modules/services_discovery/mtp.c
@@ -67,7 +67,7 @@ static int CountTracks( uint64_t const, uint64_t const, void const * const );
  * Local structures
  *****************************************************************************/
 
-struct services_discovery_sys_t
+typedef struct
 {
     int i_tracks_num;
     input_item_t **pp_items;
@@ -77,7 +77,7 @@ struct services_discovery_sys_t
     uint8_t i_dev;
     uint16_t i_product_id;
     vlc_thread_t thread;
-};
+} services_discovery_sys_t;
 
 static vlc_mutex_t mtp_lock = VLC_STATIC_MUTEX;
 static bool b_mtp_initialized = false;
diff --git a/modules/services_discovery/podcast.c b/modules/services_discovery/podcast.c
index 4e51698def..327b58ca3a 100644
--- a/modules/services_discovery/podcast.c
+++ b/modules/services_discovery/podcast.c
@@ -83,7 +83,7 @@ enum {
   UPDATE_REQUEST
 }; /* FIXME Temporary. Updating by compound urls string to be removed later. */
 
-struct services_discovery_sys_t
+typedef struct
 {
     /* playlist node */
     input_thread_t **pp_input;
@@ -102,7 +102,7 @@ struct services_discovery_sys_t
     bool b_savedurls_loaded;
     char *psz_request;
     int update_type;
-};
+} services_discovery_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/services_discovery/pulse.c b/modules/services_discovery/pulse.c
index 8797664f2e..839fb6a6fd 100644
--- a/modules/services_discovery/pulse.c
+++ b/modules/services_discovery/pulse.c
@@ -52,12 +52,12 @@ vlc_module_begin ()
     VLC_SD_PROBE_SUBMODULE
 vlc_module_end ()
 
-struct services_discovery_sys_t
+typedef struct
 {
     void                 *root;
     pa_context           *context;
     pa_threaded_mainloop *mainloop;
-};
+} services_discovery_sys_t;
 
 static void SourceCallback(pa_context *, const pa_source_info *, int, void *);
 static void ContextCallback(pa_context *, pa_subscription_event_type_t,
diff --git a/modules/services_discovery/sap.c b/modules/services_discovery/sap.c
index 02efad7a50..df07447297 100644
--- a/modules/services_discovery/sap.c
+++ b/modules/services_discovery/sap.c
@@ -211,7 +211,7 @@ struct sap_announce_t
     input_item_t * p_item;
 };
 
-struct services_discovery_sys_t
+typedef struct
 {
     vlc_thread_t thread;
 
@@ -228,12 +228,12 @@ struct services_discovery_sys_t
     bool  b_parse;
 
     int i_timeout;
-};
+} services_discovery_sys_t;
 
-struct demux_sys_t
+typedef struct
 {
     sdp_t *p_sdp;
-};
+} demux_sys_t;
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/services_discovery/udev.c b/modules/services_discovery/udev.c
index ae5c4c85ef..65cf7e267b 100644
--- a/modules/services_discovery/udev.c
+++ b/modules/services_discovery/udev.c
@@ -125,13 +125,13 @@ struct subsys
     int item_type;
 };
 
-struct services_discovery_sys_t
+typedef struct
 {
     const struct subsys *subsys;
     struct udev_monitor *monitor;
     vlc_thread_t         thread;
     void                *root;
-};
+} services_discovery_sys_t;
 
 /**
  * Compares two devices (to support binary search).
diff --git a/modules/services_discovery/xcb_apps.c b/modules/services_discovery/xcb_apps.c
index 57f84f20c2..659df39384 100644
--- a/modules/services_discovery/xcb_apps.c
+++ b/modules/services_discovery/xcb_apps.c
@@ -57,7 +57,7 @@ vlc_module_begin ()
     VLC_SD_PROBE_SUBMODULE
 vlc_module_end ()
 
-struct services_discovery_sys_t
+typedef struct
 {
     xcb_connection_t *conn;
     vlc_thread_t      thread;
@@ -66,7 +66,7 @@ struct services_discovery_sys_t
     xcb_window_t      root_window;
     void             *apps;
     input_item_t     *apps_root;
-};
+} services_discovery_sys_t;
 
 static void *Run (void *);
 static void UpdateApps (services_discovery_t *);
diff --git a/modules/spu/audiobargraph_v.c b/modules/spu/audiobargraph_v.c
index 8e6623db62..decb6ac347 100644
--- a/modules/spu/audiobargraph_v.c
+++ b/modules/spu/audiobargraph_v.c
@@ -123,7 +123,7 @@ typedef struct
 /**
  * Private data holder
  */
-struct filter_sys_t
+typedef struct
 {
     filter_t *p_blend;
 
@@ -138,7 +138,7 @@ struct filter_sys_t
 
     /* On the fly control variable */
     bool b_spu_update;
-};
+} filter_sys_t;
 
 static const char *const ppsz_filter_options[] = {
     "x", "y", "transparency", "position", "barWidth", "barHeight", NULL
diff --git a/modules/spu/dynamicoverlay/dynamicoverlay.h b/modules/spu/dynamicoverlay/dynamicoverlay.h
index 6cb8f49dd6..138b970656 100644
--- a/modules/spu/dynamicoverlay/dynamicoverlay.h
+++ b/modules/spu/dynamicoverlay/dynamicoverlay.h
@@ -164,7 +164,7 @@ overlay_t *ListWalk( list_t *p_list );
  * filter_sys_t: adjust filter method descriptor
  *****************************************************************************/
 
-struct filter_sys_t
+typedef struct
 {
     buffer_t input, output;
 
@@ -179,6 +179,6 @@ struct filter_sys_t
     list_t overlays;
 
     vlc_mutex_t lock;   /* lock to protect psz_inputfile and psz_outputfile */
-};
+} filter_sys_t;
 
 #endif
diff --git a/modules/spu/logo.c b/modules/spu/logo.c
index 3d75109813..78afcf3770 100644
--- a/modules/spu/logo.c
+++ b/modules/spu/logo.c
@@ -151,7 +151,7 @@ typedef struct
 /**
  * Private logo data holder
  */
-struct filter_sys_t
+typedef struct
 {
     filter_t *p_blend;
 
@@ -169,7 +169,7 @@ struct filter_sys_t
 
     /* */
     bool b_mouse_grab;
-};
+} filter_sys_t;
 
 static const char *const ppsz_filter_options[] = {
     "file", "x", "y", "delay", "repeat", "opacity", "position", NULL
diff --git a/modules/spu/marq.c b/modules/spu/marq.c
index 2ac1f41a3f..e0ad8dbc8f 100644
--- a/modules/spu/marq.c
+++ b/modules/spu/marq.c
@@ -67,7 +67,7 @@ static const char *const ppsz_color_descriptions[] = {
 /*****************************************************************************
  * filter_sys_t: marquee filter descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     vlc_mutex_t lock;
 
@@ -83,7 +83,7 @@ struct filter_sys_t
 
     mtime_t last_time;
     mtime_t i_refresh;
-};
+} filter_sys_t;
 
 #define MSG_TEXT N_("Text")
 #define MSG_LONGTEXT N_( \
diff --git a/modules/spu/mosaic.c b/modules/spu/mosaic.c
index b76166414a..ea6ab02274 100644
--- a/modules/spu/mosaic.c
+++ b/modules/spu/mosaic.c
@@ -55,7 +55,7 @@ static int MosaicCallback   ( vlc_object_t *, char const *, vlc_value_t,
 /*****************************************************************************
  * filter_sys_t : filter descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     vlc_mutex_t lock;         /* Internal filter lock */
 
@@ -79,7 +79,7 @@ struct filter_sys_t
     int i_offsets_length;
 
     mtime_t i_delay;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/spu/remoteosd.c b/modules/spu/remoteosd.c
index 630194226c..ed880ad722 100644
--- a/modules/spu/remoteosd.c
+++ b/modules/spu/remoteosd.c
@@ -148,6 +148,8 @@ vlc_module_end ()
 #define CHALLENGESIZE 16
 #define MAX_VNC_SERVER_NAME_LENGTH 255
 
+typedef struct filter_sys_t filter_sys_t;
+
 /* subsource functions */
 static subpicture_t *Filter( filter_t *, mtime_t );
 
diff --git a/modules/spu/rss.c b/modules/spu/rss.c
index 6df542ce80..d71fc9c4ed 100644
--- a/modules/spu/rss.c
+++ b/modules/spu/rss.c
@@ -96,7 +96,7 @@ typedef struct rss_feed_t
     rss_item_t *p_items;
 } rss_feed_t;
 
-struct filter_sys_t
+typedef struct
 {
     vlc_mutex_t lock;
     vlc_timer_t timer;  /* Timer to refresh the rss feeds */
@@ -122,7 +122,7 @@ struct filter_sys_t
     int i_cur_feed;
     int i_cur_item;
     int i_cur_char;
-};
+} filter_sys_t;
 
 #define MSG_TEXT N_("Feed URLs")
 #define MSG_LONGTEXT N_("RSS/Atom feed '|' (pipe) separated URLs.")
diff --git a/modules/spu/subsdelay.c b/modules/spu/subsdelay.c
index b87f9013d1..c85fa6e863 100644
--- a/modules/spu/subsdelay.c
+++ b/modules/spu/subsdelay.c
@@ -169,7 +169,7 @@ typedef struct
 * filter_sys_t: Subsdelay filter descriptor
  *****************************************************************************/
 
-struct filter_sys_t
+typedef struct
 {
     int i_mode; /* delay calculation mode */
 
@@ -186,7 +186,7 @@ struct filter_sys_t
     int64_t i_min_start_stop_interval;
 
     subsdelay_heap_t heap; /* subpictures list */
-};
+} filter_sys_t;
 
 
 /*****************************************************************************
diff --git a/modules/stream_filter/accesstweaks.c b/modules/stream_filter/accesstweaks.c
index 5def0742b5..493b79ba68 100644
--- a/modules/stream_filter/accesstweaks.c
+++ b/modules/stream_filter/accesstweaks.c
@@ -50,12 +50,12 @@ vlc_module_begin ()
     add_shortcut("tweaks")
 vlc_module_end ()
 
-struct stream_sys_t
+typedef struct
 {
     bool b_seek;
     bool b_fastseek;
     bool b_size;
-};
+} stream_sys_t;
 
 /**
  *
diff --git a/modules/stream_filter/aribcam.c b/modules/stream_filter/aribcam.c
index 051a9152a3..4af82d364a 100644
--- a/modules/stream_filter/aribcam.c
+++ b/modules/stream_filter/aribcam.c
@@ -84,7 +84,7 @@ static const struct error_messages_s const bcas_errors[] =
     { 0, NULL },
 };
 
-struct stream_sys_t
+typedef struct
 {
     ARIB_STD_B25 *p_b25;
     B_CAS_CARD   *p_bcas;
@@ -94,7 +94,7 @@ struct stream_sys_t
         size_t   i_size;
         block_t *p_list;
     } remain;
-};
+} stream_sys_t;
 
 static const char * GetErrorMessage( const int i_error,
                                const struct error_messages_s const *p_errors_messages )
diff --git a/modules/stream_filter/cache_block.c b/modules/stream_filter/cache_block.c
index e5b29a0055..313cc45334 100644
--- a/modules/stream_filter/cache_block.c
+++ b/modules/stream_filter/cache_block.c
@@ -65,11 +65,11 @@
  *  We release blocks once the total size is bigger than STREAM_CACHE_SIZE
  */
 
-struct stream_sys_t
+typedef struct
 {
     block_bytestream_t cache; /* bytestream chain for storing cache */
 
-};
+} stream_sys_t;
 
 static int AStreamRefillBlock(stream_t *s)
 {
diff --git a/modules/stream_filter/cache_read.c b/modules/stream_filter/cache_read.c
index 4025120c8b..971586a9bc 100644
--- a/modules/stream_filter/cache_read.c
+++ b/modules/stream_filter/cache_read.c
@@ -83,7 +83,7 @@ typedef struct
 
 } stream_track_t;
 
-struct stream_sys_t
+typedef struct
 {
     uint64_t     i_pos;      /* Current reading offset */
 
@@ -105,7 +105,7 @@ struct stream_sys_t
         uint64_t i_bytes;
         uint64_t i_read_time;
     } stat;
-};
+} stream_sys_t;
 
 static int AStreamRefillStream(stream_t *s)
 {
diff --git a/modules/stream_filter/decomp.c b/modules/stream_filter/decomp.c
index b23636dfee..a3e4b22ffa 100644
--- a/modules/stream_filter/decomp.c
+++ b/modules/stream_filter/decomp.c
@@ -72,7 +72,7 @@ vlc_module_begin ()
     set_callbacks (OpenGzip, Close)
 vlc_module_end ()
 
-struct stream_sys_t
+typedef struct
 {
     /* Thread data */
     int          write_fd;
@@ -90,7 +90,7 @@ struct stream_sys_t
     bool         can_pace;
     bool         can_pause;
     int64_t      pts_delay;
-};
+} stream_sys_t;
 
 extern char **environ;
 
diff --git a/modules/stream_filter/hds/hds.c b/modules/stream_filter/hds/hds.c
index 3de487f436..774759ced0 100644
--- a/modules/stream_filter/hds/hds.c
+++ b/modules/stream_filter/hds/hds.c
@@ -122,7 +122,7 @@ typedef struct hds_stream_s
 
 #define BITRATE_AS_BYTES_PER_SECOND 1024/8
 
-struct stream_sys_t
+typedef struct
 {
     char         *base_url;    /* URL common part for chunks */
     vlc_thread_t live_thread;
@@ -144,7 +144,7 @@ struct stream_sys_t
 
     bool         live;
     bool         closed;
-};
+} stream_sys_t;
 
 typedef struct _bootstrap_info {
     uint8_t* data;
diff --git a/modules/stream_filter/inflate.c b/modules/stream_filter/inflate.c
index 791f662f83..862cbddc31 100644
--- a/modules/stream_filter/inflate.c
+++ b/modules/stream_filter/inflate.c
@@ -30,12 +30,12 @@
 #include <vlc_plugin.h>
 #include <vlc_stream.h>
 
-struct stream_sys_t
+typedef struct
 {
     z_stream zstream;
     bool eof;
     unsigned char buffer[16384];
-};
+} stream_sys_t;
 
 static ssize_t Read(stream_t *stream, void *buf, size_t buflen)
 {
diff --git a/modules/stream_filter/prefetch.c b/modules/stream_filter/prefetch.c
index 482f87e617..99422a521b 100644
--- a/modules/stream_filter/prefetch.c
+++ b/modules/stream_filter/prefetch.c
@@ -35,7 +35,7 @@
 #include <vlc_fs.h>
 #include <vlc_interrupt.h>
 
-struct stream_sys_t
+typedef struct
 {
     vlc_mutex_t  lock;
     vlc_cond_t   wait_data;
@@ -60,7 +60,7 @@ struct stream_sys_t
     size_t       buffer_size;
     char        *buffer;
     size_t       seek_threshold;
-};
+} stream_sys_t;
 
 static ssize_t ThreadRead(stream_t *stream, void *buf, size_t length)
 {
diff --git a/modules/stream_filter/record.c b/modules/stream_filter/record.c
index 030cbc30c8..fef5cb5af8 100644
--- a/modules/stream_filter/record.c
+++ b/modules/stream_filter/record.c
@@ -54,11 +54,11 @@ vlc_module_end()
 /*****************************************************************************
  *
  *****************************************************************************/
-struct stream_sys_t
+typedef struct
 {
     FILE *f;        /* TODO it could be replaced by access_output_t one day */
     bool b_error;
-};
+} stream_sys_t;
 
 
 /****************************************************************************
diff --git a/modules/stream_out/autodel.c b/modules/stream_out/autodel.c
index ec5a10352d..c172f8598f 100644
--- a/modules/stream_out/autodel.c
+++ b/modules/stream_out/autodel.c
@@ -66,11 +66,11 @@ struct sout_stream_id_sys_t
     bool b_error;
 };
 
-struct sout_stream_sys_t
+typedef struct
 {
     sout_stream_id_sys_t **pp_es;
     int i_es_num;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/bridge.c b/modules/stream_out/bridge.c
index 755f5dd5ab..38eca85865 100644
--- a/modules/stream_out/bridge.c
+++ b/modules/stream_out/bridge.c
@@ -215,7 +215,7 @@ static int OpenOut( vlc_object_t *p_this )
     p_stream->pf_del    = DelOut;
     p_stream->pf_send   = SendOut;
 
-    p_stream->p_sys     = (sout_stream_sys_t *)p_sys;
+    p_stream->p_sys     = p_sys;
     p_stream->pace_nocontrol = true;
 
     return VLC_SUCCESS;
@@ -427,7 +427,7 @@ static int OpenIn( vlc_object_t *p_this )
     p_stream->pf_del    = DelIn;
     p_stream->pf_send   = SendIn;
 
-    p_stream->p_sys     = (sout_stream_sys_t *)p_sys;
+    p_stream->p_sys     = p_sys;
     p_stream->pace_nocontrol = true;
 
     return VLC_SUCCESS;
diff --git a/modules/stream_out/chromaprint.c b/modules/stream_out/chromaprint.c
index eb1f07588a..d13972f750 100644
--- a/modules/stream_out/chromaprint.c
+++ b/modules/stream_out/chromaprint.c
@@ -65,7 +65,7 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
-struct sout_stream_sys_t
+typedef struct
 {
     unsigned int i_duration;
     unsigned int i_total_samples;
@@ -75,7 +75,7 @@ struct sout_stream_sys_t
     ChromaprintContext *p_chromaprint_ctx;
     sout_stream_id_sys_t *id;
     chromaprint_fingerprint_t *p_data;
-};
+} sout_stream_sys_t;
 
 struct sout_stream_id_sys_t
 {
diff --git a/modules/stream_out/chromecast/chromecast_demux.cpp b/modules/stream_out/chromecast/chromecast_demux.cpp
index bcd379f330..a5b30eb8c4 100644
--- a/modules/stream_out/chromecast/chromecast_demux.cpp
+++ b/modules/stream_out/chromecast/chromecast_demux.cpp
@@ -493,7 +493,6 @@ int Open(vlc_object_t *p_this)
         return VLC_ENOMEM;
 
     p_demux->p_sys = p_sys;
-    p_demux->p_sys = reinterpret_cast<demux_sys_t*>(p_sys);
     p_demux->pf_demux = Demux;
     p_demux->pf_control = Control;
 
diff --git a/modules/stream_out/cycle.c b/modules/stream_out/cycle.c
index bb031f81ae..9bb428be65 100644
--- a/modules/stream_out/cycle.c
+++ b/modules/stream_out/cycle.c
@@ -53,7 +53,7 @@ struct sout_stream_id_sys_t
     void *id;
 };
 
-struct sout_stream_sys_t
+typedef struct
 {
     sout_stream_t *stream; /*< Current output stream */
     sout_stream_id_sys_t *first; /*< First elementary stream */
@@ -63,7 +63,7 @@ struct sout_stream_sys_t
     sout_cycle_t *next;
     mtime_t (*clock)(const block_t *);
     mtime_t period; /*< Total cycle duration */
-};
+} sout_stream_sys_t;
 
 static mtime_t get_dts(const block_t *block)
 {
diff --git a/modules/stream_out/delay.c b/modules/stream_out/delay.c
index ff641d931e..c90480a1ed 100644
--- a/modules/stream_out/delay.c
+++ b/modules/stream_out/delay.c
@@ -76,12 +76,12 @@ static sout_stream_id_sys_t *Add( sout_stream_t *, const es_format_t * );
 static void              Del   ( sout_stream_t *, sout_stream_id_sys_t * );
 static int               Send  ( sout_stream_t *, sout_stream_id_sys_t *, block_t * );
 
-struct sout_stream_sys_t
+typedef struct
 {
     sout_stream_id_sys_t *id;
     int i_id;
     mtime_t i_delay;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/description.c b/modules/stream_out/description.c
index bf77ba3a33..618c0547d5 100644
--- a/modules/stream_out/description.c
+++ b/modules/stream_out/description.c
@@ -57,11 +57,11 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
-struct sout_stream_sys_t
+typedef struct
 {
     sout_description_data_t *data;
     mtime_t i_stream_start;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/display.c b/modules/stream_out/display.c
index 246fd3ba8b..72e44b883a 100644
--- a/modules/stream_out/display.c
+++ b/modules/stream_out/display.c
@@ -78,14 +78,14 @@ static sout_stream_id_sys_t *Add( sout_stream_t *, const es_format_t * );
 static void              Del ( sout_stream_t *, sout_stream_id_sys_t * );
 static int               Send( sout_stream_t *, sout_stream_id_sys_t *, block_t* );
 
-struct sout_stream_sys_t
+typedef struct
 {
     bool     b_audio;
     bool     b_video;
 
     mtime_t        i_delay;
     input_resource_t *p_resource;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/duplicate.c b/modules/stream_out/duplicate.c
index 983004d82f..fc41bc7c0c 100644
--- a/modules/stream_out/duplicate.c
+++ b/modules/stream_out/duplicate.c
@@ -58,7 +58,7 @@ static void              Del ( sout_stream_t *, sout_stream_id_sys_t * );
 static int               Send( sout_stream_t *, sout_stream_id_sys_t *,
                                block_t* );
 
-struct sout_stream_sys_t
+typedef struct
 {
     int             i_nb_streams;
     sout_stream_t   **pp_streams;
@@ -68,7 +68,7 @@ struct sout_stream_sys_t
 
     int             i_nb_select;
     char            **ppsz_select;
-};
+} sout_stream_sys_t;
 
 struct sout_stream_id_sys_t
 {
diff --git a/modules/stream_out/es.c b/modules/stream_out/es.c
index a03c40276d..c5929d821d 100644
--- a/modules/stream_out/es.c
+++ b/modules/stream_out/es.c
@@ -124,7 +124,7 @@ static sout_stream_id_sys_t *Add( sout_stream_t *, const es_format_t * );
 static void              Del ( sout_stream_t *, sout_stream_id_sys_t * );
 static int               Send( sout_stream_t *, sout_stream_id_sys_t *, block_t* );
 
-struct sout_stream_sys_t
+typedef struct
 {
     int  i_count_audio;
     int  i_count_video;
@@ -141,7 +141,7 @@ struct sout_stream_sys_t
     char *psz_dst;
     char *psz_dst_audio;
     char *psz_dst_video;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/gather.c b/modules/stream_out/gather.c
index 2adfbab332..d269ac50e8 100644
--- a/modules/stream_out/gather.c
+++ b/modules/stream_out/gather.c
@@ -64,11 +64,11 @@ struct sout_stream_id_sys_t
     void          *id;
 };
 
-struct sout_stream_sys_t
+typedef struct
 {
     int              i_id;
     sout_stream_id_sys_t **id;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/mosaic_bridge.c b/modules/stream_out/mosaic_bridge.c
index 668a361ada..3227cfdbea 100644
--- a/modules/stream_out/mosaic_bridge.c
+++ b/modules/stream_out/mosaic_bridge.c
@@ -46,7 +46,7 @@
 /*****************************************************************************
  * Local structures
  *****************************************************************************/
-struct sout_stream_sys_t
+typedef struct
 {
     bridged_es_t *p_es;
 
@@ -60,7 +60,7 @@ struct sout_stream_sys_t
     int i_chroma; /* force image format chroma */
 
     filter_chain_t *p_vf2;
-};
+} sout_stream_sys_t;
 
 struct decoder_owner_sys_t
 {
diff --git a/modules/stream_out/record.c b/modules/stream_out/record.c
index b8d6b94359..5bccc9447a 100644
--- a/modules/stream_out/record.c
+++ b/modules/stream_out/record.c
@@ -93,7 +93,7 @@ struct sout_stream_id_sys_t
     bool b_wait_start;
 };
 
-struct sout_stream_sys_t
+typedef struct
 {
     char *psz_prefix;
 
@@ -110,7 +110,7 @@ struct sout_stream_sys_t
     int              i_id;
     sout_stream_id_sys_t **id;
     mtime_t     i_dts_start;
-};
+} sout_stream_sys_t;
 
 static void OutputStart( sout_stream_t *p_stream );
 static void OutputSend( sout_stream_t *p_stream, sout_stream_id_sys_t *id, block_t * );
diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c
index 9d5c39d4c0..71e59cecb6 100644
--- a/modules/stream_out/rtp.c
+++ b/modules/stream_out/rtp.c
@@ -291,7 +291,7 @@ static int HttpSetup( sout_stream_t *p_stream, const vlc_url_t * );
 static int64_t rtp_init_ts( const vod_media_t *p_media,
                             const char *psz_vod_session );
 
-struct sout_stream_sys_t
+typedef struct
 {
     /* SDP */
     char    *psz_sdp;
@@ -339,7 +339,7 @@ struct sout_stream_sys_t
     vlc_mutex_t      lock_es;
     int              i_es;
     sout_stream_id_sys_t **es;
-};
+} sout_stream_sys_t;
 
 typedef struct rtp_sink_t
 {
@@ -1802,7 +1802,7 @@ static sout_access_out_t *GrabberCreate( sout_stream_t *p_stream )
     p_grab->psz_access  = strdup( "grab" );
     p_grab->p_cfg       = NULL;
     p_grab->psz_path    = strdup( "" );
-    p_grab->p_sys       = (sout_access_out_sys_t *)p_stream;
+    p_grab->p_sys       = p_stream;
     p_grab->pf_seek     = NULL;
     p_grab->pf_write    = AccessOutGrabberWrite;
     return p_grab;
diff --git a/modules/stream_out/setid.c b/modules/stream_out/setid.c
index 7501f63be2..9266458900 100644
--- a/modules/stream_out/setid.c
+++ b/modules/stream_out/setid.c
@@ -100,12 +100,12 @@ static sout_stream_id_sys_t *AddLang( sout_stream_t *, const es_format_t * );
 static void              Del     ( sout_stream_t *, sout_stream_id_sys_t * );
 static int               Send    ( sout_stream_t *, sout_stream_id_sys_t *, block_t * );
 
-struct sout_stream_sys_t
+typedef struct
 {
     int              i_id;
     int              i_new_id;
     char             *psz_language;
-};
+} sout_stream_sys_t;
 
 /*****************************************************************************
  * Open:
diff --git a/modules/stream_out/smem.c b/modules/stream_out/smem.c
index 43ad651fd1..50d98c5ac9 100644
--- a/modules/stream_out/smem.c
+++ b/modules/stream_out/smem.c
@@ -145,7 +145,7 @@ struct sout_stream_id_sys_t
     void *p_data;
 };
 
-struct sout_stream_sys_t
+typedef struct
 {
     vlc_mutex_t *p_lock;
     void ( *pf_video_prerender_callback ) ( void* p_video_data, uint8_t** pp_pixel_buffer, size_t size );
@@ -153,7 +153,7 @@ struct sout_stream_sys_t
     void ( *pf_video_postrender_callback ) ( void* p_video_data, uint8_t* p_pixel_buffer, int width, int height, int pixel_pitch, size_t size, mtime_t pts );
     void ( *pf_audio_postrender_callback ) ( void* p_audio_data, uint8_t* p_pcm_buffer, unsigned int channels, unsigned int rate, unsigned int nb_samples, unsigned int bits_per_sample, size_t size, mtime_t pts );
     bool time_sync;
-};
+} sout_stream_sys_t;
 
 void VideoPrerenderDefaultCallback( void* p_video_data, uint8_t** pp_pixel_buffer, size_t size );
 void AudioPrerenderDefaultCallback( void* p_audio_data, uint8_t** pp_pcm_buffer, size_t size );
diff --git a/modules/stream_out/standard.c b/modules/stream_out/standard.c
index c70772d966..d3104c42ee 100644
--- a/modules/stream_out/standard.c
+++ b/modules/stream_out/standard.c
@@ -124,11 +124,11 @@ static const char *const ppsz_sout_options[] = {
 
 #define DEFAULT_PORT 1234
 
-struct sout_stream_sys_t
+typedef struct
 {
     sout_mux_t           *p_mux;
     session_descriptor_t *p_session;
-};
+} sout_stream_sys_t;
 
 static sout_stream_id_sys_t * Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
 {
diff --git a/modules/stream_out/stats.c b/modules/stream_out/stats.c
index 51028dd681..20fda0650f 100644
--- a/modules/stream_out/stats.c
+++ b/modules/stream_out/stats.c
@@ -71,11 +71,11 @@ static sout_stream_id_sys_t *Add( sout_stream_t *, const es_format_t * );
 static void               Del   ( sout_stream_t *, sout_stream_id_sys_t * );
 static int               Send  ( sout_stream_t *, sout_stream_id_sys_t *, block_t * );
 
-struct sout_stream_sys_t
+typedef struct
 {
     FILE *output;
     char *prefix;
-};
+} sout_stream_sys_t;
 
 struct sout_stream_id_sys_t
 {
diff --git a/modules/stream_out/transcode/transcode.h b/modules/stream_out/transcode/transcode.h
index 3c76a3d53f..2f67bce7f2 100644
--- a/modules/stream_out/transcode/transcode.h
+++ b/modules/stream_out/transcode/transcode.h
@@ -14,7 +14,7 @@
 /*100ms is around the limit where people are noticing lipsync issues*/
 #define MASTER_SYNC_MAX_DRIFT 100000
 
-struct sout_stream_sys_t
+typedef struct
 {
     sout_stream_id_sys_t *id_video;
     block_t         *p_buffers;
@@ -68,7 +68,7 @@ struct sout_stream_sys_t
     bool            b_master_sync;
     /* i_master drift is how much audio buffer is ahead of calculated pts */
     mtime_t         i_master_drift;
-};
+} sout_stream_sys_t;
 
 struct aout_filters;
 
diff --git a/modules/stream_out/vod.c b/modules/stream_out/vod.c
index dce96ada9e..5f389d5b18 100644
--- a/modules/stream_out/vod.c
+++ b/modules/stream_out/vod.c
@@ -76,14 +76,14 @@ struct vod_media_t
     mtime_t i_length;
 };
 
-struct vod_sys_t
+typedef struct
 {
     char *psz_rtsp_path;
 
     /* */
     vlc_thread_t thread;
     block_fifo_t *p_fifo_cmd;
-};
+} vod_sys_t;
 
 /* rtsp delayed command (to avoid deadlock between vlm/httpd) */
 typedef enum
diff --git a/modules/text_renderer/freetype/freetype.h b/modules/text_renderer/freetype/freetype.h
index b0ef9cf178..0b487acac6 100644
--- a/modules/text_renderer/freetype/freetype.h
+++ b/modules/text_renderer/freetype/freetype.h
@@ -73,7 +73,7 @@ typedef uint32_t uni_char_t;
  * It describes the freetype specific properties of an output thread.
  *****************************************************************************/
 typedef struct vlc_family_t vlc_family_t;
-struct filter_sys_t
+typedef struct
 {
     FT_Library     p_library;       /* handle to library     */
     FT_Face        p_face;          /* handle to face object */
@@ -141,7 +141,7 @@ struct filter_sys_t
 #if defined( _WIN32 )
     void *p_dw_sys;
 #endif
-};
+} filter_sys_t;
 
 /**
  * Selects and loads the right font
diff --git a/modules/text_renderer/svg.c b/modules/text_renderer/svg.c
index bc170bf6f7..f5db910f0a 100644
--- a/modules/text_renderer/svg.c
+++ b/modules/text_renderer/svg.c
@@ -54,11 +54,11 @@ static int  RenderText( filter_t *p_filter, subpicture_region_t *p_region_out,
                         subpicture_region_t *p_region_in,
                         const vlc_fourcc_t * );
 
-struct filter_sys_t
+typedef struct
 {
     char *psz_file_template;
     const char *psz_token;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Module descriptor
diff --git a/modules/video_chroma/chain.c b/modules/video_chroma/chain.c
index 39db9400f2..4edde8abb1 100644
--- a/modules/video_chroma/chain.c
+++ b/modules/video_chroma/chain.c
@@ -111,11 +111,11 @@ static const vlc_fourcc_t *get_allowed_chromas( filter_t *p_filter )
     }
 }
 
-struct filter_sys_t
+typedef struct
 {
     filter_chain_t *p_chain;
     filter_t *p_video_filter;
-};
+} filter_sys_t;
 
 /* Restart filter callback */
 static int RestartFilterCallback( vlc_object_t *obj, char const *psz_name,
diff --git a/modules/video_chroma/cvpx.c b/modules/video_chroma/cvpx.c
index 0076ec4f62..1fc422f41f 100644
--- a/modules/video_chroma/cvpx.c
+++ b/modules/video_chroma/cvpx.c
@@ -46,7 +46,7 @@ static int Open_CVPX_to_CVPX(vlc_object_t *);
 static void Close_CVPX_to_CVPX(vlc_object_t *);
 #endif
 
-struct filter_sys_t
+typedef struct
 {
     CVPixelBufferPoolRef pool;
     union
@@ -60,7 +60,7 @@ struct filter_sys_t
         VTPixelTransferSessionRef vttransfer;
 #endif
     };
-};
+} filter_sys_t;
 
 vlc_module_begin ()
     set_description("Conversions from/to CoreVideo buffers")
diff --git a/modules/video_chroma/i420_nv12.c b/modules/video_chroma/i420_nv12.c
index f43e500ef6..53e1364adf 100644
--- a/modules/video_chroma/i420_nv12.c
+++ b/modules/video_chroma/i420_nv12.c
@@ -34,10 +34,10 @@
 #include <vlc_picture.h>
 #include "copy.h"
 
-struct filter_sys_t
+typedef struct
 {
     copy_cache_t cache;
-};
+} filter_sys_t;
 
 #define GET_PITCHES( pic ) { \
     pic->p[Y_PLANE].i_pitch, \
diff --git a/modules/video_chroma/i420_rgb.h b/modules/video_chroma/i420_rgb.h
index f9dfaad14e..9bd156149e 100644
--- a/modules/video_chroma/i420_rgb.h
+++ b/modules/video_chroma/i420_rgb.h
@@ -34,7 +34,7 @@
  * This structure is part of the chroma transformation descriptor, it
  * describes the yuv2rgb specific properties.
  */
-struct filter_sys_t
+typedef struct
 {
     uint8_t  *p_buffer;
     int *p_offset;
@@ -54,7 +54,7 @@ struct filter_sys_t
     uint16_t  p_rgb_g[CMAP_RGB2_SIZE];  /**< Green values of palette */
     uint16_t  p_rgb_b[CMAP_RGB2_SIZE];  /**< Blue values of palette */
 #endif
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Prototypes
diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c
index 8993d11ec5..d88094bb0e 100644
--- a/modules/video_chroma/swscale.c
+++ b/modules/video_chroma/swscale.c
@@ -85,7 +85,7 @@ vlc_module_end ()
 /**
  * Internal swscale filter structure.
  */
-struct filter_sys_t
+typedef struct
 {
     SwsFilter *p_filter;
     int i_cpu_mask, i_sws_flags;
@@ -106,7 +106,7 @@ struct filter_sys_t
     bool b_copy;
     bool b_swap_uvi;
     bool b_swap_uvo;
-};
+} filter_sys_t;
 
 static picture_t *Filter( filter_t *, picture_t * );
 static int  Init( filter_t * );
diff --git a/modules/video_filter/adjust.c b/modules/video_filter/adjust.c
index 9947e4c707..7640872aed 100644
--- a/modules/video_filter/adjust.c
+++ b/modules/video_filter/adjust.c
@@ -112,7 +112,7 @@ static const char *const ppsz_filter_options[] = {
 /*****************************************************************************
  * filter_sys_t: adjust filter method descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     vlc_atomic_float f_contrast;
     vlc_atomic_float f_brightness;
@@ -124,7 +124,7 @@ struct filter_sys_t
                                int, int );
     int (*pf_process_sat_hue_clip)( picture_t *, picture_t *, int, int,
                                     int, int, int );
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates adjust video filter
diff --git a/modules/video_filter/alphamask.c b/modules/video_filter/alphamask.c
index 7fbd08b671..e0af31cd3a 100644
--- a/modules/video_filter/alphamask.c
+++ b/modules/video_filter/alphamask.c
@@ -77,11 +77,11 @@ static const char *const ppsz_filter_options[] = {
     "mask", NULL
 };
 
-struct filter_sys_t
+typedef struct
 {
     picture_t *p_mask;
     vlc_mutex_t mask_lock;
-};
+} filter_sys_t;
 
 static int Create( vlc_object_t *p_this )
 {
diff --git a/modules/video_filter/anaglyph.c b/modules/video_filter/anaglyph.c
index 4d05ab1662..2bfeafb54d 100644
--- a/modules/video_filter/anaglyph.c
+++ b/modules/video_filter/anaglyph.c
@@ -82,10 +82,10 @@ static const char *const ppsz_filter_options[] = {
     "scheme", NULL
 };
 
-struct filter_sys_t
+typedef struct
 {
     int left, right;
-};
+} filter_sys_t;
 
 
 static int Create(vlc_object_t *p_this)
diff --git a/modules/video_filter/antiflicker.c b/modules/video_filter/antiflicker.c
index 2dff4f260d..603fcdd2d4 100644
--- a/modules/video_filter/antiflicker.c
+++ b/modules/video_filter/antiflicker.c
@@ -87,13 +87,13 @@ vlc_module_end ()
  * This structure is part of the video output thread descriptor.
  * It describes the Distort specific properties of an output thread.
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     atomic_int i_window_size;
     atomic_int i_softening;
     int ia_luminance_data[MAX_WINDOW_SZ];
     uint8_t *p_old_data;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Distort video thread output method
diff --git a/modules/video_filter/ball.c b/modules/video_filter/ball.c
index c8c064e0d2..7a588cd14c 100644
--- a/modules/video_filter/ball.c
+++ b/modules/video_filter/ball.c
@@ -69,6 +69,9 @@ enum { RED, GREEN, BLUE, WHITE };
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
+
+typedef struct filter_sys_t filter_sys_t;
+
 static int  Create    ( vlc_object_t * );
 static void Destroy   ( vlc_object_t * );
 
diff --git a/modules/video_filter/blendbench.c b/modules/video_filter/blendbench.c
index 55298754ff..0cfe1b33e6 100644
--- a/modules/video_filter/blendbench.c
+++ b/modules/video_filter/blendbench.c
@@ -107,7 +107,7 @@ static const char *const ppsz_filter_options[] = {
 /*****************************************************************************
  * filter_sys_t: filter method descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     bool b_done;
     int i_loops, i_alpha;
@@ -117,7 +117,7 @@ struct filter_sys_t
 
     vlc_fourcc_t i_base_chroma;
     vlc_fourcc_t i_blend_chroma;
-};
+} filter_sys_t;
 
 static int blendbench_LoadImage( vlc_object_t *p_this, picture_t **pp_pic,
                                  vlc_fourcc_t i_chroma, char *psz_file, const char *psz_name )
diff --git a/modules/video_filter/bluescreen.c b/modules/video_filter/bluescreen.c
index 8fe5d86dcb..ac9e101af1 100644
--- a/modules/video_filter/bluescreen.c
+++ b/modules/video_filter/bluescreen.c
@@ -100,12 +100,12 @@ static const char *const ppsz_filter_options[] = {
     "u", "v", "ut", "vt", NULL
 };
 
-struct filter_sys_t
+typedef struct
 {
     vlc_mutex_t lock;
     int i_u, i_v, i_ut, i_vt;
     uint8_t *p_at;
-};
+} filter_sys_t;
 
 static int Create( vlc_object_t *p_this )
 {
diff --git a/modules/video_filter/canvas.c b/modules/video_filter/canvas.c
index 36bf8a956a..b9fbe508b2 100644
--- a/modules/video_filter/canvas.c
+++ b/modules/video_filter/canvas.c
@@ -127,10 +127,10 @@ static const char *const ppsz_filter_options[] = {
     "width", "height", "aspect", "padd", NULL
 };
 
-struct filter_sys_t
+typedef struct
 {
     filter_chain_t *p_chain;
-};
+} filter_sys_t;
 
 static picture_t *video_new( filter_t *p_filter )
 {
diff --git a/modules/video_filter/colorthres.c b/modules/video_filter/colorthres.c
index 319b806915..33af63e5aa 100644
--- a/modules/video_filter/colorthres.c
+++ b/modules/video_filter/colorthres.c
@@ -96,12 +96,12 @@ static int FilterCallback( vlc_object_t *, char const *,
 /*****************************************************************************
  * filter_sys_t: adjust filter method descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     atomic_int i_simthres;
     atomic_int i_satthres;
     atomic_int i_color;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates adjust video thread output method
diff --git a/modules/video_filter/croppadd.c b/modules/video_filter/croppadd.c
index f0145bb075..7843539b2b 100644
--- a/modules/video_filter/croppadd.c
+++ b/modules/video_filter/croppadd.c
@@ -111,7 +111,7 @@ static const char *const ppsz_filter_options[] = {
     NULL
 };
 
-struct filter_sys_t
+typedef struct
 {
     int i_croptop;
     int i_cropbottom;
@@ -121,7 +121,7 @@ struct filter_sys_t
     int i_paddbottom;
     int i_paddleft;
     int i_paddright;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * OpenFilter: probe the filter and return score
diff --git a/modules/video_filter/deinterlace/deinterlace.h b/modules/video_filter/deinterlace/deinterlace.h
index 355f2f4882..7c578bf479 100644
--- a/modules/video_filter/deinterlace/deinterlace.h
+++ b/modules/video_filter/deinterlace/deinterlace.h
@@ -65,7 +65,7 @@ static const char *const mode_list_text[] = {
 /**
  * Top-level deinterlace subsystem state.
  */
-struct filter_sys_t
+typedef struct
 {
     const vlc_chroma_description_t *chroma;
 
@@ -83,6 +83,6 @@ struct filter_sys_t
         phosphor_sys_t phosphor; /**< Phosphor algorithm state. */
         ivtc_sys_t ivtc;         /**< IVTC algorithm state. */
     };
-};
+} filter_sys_t;
 
 #endif
diff --git a/modules/video_filter/edgedetection.c b/modules/video_filter/edgedetection.c
index 54a960ba48..b2d74f7b7e 100644
--- a/modules/video_filter/edgedetection.c
+++ b/modules/video_filter/edgedetection.c
@@ -79,10 +79,10 @@ vlc_module_begin ()
 vlc_module_end ()
 
 /* Store the filter chain */
-struct filter_sys_t
+typedef struct
 {
     filter_chain_t *p_chain;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Opens the filter.
diff --git a/modules/video_filter/erase.c b/modules/video_filter/erase.c
index 3e9f36eb87..ce426f52a9 100644
--- a/modules/video_filter/erase.c
+++ b/modules/video_filter/erase.c
@@ -87,13 +87,13 @@ static const char *const ppsz_filter_options[] = {
 /*****************************************************************************
  * filter_sys_t
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     int i_x;
     int i_y;
     picture_t *p_mask;
     vlc_mutex_t lock;
-};
+} filter_sys_t;
 
 static void LoadMask( filter_t *p_filter, const char *psz_filename )
 {
diff --git a/modules/video_filter/extract.c b/modules/video_filter/extract.c
index 9c265d7060..ad8d458108 100644
--- a/modules/video_filter/extract.c
+++ b/modules/video_filter/extract.c
@@ -83,12 +83,12 @@ static const char *const ppsz_filter_options[] = {
 };
 
 enum { RED=0xFF0000, GREEN=0x00FF00, BLUE=0x0000FF };
-struct filter_sys_t
+typedef struct
 {
     vlc_mutex_t lock;
     int *projection_matrix;
     uint32_t i_color;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create
diff --git a/modules/video_filter/fps.c b/modules/video_filter/fps.c
index 6fc8a0d930..5d28d5040e 100644
--- a/modules/video_filter/fps.c
+++ b/modules/video_filter/fps.c
@@ -60,12 +60,12 @@ static const char *const ppsz_filter_options[] = {
 
 /* We'll store pointer for previous picture we have received
    and copy that if needed on framerate increase (not preferred)*/
-struct filter_sys_t
+typedef struct
 {
     date_t          next_output_pts; /**< output calculated PTS */
     picture_t       *p_previous_pic;
     int             i_output_frame_interval;
-};
+} filter_sys_t;
 
 static picture_t *Filter( filter_t *p_filter, picture_t *p_picture)
 {
diff --git a/modules/video_filter/freeze.c b/modules/video_filter/freeze.c
index a8b2087e5a..df6acc5b9b 100644
--- a/modules/video_filter/freeze.c
+++ b/modules/video_filter/freeze.c
@@ -40,7 +40,8 @@
 #   define MOD(a, b) ((((a)%(b)) + (b))%(b))
 #endif
 
-struct filter_sys_t {
+typedef struct
+{
     bool b_init;
 
     int32_t i_planes;
@@ -51,7 +52,7 @@ struct filter_sys_t {
     int16_t **pi_freezing_countdown; /* freezed pixel delay    */
     bool    **pb_update_cache;       /* update chache request  */
 
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Prototypes
diff --git a/modules/video_filter/gaussianblur.c b/modules/video_filter/gaussianblur.c
index 6e51d47e21..9b01c7550c 100644
--- a/modules/video_filter/gaussianblur.c
+++ b/modules/video_filter/gaussianblur.c
@@ -92,7 +92,7 @@ static const char *const ppsz_filter_options[] = {
 #   define type_t float
 #endif
 
-struct filter_sys_t
+typedef struct
 {
     double f_sigma;
     int i_dim;
@@ -100,7 +100,7 @@ struct filter_sys_t
     type_t *pt_distribution;
     type_t *pt_buffer;
     type_t *pt_scale;
-};
+} filter_sys_t;
 
 static void gaussianblur_InitDistribution( filter_sys_t *p_sys )
 {
diff --git a/modules/video_filter/gradfun.c b/modules/video_filter/gradfun.c
index 8ebb95d0aa..5a574de3c7 100644
--- a/modules/video_filter/gradfun.c
+++ b/modules/video_filter/gradfun.c
@@ -102,13 +102,14 @@ vlc_module_end()
 static picture_t *Filter(filter_t *, picture_t *);
 static int Callback(vlc_object_t *, char const *, vlc_value_t, vlc_value_t, void *);
 
-struct filter_sys_t {
+typedef struct
+{
     vlc_mutex_t      lock;
     float            strength;
     int              radius;
     const vlc_chroma_description_t *chroma;
     struct vf_priv_s cfg;
-};
+} filter_sys_t;
 
 static int Open(vlc_object_t *object)
 {
diff --git a/modules/video_filter/gradient.c b/modules/video_filter/gradient.c
index 9adb6daa05..78377108b9 100644
--- a/modules/video_filter/gradient.c
+++ b/modules/video_filter/gradient.c
@@ -108,7 +108,7 @@ static const char *const ppsz_filter_options[] = {
  * This structure is part of the video output thread descriptor.
  * It describes the Distort specific properties of an output thread.
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     vlc_mutex_t lock;
     int i_mode;
@@ -123,7 +123,7 @@ struct filter_sys_t
 
     /* For hough mode */
     int *p_pre_hough;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Distort video thread output method
diff --git a/modules/video_filter/grain.c b/modules/video_filter/grain.c
index fc8c7fbdcb..f8e98a31e7 100644
--- a/modules/video_filter/grain.c
+++ b/modules/video_filter/grain.c
@@ -81,7 +81,8 @@ vlc_module_end()
  *****************************************************************************/
 
 #define BLEND_SIZE (8)
-struct filter_sys_t {
+typedef struct
+{
     bool     is_uv_filtered;
     uint32_t seed;
 
@@ -99,7 +100,7 @@ struct filter_sys_t {
         vlc_mutex_t lock;
         double      variance;
     } cfg;
-};
+} filter_sys_t;
 
 /* Simple and *really fast* RNG (xorshift[13,17,5])*/
 #define URAND_SEED (2463534242)
diff --git a/modules/video_filter/hqdn3d.c b/modules/video_filter/hqdn3d.c
index c9b9bafab5..43cbba0103 100644
--- a/modules/video_filter/hqdn3d.c
+++ b/modules/video_filter/hqdn3d.c
@@ -87,7 +87,7 @@ static const char *const filter_options[] = {
 /*****************************************************************************
  * filter_sys_t
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     const vlc_chroma_description_t *chroma;
     int w[3], h[3];
@@ -96,7 +96,7 @@ struct filter_sys_t
     bool   b_recalc_coefs;
     vlc_mutex_t coefs_mutex;
     float  luma_spat, luma_temp, chroma_spat, chroma_temp;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Open
diff --git a/modules/video_filter/magnify.c b/modules/video_filter/magnify.c
index 4b667c6206..191541f84b 100644
--- a/modules/video_filter/magnify.c
+++ b/modules/video_filter/magnify.c
@@ -69,7 +69,7 @@ static void DrawRectangle( uint8_t *, int i_pitch, int i_width, int i_height,
                            int x, int y, int i_w, int i_h );
 
 /* */
-struct filter_sys_t
+typedef struct
 {
     image_handler_t *p_image;
 
@@ -81,7 +81,7 @@ struct filter_sys_t
     bool b_visible; /* is "interface" visible ? */
 
     int64_t i_last_activity;
-};
+} filter_sys_t;
 
 #define VIS_ZOOM 4
 #define ZOOM_FACTOR 8
diff --git a/modules/video_filter/mirror.c b/modules/video_filter/mirror.c
index 1f7126ab35..faf680c137 100644
--- a/modules/video_filter/mirror.c
+++ b/modules/video_filter/mirror.c
@@ -102,11 +102,11 @@ static int FilterCallback( vlc_object_t *, char const *,
 /*****************************************************************************
  * filter_sys_t: adjust filter method descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     atomic_int i_split;
     atomic_int i_direction;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Mirror video thread output method
diff --git a/modules/video_filter/motionblur.c b/modules/video_filter/motionblur.c
index 2db07ee885..e75af73633 100644
--- a/modules/video_filter/motionblur.c
+++ b/modules/video_filter/motionblur.c
@@ -42,6 +42,8 @@
 /*****************************************************************************
  * Local protypes
  *****************************************************************************/
+typedef struct filter_sys_t filter_sys_t;
+
 static int  Create       ( vlc_object_t * );
 static void Destroy      ( vlc_object_t * );
 static picture_t *Filter ( filter_t *, picture_t * );
diff --git a/modules/video_filter/motiondetect.c b/modules/video_filter/motiondetect.c
index fd1ff9b09d..5c86d2352e 100644
--- a/modules/video_filter/motiondetect.c
+++ b/modules/video_filter/motiondetect.c
@@ -66,7 +66,7 @@ static int FindShapes( uint32_t *, uint32_t *, int, int, int,
 static void Draw( filter_t *p_filter, uint8_t *p_pix, int i_pix_pitch, int i_pix_size );
 #define NUM_COLORS (5000)
 
-struct filter_sys_t
+typedef struct
 {
     bool is_yuv_planar;
     picture_t *p_old;
@@ -80,7 +80,7 @@ struct filter_sys_t
     int color_x_max[NUM_COLORS];
     int color_y_min[NUM_COLORS];
     int color_y_max[NUM_COLORS];
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create
diff --git a/modules/video_filter/oldmovie.c b/modules/video_filter/oldmovie.c
index f78e0f3751..04d2dca31c 100644
--- a/modules/video_filter/oldmovie.c
+++ b/modules/video_filter/oldmovie.c
@@ -109,7 +109,8 @@ typedef struct {
     mtime_t  i_stop_trigger;
 } dust_t;
 
-struct filter_sys_t {
+typedef struct
+{
 
     /* general data */
     bool b_init;
@@ -143,7 +144,7 @@ struct filter_sys_t {
     /* dust on lens */
     mtime_t    i_dust_trigger;
     dust_t    *p_dust[MAX_DUST];
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Prototypes
diff --git a/modules/video_filter/opencv_wrapper.c b/modules/video_filter/opencv_wrapper.c
index f4d7be7603..ea1f96588c 100644
--- a/modules/video_filter/opencv_wrapper.c
+++ b/modules/video_filter/opencv_wrapper.c
@@ -121,7 +121,7 @@ enum internal_chroma_t
  * This structure is part of the video output thread descriptor.
  * It describes the opencv_wrapper specific properties of an output thread.
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     image_handler_t *p_image;
 
@@ -141,7 +141,7 @@ struct filter_sys_t
     char* psz_inner_name;
 
     picture_t hacked_pic;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates opencv_wrapper video thread output method
diff --git a/modules/video_filter/posterize.c b/modules/video_filter/posterize.c
index bbb19927db..27f435def7 100644
--- a/modules/video_filter/posterize.c
+++ b/modules/video_filter/posterize.c
@@ -86,10 +86,10 @@ static int FilterCallback( vlc_object_t *, char const *,
 /*****************************************************************************
  * filter_sys_t: adjust filter method descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     atomic_int i_level;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Posterize video thread output method
diff --git a/modules/video_filter/postproc.c b/modules/video_filter/postproc.c
index 65968bfdba..ece3221563 100644
--- a/modules/video_filter/postproc.c
+++ b/modules/video_filter/postproc.c
@@ -106,7 +106,7 @@ static const char *const ppsz_filter_options[] = {
 /*****************************************************************************
  * filter_sys_t : libpostproc video postprocessing descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     /* Never changes after init */
     pp_context *pp_context;
@@ -116,7 +116,7 @@ struct filter_sys_t
 
     /* Lock when using or changing pp_mode */
     vlc_mutex_t lock;
-};
+} filter_sys_t;
 
 
 /*****************************************************************************
diff --git a/modules/video_filter/psychedelic.c b/modules/video_filter/psychedelic.c
index 285006ccdb..eed51477f0 100644
--- a/modules/video_filter/psychedelic.c
+++ b/modules/video_filter/psychedelic.c
@@ -67,13 +67,13 @@ vlc_module_end ()
  * This structure is part of the video output thread descriptor.
  * It describes the Distort specific properties of an output thread.
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     image_handler_t *p_image;
     unsigned int x, y, scale;
     int xinc, yinc, scaleinc;
     uint8_t u,v;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Distort video thread output method
diff --git a/modules/video_filter/puzzle_mgt.h b/modules/video_filter/puzzle_mgt.h
index 87006a787c..a25c69e45f 100644
--- a/modules/video_filter/puzzle_mgt.h
+++ b/modules/video_filter/puzzle_mgt.h
@@ -50,6 +50,8 @@
  * Local prototypes
  *****************************************************************************/
 
+typedef struct filter_sys_t filter_sys_t;
+
 typedef struct {
     int32_t i_preview_width, i_preview_lines;
     int32_t i_border_width, i_border_lines;
diff --git a/modules/video_filter/ripple.c b/modules/video_filter/ripple.c
index 2157b8d1fe..536d2df4fe 100644
--- a/modules/video_filter/ripple.c
+++ b/modules/video_filter/ripple.c
@@ -66,11 +66,11 @@ vlc_module_end ()
  * This structure is part of the video output thread descriptor.
  * It describes the Distort specific properties of an output thread.
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     double  f_angle;
     mtime_t last_date;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Distort video thread output method
diff --git a/modules/video_filter/rotate.c b/modules/video_filter/rotate.c
index ffeb545da0..183b353b37 100644
--- a/modules/video_filter/rotate.c
+++ b/modules/video_filter/rotate.c
@@ -86,11 +86,11 @@ static const char *const ppsz_filter_options[] = {
 /*****************************************************************************
  * filter_sys_t
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     atomic_uint_fast32_t sincos;
     motion_sensors_t *p_motion;
-};
+} filter_sys_t;
 
 typedef union {
     uint32_t u;
@@ -100,7 +100,7 @@ typedef union {
     };
 } sincos_t;
 
-static void store_trigo( struct filter_sys_t *sys, float f_angle )
+static void store_trigo( filter_sys_t *sys, float f_angle )
 {
     sincos_t sincos;
 
@@ -111,7 +111,7 @@ static void store_trigo( struct filter_sys_t *sys, float f_angle )
     atomic_store(&sys->sincos, sincos.u);
 }
 
-static void fetch_trigo( struct filter_sys_t *sys, int *i_sin, int *i_cos )
+static void fetch_trigo( filter_sys_t *sys, int *i_sin, int *i_cos )
 {
     sincos_t sincos = { .u = atomic_load(&sys->sincos) };
 
diff --git a/modules/video_filter/scene.c b/modules/video_filter/scene.c
index 093ecd38d3..0afe34586a 100644
--- a/modules/video_filter/scene.c
+++ b/modules/video_filter/scene.c
@@ -132,7 +132,7 @@ typedef struct scene_t {
 /*****************************************************************************
  * filter_sys_t: private data
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     image_handler_t *p_image;
     scene_t scene;
@@ -146,7 +146,7 @@ struct filter_sys_t
     int32_t i_ratio;  /* save every n-th frame */
     int32_t i_frames; /* frames count */
     bool  b_replace;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: initialize and set pf_video_filter()
diff --git a/modules/video_filter/sepia.c b/modules/video_filter/sepia.c
index 51e25c87ed..fb58df03a5 100644
--- a/modules/video_filter/sepia.c
+++ b/modules/video_filter/sepia.c
@@ -100,11 +100,11 @@ static const struct
 /*****************************************************************************
  * filter_sys_t: adjust filter method descriptor
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     SepiaFunction pf_sepia;
     atomic_int i_intensity;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Sepia video thread output method
diff --git a/modules/video_filter/sharpen.c b/modules/video_filter/sharpen.c
index d0d5164181..974cbdecb2 100644
--- a/modules/video_filter/sharpen.c
+++ b/modules/video_filter/sharpen.c
@@ -89,10 +89,10 @@ static const char *const ppsz_filter_options[] = {
  * It describes the Sharpen specific properties of an output thread.
  *****************************************************************************/
 
-struct filter_sys_t
+typedef struct
 {
     atomic_int sigma;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Sharpen video thread output method
diff --git a/modules/video_filter/transform.c b/modules/video_filter/transform.c
index 7c88f234ef..346a89c241 100644
--- a/modules/video_filter/transform.c
+++ b/modules/video_filter/transform.c
@@ -261,11 +261,12 @@ static bool dsc_is_rotated(const transform_description_t *dsc)
 static const size_t n_transforms =
     sizeof (descriptions) / sizeof (descriptions[0]);
 
-struct filter_sys_t {
+typedef struct
+{
     const vlc_chroma_description_t *chroma;
     void (*plane[PICTURE_PLANE_MAX])(plane_t *, const plane_t *);
     convert_t convert;
-};
+} filter_sys_t;
 
 static picture_t *Filter(filter_t *filter, picture_t *src)
 {
diff --git a/modules/video_filter/vhs.c b/modules/video_filter/vhs.c
index 51bbcaafcb..c9fe7d01df 100644
--- a/modules/video_filter/vhs.c
+++ b/modules/video_filter/vhs.c
@@ -50,7 +50,8 @@ typedef struct {
     mtime_t  i_stop_trigger;
 } blue_red_line_t;
 
-struct filter_sys_t {
+typedef struct
+{
 
     /* general data */
     bool b_init;
@@ -77,7 +78,7 @@ struct filter_sys_t {
     mtime_t  i_BR_line_trigger;
     blue_red_line_t *p_BR_lines[MAX_BLUE_RED_LINES];
 
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Prototypes
diff --git a/modules/video_filter/wave.c b/modules/video_filter/wave.c
index b384d6b06a..3e4b3da028 100644
--- a/modules/video_filter/wave.c
+++ b/modules/video_filter/wave.c
@@ -66,11 +66,11 @@ vlc_module_end ()
  * This structure is part of the video output thread descriptor.
  * It describes the Distort specific properties of an output thread.
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     double  f_angle;
     mtime_t last_date;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Create: allocates Distort video thread output method
diff --git a/modules/video_output/decklink.cpp b/modules/video_output/decklink.cpp
index 078740f6b7..5f52446347 100644
--- a/modules/video_output/decklink.cpp
+++ b/modules/video_output/decklink.cpp
@@ -1158,7 +1158,7 @@ static int OpenAudio(vlc_object_t *p_this)
     if(!sys)
         return VLC_ENOMEM;
 
-    aout->sys = (aout_sys_t *) sys;
+    aout->sys = sys;
 
     vlc_mutex_lock(&sys->lock);
     //decklink_sys->i_channels = var_InheritInteger(vd, AUDIO_CFG_PREFIX "audio-channels");
diff --git a/modules/visualization/glspectrum.c b/modules/visualization/glspectrum.c
index aacde8adb9..a6c4579d62 100644
--- a/modules/visualization/glspectrum.c
+++ b/modules/visualization/glspectrum.c
@@ -76,7 +76,7 @@ vlc_module_end()
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-struct filter_sys_t
+typedef struct
 {
     vlc_thread_t thread;
 
@@ -94,7 +94,7 @@ struct filter_sys_t
 
     /* FFT window parameters */
     window_param wind_param;
-};
+} filter_sys_t;
 
 
 static block_t *DoWork(filter_t *, block_t *);
diff --git a/modules/visualization/goom.c b/modules/visualization/goom.c
index 8d5538bb1a..77bdc649d8 100644
--- a/modules/visualization/goom.c
+++ b/modules/visualization/goom.c
@@ -100,11 +100,11 @@ typedef struct
 
 } goom_thread_t;
 
-struct filter_sys_t
+typedef struct
 {
     goom_thread_t *p_thread;
 
-};
+} filter_sys_t;
 
 static block_t *DoWork ( filter_t *, block_t * );
 
diff --git a/modules/visualization/visual/visual.c b/modules/visualization/visual/visual.c
index 702adfdcca..03b60825f4 100644
--- a/modules/visualization/visual/visual.c
+++ b/modules/visualization/visual/visual.c
@@ -177,14 +177,14 @@ vlc_module_end ()
 static block_t *DoWork( filter_t *, block_t * );
 static void *Thread( void *);
 
-struct filter_sys_t
+typedef struct
 {
     block_fifo_t    *fifo;
     vout_thread_t   *p_vout;
     visual_effect_t **effect;
     int             i_effect;
     vlc_thread_t    thread;
-};
+} filter_sys_t;
 
 /*****************************************************************************
  * Open: open the visualizer
diff --git a/src/input/es_out.c b/src/input/es_out.c
index 4e471e6455..1c82e023ec 100644
--- a/src/input/es_out.c
+++ b/src/input/es_out.c
@@ -121,7 +121,7 @@ typedef struct
     char        **ppsz_language;
 } es_out_es_props_t;
 
-struct es_out_sys_t
+typedef struct
 {
     input_thread_t *p_input;
 
@@ -175,7 +175,7 @@ struct es_out_sys_t
 
     /* Used only to limit debugging output */
     int         i_prev_stream_level;
-};
+} es_out_sys_t;
 
 static es_out_id_t *EsOutAdd    ( es_out_t *, const es_format_t * );
 static int          EsOutSend   ( es_out_t *, es_out_id_t *, block_t * );
diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c
index e30f923958..ebb319bb19 100644
--- a/src/input/es_out_timeshift.c
+++ b/src/input/es_out_timeshift.c
@@ -220,7 +220,7 @@ struct es_out_id_t
     es_out_id_t *p_es;
 };
 
-struct es_out_sys_t
+typedef struct
 {
     input_thread_t *p_input;
     es_out_t       *p_out;
@@ -245,7 +245,7 @@ struct es_out_sys_t
     /* */
     int            i_es;
     es_out_id_t    **pp_es;
-};
+} es_out_sys_t;
 
 static es_out_id_t *Add    ( es_out_t *, const es_format_t * );
 static int          Send   ( es_out_t *, es_out_id_t *, block_t * );
-- 
2.17.0




More information about the vlc-devel mailing list