fun fact, the AppleTV 4K internally understands the following:
"session available formats" = "{ { [ 32/48000/2 lpcm ], [ 32/48000/6 lpcm ], [ 32/48000/8 lpcm ], [ 16/192000/2 cc+3 ], [ 16/176400/2 cc+3 ], [ 16/192000/2 cd+3 ], [ 16/176400/2 cd+3 ], [ 16/192000/2 cec3 ], [ 16/176400/2 cec3 ], [ 16/768000/2 mtat ], [ 16/48000/32 mtb+ ], [ 16/768000/2 mtbt ], [ 16/48000/32 mtc+ ], [ 16/44100/32 mtc+ ], [ 16/768000/2 mtct ], [ 16/705600/2 mtct ] } }";
Note the sample rates which go up to 192000.
Of particular interest is "mtb+" which it uses when outputting eac3/atmos.
AVPlayer will take a eac3/atmos raw file and output Dolby Atmos. Probing show that it sees three "tracks", ec3, atmos/12 channels and atmos/16 channels.
I suspect ACAudioPlayer will also output Dolby Atmos.
However, AVSampleBufferAudioRenderer just plays the eac3 part when one inputs eac3/atmos. From what I see, there is no public method that can switch tracks.
Same results when feeding an AudioUnit/kAudioUnitSubType_RemoteIO.
Somehow, AVPlayer detects and enables atmos decoding eac3/atmos. Still investigating
