{
"Name": "AndroidTV-Default",
"MaxStreamingBitrate": 200000000,
"MaxStaticBitrate": 200000000,
"DirectPlayProfiles": [
{
"Container": "asf,hls,m4v,mkv,mov,mp4,ogm,ogv,ts,vob,webm,wmv,xvid",
"AudioCodec": "aac,aac_latm,alac,dca,dts,flac,mlp,mp2,mp3,opus,pcm_alaw,pcm_mulaw,pcm_s16le,pcm_s20le,pcm_s24le,truehd,vorbis",
"VideoCodec": "av1,h264,hevc,mpeg,mpeg2video,vc1,vp8,vp9",
"Type": "Video"
},
{
"Container": "",
"AudioCodec": "aac,aac_latm,alac,dca,dts,flac,mlp,mp2,mp3,opus,pcm_alaw,pcm_mulaw,pcm_s16le,pcm_s20le,pcm_s24le,truehd,vorbis",
"VideoCodec": "",
"Type": "Audio"
}
],
"TranscodingProfiles": [
{
"Container": "ts",
"Type": "Video",
"VideoCodec": "hevc,h264",
"AudioCodec": "aac,aac_latm,alac,dca,dts,flac,mlp,mp2,mp3,opus,pcm_alaw,pcm_mulaw,pcm_s16le,pcm_s20le,pcm_s24le,truehd,vorbis",
"Protocol": "hls",
"EnableSubtitlesInManifest": true,
"Conditions": []
},
{
"Container": "ts",
"Type": "Audio",
"VideoCodec": "",
"AudioCodec": "aac",
"Protocol": "hls",
"Conditions": []
}
],
"ContainerProfiles": [],
"CodecProfiles": [
{
"Type": "Video",
"Conditions": [
{
"Condition": "EqualsAny",
"Property": "VideoProfile",
"Value": "high|main|baseline|constrained baseline",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "h264"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": "52",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "EqualsAny",
"Property": "VideoProfile",
"Value": "high|main|baseline|constrained baseline",
"IsRequired": false
}
],
"Codec": "h264"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "RefFrames",
"Value": "12",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "GreaterThanEqual",
"Property": "Width",
"Value": "1200",
"IsRequired": false
}
],
"Codec": "h264"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "RefFrames",
"Value": "4",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "GreaterThanEqual",
"Property": "Width",
"Value": "1900",
"IsRequired": false
}
],
"Codec": "h264"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "EqualsAny",
"Property": "VideoProfile",
"Value": "main|main 10",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "hevc"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": "153",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "Equals",
"Property": "VideoProfile",
"Value": "main",
"IsRequired": false
}
],
"Codec": "hevc"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "VideoLevel",
"Value": "153",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "Equals",
"Property": "VideoProfile",
"Value": "main 10",
"IsRequired": false
}
],
"Codec": "hevc"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "Equals",
"Property": "VideoProfile",
"Value": "none",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "av1"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "NotEquals",
"Property": "VideoProfile",
"Value": "none",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "vc1"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "Width",
"Value": "4080",
"IsRequired": false
},
{
"Condition": "LessThanEqual",
"Property": "Height",
"Value": "4080",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "h264"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "Width",
"Value": "4096",
"IsRequired": false
},
{
"Condition": "LessThanEqual",
"Property": "Height",
"Value": "4096",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "hevc"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "Width",
"Value": "0",
"IsRequired": false
},
{
"Condition": "LessThanEqual",
"Property": "Height",
"Value": "0",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "av1"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "Width",
"Value": "3840",
"IsRequired": false
},
{
"Condition": "LessThanEqual",
"Property": "Height",
"Value": "2176",
"IsRequired": false
}
],
"ApplyConditions": [],
"Codec": "vc1"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "NotEquals",
"Property": "VideoRangeType",
"Value": "DOVIInvalid|DOVI|DOVIWithHDR10|DOVIWithHDR10Plus|HDR10Plus|HDR10",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "EqualsAny",
"Property": "VideoRangeType",
"Value": "DOVIInvalid|DOVI|DOVIWithHDR10|DOVIWithHDR10Plus|HDR10Plus|HDR10",
"IsRequired": false
}
],
"Codec": "av1"
},
{
"Type": "Video",
"Conditions": [
{
"Condition": "NotEquals",
"Property": "VideoRangeType",
"Value": "DOVIInvalid|DOVIWithEL|DOVIWithELHDR10Plus|DOVI|DOVIWithHDR10Plus|HDR10Plus",
"IsRequired": false
}
],
"ApplyConditions": [
{
"Condition": "EqualsAny",
"Property": "VideoRangeType",
"Value": "DOVIInvalid|DOVIWithEL|DOVIWithELHDR10Plus|DOVI|DOVIWithHDR10Plus|HDR10Plus",
"IsRequired": false
}
],
"Codec": "hevc"
},
{
"Type": "VideoAudio",
"Conditions": [
{
"Condition": "LessThanEqual",
"Property": "AudioChannels",
"Value": "8",
"IsRequired": false
}
],
"ApplyConditions": []
}
],
"SubtitleProfiles": [
{
"Format": "vtt",
"Method": "Embed"
},
{
"Format": "vtt",
"Method": "External"
},
{
"Format": "vtt",
"Method": "Hls"
},
{
"Format": "webvtt",
"Method": "Embed"
},
{
"Format": "webvtt",
"Method": "External"
},
{
"Format": "webvtt",
"Method": "Hls"
},
{
"Format": "srt",
"Method": "Embed"
},
{
"Format": "srt",
"Method": "External"
},
{
"Format": "subrip",
"Method": "Embed"
},
{
"Format": "subrip",
"Method": "External"
},
{
"Format": "ttml",
"Method": "Embed"
},
{
"Format": "ttml",
"Method": "External"
},
{
"Format": "dvbsub",
"Method": "Embed"
},
{
"Format": "dvbsub",
"Method": "Encode"
},
{
"Format": "dvdsub",
"Method": "Embed"
},
{
"Format": "dvdsub",
"Method": "Encode"
},
{
"Format": "idx",
"Method": "Embed"
},
{
"Format": "idx",
"Method": "Encode"
},
{
"Format": "pgs",
"Method": "Embed"
},
{
"Format": "pgs",
"Method": "Encode"
},
{
"Format": "pgssub",
"Method": "Embed"
},
{
"Format": "pgssub",
"Method": "Encode"
},
{
"Format": "ass",
"Method": "Encode"
},
{
"Format": "ssa",
"Method": "Encode"
}
]
}
This issue respects the following points:
Describe the bug
The bug is a combination of the app and the server, the app reads the player playback capabilities and send this to the server to then evaluate wether the server should remux "Allow video playback that requires conversion without re-encoding" transcode video or audio "Allow video playback that requires transcoding" "Allow audio playback that requires transcoding" or able to direct play with no transcode or remux if the media is fully compatible with the player. (these settings are under the user profile ine the server)
Now the problem is when you have this setup nvidia shield -> denon amp -> HDR only capable tv, and you want to play a Dolby Vision profile 7 with and enhancement layer and an HDR10 layer (hybrid blue-ray), the app sends the hdr capability of the tv and the shield capability of Dobly audio to the server, then the server recieves this information and makes the decision that the dolby vision 7 with enhancement layer is not fully capable to be played on this player and tries to remux ot transcode (this is the main problem), since the file also has an HDR layer, if left alone like plex does the file would be sent directly to the player with no modifications and the ExoPlayer will fall back to HDR natually and play the video and the sound would be passed to the denon amp to decode the atmos or dolby sound this is the behaviour noticed in Plex.
I have an easy way to reproduce the issue but I don't see any section on this template to put those steps, so let me know if you need that information and how to post it.
Bottomline the app should be able to let this file play in direct mode since it has an HDR layer that will make it fully compatible for direct play, but because it detects that it also has a DV layer is prevents playback.
Letting the server remux you could say is a workaround since it will leave the video untouched but the codec/ format for remuxing is HLS, and in the app code is xplicitly deprioritizes TrueHD for HLS streaming, ( Lines 7384-7388 of MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs) so it's forced to transcode to AAC which you want to avoid since the player is fully capable of decoding atmos and trueHD.
Now this behavoiur is only happening with blue-rays that have Dolby-Vision profile 7 + HDR10 layer, I have other hybrid blue-rays that are Dolby-Vision profile 8.1 + HDR10 and those are able to direct play no problem no remux no trnascode, file just gets sent to the player and the ExoPlayer handles the fallback to HDR10,.
@nielsvanvelzen Let me know if this makes more sense
Media info of the file
Media capabilities report
cat 'upload_Jellyfin Android TV_0.19.5_20251231174045_06985a8d43704e699485004557499b68.log'
client: Jellyfin for Android TV
client_version: 0.19.5
client_repository: https://github.com/jellyfin/jellyfin-androidtv
type: media_capabilities_report
format: markdown
Generated device profile
{ "Name": "AndroidTV-Default", "MaxStreamingBitrate": 200000000, "MaxStaticBitrate": 200000000, "DirectPlayProfiles": [ { "Container": "asf,hls,m4v,mkv,mov,mp4,ogm,ogv,ts,vob,webm,wmv,xvid", "AudioCodec": "aac,aac_latm,alac,dca,dts,flac,mlp,mp2,mp3,opus,pcm_alaw,pcm_mulaw,pcm_s16le,pcm_s20le,pcm_s24le,truehd,vorbis", "VideoCodec": "av1,h264,hevc,mpeg,mpeg2video,vc1,vp8,vp9", "Type": "Video" }, { "Container": "", "AudioCodec": "aac,aac_latm,alac,dca,dts,flac,mlp,mp2,mp3,opus,pcm_alaw,pcm_mulaw,pcm_s16le,pcm_s20le,pcm_s24le,truehd,vorbis", "VideoCodec": "", "Type": "Audio" } ], "TranscodingProfiles": [ { "Container": "ts", "Type": "Video", "VideoCodec": "hevc,h264", "AudioCodec": "aac,aac_latm,alac,dca,dts,flac,mlp,mp2,mp3,opus,pcm_alaw,pcm_mulaw,pcm_s16le,pcm_s20le,pcm_s24le,truehd,vorbis", "Protocol": "hls", "EnableSubtitlesInManifest": true, "Conditions": [] }, { "Container": "ts", "Type": "Audio", "VideoCodec": "", "AudioCodec": "aac", "Protocol": "hls", "Conditions": [] } ], "ContainerProfiles": [], "CodecProfiles": [ { "Type": "Video", "Conditions": [ { "Condition": "EqualsAny", "Property": "VideoProfile", "Value": "high|main|baseline|constrained baseline", "IsRequired": false } ], "ApplyConditions": [], "Codec": "h264" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "VideoLevel", "Value": "52", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "EqualsAny", "Property": "VideoProfile", "Value": "high|main|baseline|constrained baseline", "IsRequired": false } ], "Codec": "h264" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "RefFrames", "Value": "12", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "GreaterThanEqual", "Property": "Width", "Value": "1200", "IsRequired": false } ], "Codec": "h264" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "RefFrames", "Value": "4", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "GreaterThanEqual", "Property": "Width", "Value": "1900", "IsRequired": false } ], "Codec": "h264" }, { "Type": "Video", "Conditions": [ { "Condition": "EqualsAny", "Property": "VideoProfile", "Value": "main|main 10", "IsRequired": false } ], "ApplyConditions": [], "Codec": "hevc" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "VideoLevel", "Value": "153", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "Equals", "Property": "VideoProfile", "Value": "main", "IsRequired": false } ], "Codec": "hevc" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "VideoLevel", "Value": "153", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "Equals", "Property": "VideoProfile", "Value": "main 10", "IsRequired": false } ], "Codec": "hevc" }, { "Type": "Video", "Conditions": [ { "Condition": "Equals", "Property": "VideoProfile", "Value": "none", "IsRequired": false } ], "ApplyConditions": [], "Codec": "av1" }, { "Type": "Video", "Conditions": [ { "Condition": "NotEquals", "Property": "VideoProfile", "Value": "none", "IsRequired": false } ], "ApplyConditions": [], "Codec": "vc1" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "Width", "Value": "4080", "IsRequired": false }, { "Condition": "LessThanEqual", "Property": "Height", "Value": "4080", "IsRequired": false } ], "ApplyConditions": [], "Codec": "h264" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "Width", "Value": "4096", "IsRequired": false }, { "Condition": "LessThanEqual", "Property": "Height", "Value": "4096", "IsRequired": false } ], "ApplyConditions": [], "Codec": "hevc" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "Width", "Value": "0", "IsRequired": false }, { "Condition": "LessThanEqual", "Property": "Height", "Value": "0", "IsRequired": false } ], "ApplyConditions": [], "Codec": "av1" }, { "Type": "Video", "Conditions": [ { "Condition": "LessThanEqual", "Property": "Width", "Value": "3840", "IsRequired": false }, { "Condition": "LessThanEqual", "Property": "Height", "Value": "2176", "IsRequired": false } ], "ApplyConditions": [], "Codec": "vc1" }, { "Type": "Video", "Conditions": [ { "Condition": "NotEquals", "Property": "VideoRangeType", "Value": "DOVIInvalid|DOVI|DOVIWithHDR10|DOVIWithHDR10Plus|HDR10Plus|HDR10", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "EqualsAny", "Property": "VideoRangeType", "Value": "DOVIInvalid|DOVI|DOVIWithHDR10|DOVIWithHDR10Plus|HDR10Plus|HDR10", "IsRequired": false } ], "Codec": "av1" }, { "Type": "Video", "Conditions": [ { "Condition": "NotEquals", "Property": "VideoRangeType", "Value": "DOVIInvalid|DOVIWithEL|DOVIWithELHDR10Plus|DOVI|DOVIWithHDR10Plus|HDR10Plus", "IsRequired": false } ], "ApplyConditions": [ { "Condition": "EqualsAny", "Property": "VideoRangeType", "Value": "DOVIInvalid|DOVIWithEL|DOVIWithELHDR10Plus|DOVI|DOVIWithHDR10Plus|HDR10Plus", "IsRequired": false } ], "Codec": "hevc" }, { "Type": "VideoAudio", "Conditions": [ { "Condition": "LessThanEqual", "Property": "AudioChannels", "Value": "8", "IsRequired": false } ], "ApplyConditions": [] } ], "SubtitleProfiles": [ { "Format": "vtt", "Method": "Embed" }, { "Format": "vtt", "Method": "External" }, { "Format": "vtt", "Method": "Hls" }, { "Format": "webvtt", "Method": "Embed" }, { "Format": "webvtt", "Method": "External" }, { "Format": "webvtt", "Method": "Hls" }, { "Format": "srt", "Method": "Embed" }, { "Format": "srt", "Method": "External" }, { "Format": "subrip", "Method": "Embed" }, { "Format": "subrip", "Method": "External" }, { "Format": "ttml", "Method": "Embed" }, { "Format": "ttml", "Method": "External" }, { "Format": "dvbsub", "Method": "Embed" }, { "Format": "dvbsub", "Method": "Encode" }, { "Format": "dvdsub", "Method": "Embed" }, { "Format": "dvdsub", "Method": "Encode" }, { "Format": "idx", "Method": "Embed" }, { "Format": "idx", "Method": "Encode" }, { "Format": "pgs", "Method": "Embed" }, { "Format": "pgs", "Method": "Encode" }, { "Format": "pgssub", "Method": "Embed" }, { "Format": "pgssub", "Method": "Encode" }, { "Format": "ass", "Method": "Encode" }, { "Format": "ssa", "Method": "Encode" } ] }Device codec decoders
OMX.Nvidia.h263.decode (OMX.Nvidia.h263.decode)
OMX.Nvidia.h264.decode (OMX.Nvidia.h264.decode)
OMX.Nvidia.h264.decode.secure (OMX.Nvidia.h264.decode.secure)
OMX.Nvidia.h265.decode (OMX.Nvidia.h265.decode)
OMX.Nvidia.h265.decode.secure (OMX.Nvidia.h265.decode.secure)
OMX.Nvidia.mjpeg.decoder (OMX.Nvidia.mjpeg.decoder)
OMX.Nvidia.mp2.decoder (OMX.Nvidia.mp2.decoder)
OMX.Nvidia.mp4.decode (OMX.Nvidia.mp4.decode)
OMX.Nvidia.mpeg2v.decode (OMX.Nvidia.mpeg2v.decode)
OMX.Nvidia.vc1.decode (OMX.Nvidia.vc1.decode)
OMX.Nvidia.vp8.decode (OMX.Nvidia.vp8.decode)
OMX.Nvidia.vp9.decode (OMX.Nvidia.vp9.decode)
OMX.Nvidia.vp9.decode.secure (OMX.Nvidia.vp9.decode.secure)
OMX.Nvidia.wma.decoder (OMX.Nvidia.wma.decoder)
OMX.google.aac.decoder (OMX.google.aac.decoder)
OMX.google.amrnb.decoder (OMX.google.amrnb.decoder)
OMX.google.amrwb.decoder (OMX.google.amrwb.decoder)
OMX.google.flac.decoder (OMX.google.flac.decoder)
OMX.google.g711.alaw.decoder (OMX.google.g711.alaw.decoder)
OMX.google.g711.mlaw.decoder (OMX.google.g711.mlaw.decoder)
OMX.google.h263.decoder (OMX.google.h263.decoder)
OMX.google.h264.decoder (OMX.google.h264.decoder)
OMX.google.hevc.decoder (OMX.google.hevc.decoder)
OMX.google.mp3.decoder (OMX.google.mp3.decoder)
OMX.google.mpeg4.decoder (OMX.google.mpeg4.decoder)
OMX.google.opus.decoder (OMX.google.opus.decoder)
OMX.google.raw.decoder (OMX.google.raw.decoder)
OMX.google.vorbis.decoder (OMX.google.vorbis.decoder)
OMX.google.vp8.decoder (OMX.google.vp8.decoder)
OMX.google.vp9.decoder (OMX.google.vp9.decoder)
Known media types
Codec HDR Support
HEVC
Display information
Id:
0Name:
Built-in ScreenRotation: 0°
Refresh rate:
60.000004VSYNC offset:
100usPresentation deadline:
17.566666msMinimal post processing:
falseAny HDR:
trueWide color gamut:
truePreferred wide color space:
Display P3 (id=7, model=RGB)HDR capabilities:
App information
App version:
0.19.5(190599)Package name:
org.jellyfin.androidtvDevice information
Android version:
11Device brand:
NVIDIADevice product:
darcyDevice model:
SHIELD Android TVDevice manufacturer:
NVIDIADevice codename:
darcyClient logs
I couldn't find any client crash logs, but this are relevant logs from the app rejecting playback when the player is capable of playing hdr.
[2026-01-03 16:58:24.005 -05:00] [INF] [16] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "User". EnablePlaybackRemuxing: False EnableVideoPlaybackTranscoding: False EnableAudioPlaybackTranscoding: False
[2026-01-03 16:58:24.005 -05:00] [INF] [16] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 10000000, RemoteIP: "192.168.0.207", IsInLocalNetwork: True
[2026-01-03 16:58:24.007 -05:00] [INF] [15] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Android TV" "0.19.5" playing "Spider-Man: Across the Spider-Verse". Stopped at "0" ms
[2026-01-03 16:58:24.034 -05:00] [INF] [16] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Android TV" "0.19.5" playing "Spider-Man: Across the Spider-Verse". Stopped at "0" ms
FFmpeg logs
Application version
0.19.5
Where did you install the app from?
Google Play Store
Device information
Nvidia Shield 2019
Android version
Andoid 11, Shield 9.2.2
Jellyfin server version
10.11.5
Other sources
No response