pub fn audio_forces_transcode(streams: &[(Option<&str>, bool)]) -> boolExpand description
Decide whether we must transcode regardless of what the server negotiated,
given the source’s audio streams as (codec, is_default) in source order.
Advertising a narrow profile (video_audio_codecs) is necessary but not
sufficient: Jellyfin 10.11.5 enforces a DirectPlayProfile’s container and
video codec but ignores its audio codec — an E-AC-3 track is offered for
direct play even when the profile lists only AAC, and neither a VideoAudio
CodecProfile nor MaxAudioChannels changes that. So the client cannot
delegate this decision; it knows what its own renderer can decode and must
apply that itself.
The track that matters is the one the server will actually serve (see
served_audio_codec). An unknown codec is left alone — forcing a transcode
on a guess would burn server CPU for files that play.
TRACES: UR-004 | DR-149 | UT-148