Make exact mode the only mode. Always re-open the output device with parameters matching the source audio file, or failing that, the highest fidelity parameters the device supports.
Rewrite playlist.c so that a sink can have a list of target audio formats instead of always one. When creating the filter graph, only resample/reformat if the source does not match one of the target formats.
When the player creates its sink, make the list of supported auido formats equal the device supported audio formats.
Expose info that tells whether bit perfect playback is happening, and the audio format of the source file and output device so the API user knows exactly how bit perfect playback was compromised (if at all) in order to achieve playback at all.
Audio players who want to ensure bit perfect playback will want to open devices in raw mode.