I remember when I started using GNU/Linux, back around 2000, there wasn’t much choice in media players, and they weren’t exactly feature rich. Thankfully, that has changed quite significantly now. There’s not only a wide choice in players, but also in video creation software.
As part of my new job, I have to work with these players and develop add-ons for them. It’s within the source code that I’ve developed a preference for xine.
I started with mplayer, which is a fantastic player and very featureful. But it’s a pain to develop on. After that, I looked at VLC, which again, while featureful and extensive, just didn’t suit my needs.
In between the two was xine, which has the features and format support to do most of what I want, and has a very good API and good documentation, which when combined with the source, gives all the direction I need for writing new frontends and any plugins necessary.
In short, if you need to hack on any open source media players, do give xine a look!

