How to read/interpret "supported_features"?

If anyone without a developer background lands in this thread, here is a tip. To find out what features are enabled, you can either do all the boolean and bitwise operations above, or you can follow a much simpler approach.

Suppose you want to find out what is supported on OP’s case (supported_features: 51765). You need to look at the constants SUPPORT_* on that file indeed (https://github.com/home-assistant/core/blob/9250dd0355eee4721b17c416acd5331d1ac84c76/homeassistant/components/media_player/const.py). But the trick is to find the largest number that is lower than your target, and subtract.

So for 51765, that largest number would be SHUFFLE_SET = 32768, as the next one (SELECT_SOUND_MODE) is already over your initial number.

So you know your device supports SHUFFLE_SET. You now have a remainder of 18997 (51765 - 32768). So you apply again, finding the largest number on the table that is lower than your target value, calculating the remainder, and you repeat until you reach zero.

PLAY = 16384 (remainder 2613)
SELECT_SOURCE = 2048 (remainder 565)
PLAY_MEDIA = 512 (remainder 53)
NEXT_TRACK = 32 (remainder 21)
PREVIOUS_TRACK = 16 (remainder 5)
VOLUME_SET = 4 (remainder 1)
PAUSE = 1 (remainder 0, stop)

Again, you are just decoding binary. Your methodology is slightly easier,