The original Profile does force it to transcode:
<TranscodeTargets>
<VideoProfile protocol="http" container="mkv" codec="h264" audioCodec="aac,mp3" context="streaming" />
<MusicProfile container="mkv" codec="opus" />
<PhotoProfile container="jpeg" />
<SubtitleProfile container="ass" codec="ass" />
</TranscodeTargets>
See that here both aac and mp3 are listed, but you also have to look into the actual code config:
<VideoAudioCodec name="aac,mp3">
<Limitations>
<UpperBound name="audio.channels" value="2" />
</Limitations>
</VideoAudioCodec>
So tl;dr when we transcode we force only 2ch because that’s what most Chromecast devices support and I believe that’s what other software’s are doing actually!
I’m not quite sure yet why the Ultra doesn’t like that, but its also true the correct solution is to let it direct play since it should be capable.
Also Profiles are not the first thing we look into, most of or players have their own media decision engine, they try to find the info about what’s best and tell it to the server, but in this case Goolge SDK doesn’t tell us “hey this device supports 8 channels” (https://developers.google.com/cast/docs/media#audio_passthrough as you can see its just the codecs).
If it did we could say “Hey server this guy can play 7.1, so let it do it”;
Failing that option Profiles can actually be different for some devices even if the “platform/OS” is the same; i.e we have different profiles for different iPhones etc.
But even here the SDK doesn’t not provide enough info to identify the the target device (or so it seems, we are still looking into that and trying to find some hidden way of doing it that, but its not very likely this will happen much less soon) so this rules out the option of having separate profiles!
Last but not the least we still have an open issue where we are also trying to investigate why we do get an error (we can reproduce this) when transcoding on the Ultra and not on the others, in theory even if transcoding is not the best solution it should work and it might end up being the only solution we have!
In retrospect my post wasn’t clear on that; we will try the best solution if we can but failing that transcoding should work, unless there’s yet another goolge quirk about this device.
This is why for those of you who do have only have the Ultra, the change of the Profile is the for now the best work around, but ofc it would be if there’s more Chromecasts (expect for the Shield Pro, If I’m not mistaken this one should support it too).
So to conclude we are looking into this and I just ask again for some patience with this one. I will keep you posted with future developments.