modules/control: add MPD server
This is the work I've done during GSoC 2022.
It's an implementation of a MPD server, which allows MPD clients to control VLC.
What works
This implementation supports a subset of the MPD protocol. I mainly tested it with mpc, ncmpc and ncmpcpp, but most MPD clients should work (with at least basic functionalities).
- player controls (play, pause, stop, skip, volume…)
- playlist manipulations (move, delete songs)
- navigating in the media library and adding songs to the playlist
- searching songs, albums and artists in the media library, with complex filters
- multiple clients can be connected at the same time
What is missing
Those are the functionalities that I did not add, and are not necessary for most clients to work.
- ANY tag and regex search in filters
- channels
- sickers (might be difficult to implement since it requires changes in medialibrary)
- stored playlists (.m3u files)
- sending the album art
- mounts
- multiple partitions and audio output devices
Acknowledgments
I would like to thank my mentor Thomas Guillem, Georges Vaindirlis (whose work really helped me to get started), and the VideoLAN team.