Skip to content

Jellyfin app sending incomplete player capabilities preventing direct play #5316

Description

@jennso

This issue respects the following points:

  • I have discussed this issue in the Jellyfin forum and/or troubleshooting chat before opening this issue.
  • This issue is not already reported on GitHub (I've searched it).
  • I agree to follow Jellyfin's Code of Conduct.
  • This report addresses only a single issue; If you encounter multiple issues, kindly create separate reports for each one.

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

root@61db08ebdfd7:/config# /usr/lib/jellyfin-ffmpeg/ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,pix_fmt,color_space,color_transfer,color_primaries -of json /mnt/storage/data/plex/4K/Spider-Man\ Across\ the\ Spider-Verse\ \(2023\).mkv
{
    "programs": [

    ],
    "stream_groups": [

    ],
    "streams": [
        {
            "codec_name": "hevc",
            "profile": "Main 10",
            "pix_fmt": "yuv420p10le",
            "level": 153,
            "color_space": "bt2020nc",
            "color_transfer": "smpte2084",
            "color_primaries": "bt2020",
            "side_data_list": [
                {

                }
            ]
        }
    ]
}

root@61db08ebdfd7:/config# /usr/lib/jellyfin-ffmpeg/ffprobe /mnt/storage/data/plex/4K/Spider-Man\ Across\ the\ Spider-Verse\ \(2023\).mkv
ffprobe version 7.1.3-Jellyfin Copyright (c) 2007-2025 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.3.0-6ubuntu2~24.04)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
[matroska,webm @ 0x55d6168009c0] Invalid Block Addition value 0x0 for unknown Block Addition Mapping type 68766345, name ""
[matroska,webm @ 0x55d6168009c0] Could not find codec parameters for stream 2 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
[matroska,webm @ 0x55d6168009c0] Could not find codec parameters for stream 4 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from '/mnt/storage/data/plex/4K/Spider-Man Across the Spider-Verse (2023).mkv':
  Metadata:
    encoder         : libebml v1.4.4 + libmatroska v1.7.1
    creation_time   : 2023-09-16T23:26:59.000000Z
  Duration: 02:20:06.40, start: 0.000000, bitrate: 73157 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 464.505708
      Metadata:
        title           : Chapter 01
    Chapter #0:1: start 464.505708, end 1015.723042
      Metadata:
        title           : Chapter 02
    Chapter #0:2: start 1015.723042, end 1628.543583
      Metadata:
        title           : Chapter 03
    Chapter #0:3: start 1628.543583, end 2091.047292
      Metadata:
        title           : Chapter 04
    Chapter #0:4: start 2091.047292, end 2675.923250
      Metadata:
        title           : Chapter 05
    Chapter #0:5: start 2675.923250, end 3153.817333
      Metadata:
        title           : Chapter 06
    Chapter #0:6: start 3153.817333, end 3513.051208
      Metadata:
        title           : Chapter 07
    Chapter #0:7: start 3513.051208, end 3837.875708
      Metadata:
        title           : Chapter 08
    Chapter #0:8: start 3837.875708, end 4343.297292
      Metadata:
        title           : Chapter 09
    Chapter #0:9: start 4343.297292, end 4905.275375
      Metadata:
        title           : Chapter 10
    Chapter #0:10: start 4905.275375, end 5469.922792
      Metadata:
        title           : Chapter 11
    Chapter #0:11: start 5469.922792, end 5894.305083
      Metadata:
        title           : Chapter 12
    Chapter #0:12: start 5894.305083, end 6481.892083
      Metadata:
        title           : Chapter 13
    Chapter #0:13: start 6481.892083, end 6930.214958
      Metadata:
        title           : Chapter 14
    Chapter #0:14: start 6930.214958, end 7527.311458
      Metadata:
        title           : Chapter 15
    Chapter #0:15: start 7527.311458, end 8406.398000
      Metadata:
        title           : Chapter 16
  Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn
      Metadata:
        BPS             : 69204533
        DURATION        : 02:20:06.398000000
        NUMBER_OF_FRAMES: 201552
        NUMBER_OF_BYTES : 72720106867
        _STATISTICS_WRITING_APP: mkvmerge v76.0 ('Celebration') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-16 23:26:59
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      Side data:
        DOVI configuration record: version: 1.0, profile: 7, level: 6, rpu flag: 1, el flag: 1, bl flag: 1, compatibility id: 6, compression: 0
  Stream #0:1(eng): Audio: truehd (Dolby TrueHD + Dolby Atmos), 48000 Hz, 7.1, s32 (24 bit) (default) (original)
      Metadata:
        BPS             : 3807981
        DURATION        : 02:20:06.399000000
        NUMBER_OF_FRAMES: 10087678
        NUMBER_OF_BYTES : 4001426476
        _STATISTICS_WRITING_APP: mkvmerge v76.0 ('Celebration') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-16 23:26:59
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(eng): Subtitle: hdmv_pgs_subtitle (pgssub)
      Metadata:
        BPS             : 43601
        DURATION        : 02:11:59.829000000
        NUMBER_OF_FRAMES: 3908
        NUMBER_OF_BYTES : 43164866
        _STATISTICS_WRITING_APP: mkvmerge v76.0 ('Celebration') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-16 23:26:59
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(spa): Subtitle: subrip (srt)
      Metadata:
        BPS             : 61
        DURATION        : 02:18:44.825000000
        NUMBER_OF_FRAMES: 2107
        NUMBER_OF_BYTES : 64183
        _STATISTICS_WRITING_APP: mkvmerge v76.0 ('Celebration') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-16 23:26:59
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(fre): Subtitle: hdmv_pgs_subtitle (pgssub)
      Metadata:
        BPS             : 34204
        DURATION        : 02:19:54.845000000
        NUMBER_OF_FRAMES: 4006
        NUMBER_OF_BYTES : 35892989
        _STATISTICS_WRITING_APP: mkvmerge v76.0 ('Celebration') 64-bit
        _STATISTICS_WRITING_DATE_UTC: 2023-09-16 23:26:59
        _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

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
  • Server compatibility: 10.11.5
{
    "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)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/3gpp
      • bitrateRange: 1-4096000
      • supportedFrameRates: 1-60
      • widthAlignment: 4
      • heightAlignment: 4
      • supportedWidths: 48-352
      • supportedHeights: 48-288
      • supportedPerformancePoints: PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 32
      • features
        • adaptive-playback
  • OMX.Nvidia.h264.decode (OMX.Nvidia.h264.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/avc
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 48-3840
      • supportedHeights: 48-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60), PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 32768
        • 65536: 32768
        • 2: 65536
        • 8: 65536
        • 524288: 65536
      • features
        • adaptive-playback
        • low-latency
  • OMX.Nvidia.h264.decode.secure (OMX.Nvidia.h264.decode.secure)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/avc
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 48-3840
      • supportedHeights: 48-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60), PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 32768
        • 65536: 32768
        • 2: 65536
        • 8: 65536
        • 524288: 65536
      • features
        • adaptive-playback
        • secure-playback (required)
  • OMX.Nvidia.h265.decode (OMX.Nvidia.h265.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/hevc
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 144-3840
      • supportedHeights: 144-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 131072
        • 2: 131072
        • 4096: 131072
      • features
        • adaptive-playback
        • low-latency
  • OMX.Nvidia.h265.decode.secure (OMX.Nvidia.h265.decode.secure)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/hevc
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 144-3840
      • supportedHeights: 144-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 131072
        • 2: 131072
        • 4096: 131072
      • features
        • adaptive-playback
        • secure-playback (required)
  • OMX.Nvidia.mjpeg.decoder (OMX.Nvidia.mjpeg.decoder)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/x-motion-jpeg
      • bitrateRange: 1-64000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 2-32768
      • supportedHeights: 2-32768
      • supportedPerformancePoints: PerformancePoint(1920x1088@30)
      • colorFormats: 2135033992, 21
      • features
        • adaptive-playback
  • OMX.Nvidia.mp2.decoder (OMX.Nvidia.mp2.decoder)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • audio/mpeg-L2
      • maxInputChannelCount: 6
      • bitrateRange: 8000-384000
      • supportedSampleRates: 16000, 22050, 24000, 32000, 44100, 48000
      • supportedSampleRateRanges: 16000, 22050, 24000, 32000, 44100, 48000
  • OMX.Nvidia.mp4.decode (OMX.Nvidia.mp4.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/mp4v-es
      • bitrateRange: 1-8000000
      • supportedFrameRates: 12-60
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 48-896
      • supportedHeights: 48-896
      • supportedPerformancePoints: PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 128
        • 32768: 128
      • features
        • adaptive-playback
  • OMX.Nvidia.mpeg2v.decode (OMX.Nvidia.mpeg2v.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/mpeg2
      • bitrateRange: 1-80000000
      • supportedFrameRates: 12-60
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 32-1920
      • supportedHeights: 32-1088
      • supportedPerformancePoints: PerformancePoint(3840x2160@60), PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 0: 1
        • 1: 3
      • features
        • adaptive-playback
  • OMX.Nvidia.vc1.decode (OMX.Nvidia.vc1.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/wvc1
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 32-3840
      • supportedHeights: 32-2176
      • supportedPerformancePoints: PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • features
        • adaptive-playback
    • video/x-ms-wmv
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 32-3840
      • supportedHeights: 32-2176
      • supportedPerformancePoints: PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • features
        • adaptive-playback
  • OMX.Nvidia.vp8.decode (OMX.Nvidia.vp8.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/x-vnd.on2.vp8
      • bitrateRange: 1-100000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 48-3840
      • supportedHeights: 48-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60), PerformancePoint(1920x1088@240)
      • colorFormats: 2135033992, 21
      • features
        • adaptive-playback
  • OMX.Nvidia.vp9.decode (OMX.Nvidia.vp9.decode)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/x-vnd.on2.vp9
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 144-3840
      • supportedHeights: 144-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 512
      • features
        • adaptive-playback
  • OMX.Nvidia.vp9.decode.secure (OMX.Nvidia.vp9.decode.secure)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • video/x-vnd.on2.vp9
      • bitrateRange: 1-120000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 144-3840
      • supportedHeights: 144-2176
      • supportedPerformancePoints: PerformancePoint(3840x2160@60)
      • colorFormats: 2135033992, 21
      • profileLevels
        • 1: 512
      • features
        • adaptive-playback
        • secure-playback (required)
  • OMX.Nvidia.wma.decoder (OMX.Nvidia.wma.decoder)

    • isVendor: true
    • isHardwareAccelerated: true
    • isSoftwareOnly: false
    • isAlias: false
    • audio/x-ms-wma
      • maxInputChannelCount: 6
      • bitrateRange: 8000-384000
      • supportedSampleRates: 16000, 22050, 24000, 32000, 44100, 48000
      • supportedSampleRateRanges: 16000, 22050, 24000, 32000, 44100, 48000
  • OMX.google.aac.decoder (OMX.google.aac.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/mp4a-latm
      • maxInputChannelCount: 8
      • bitrateRange: 8000-510000
      • supportedSampleRates: 7350, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
      • supportedSampleRateRanges: 7350, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
      • profileLevels
        • 2: 0
        • 5: 0
        • 29: 0
        • 23: 0
        • 39: 0
        • 20: 0
        • 42: 0
  • OMX.google.amrnb.decoder (OMX.google.amrnb.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/3gpp
      • maxInputChannelCount: 1
      • bitrateRange: 4750-12200
      • supportedSampleRates: 8000
      • supportedSampleRateRanges: 8000
  • OMX.google.amrwb.decoder (OMX.google.amrwb.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/amr-wb
      • maxInputChannelCount: 1
      • bitrateRange: 6600-23850
      • supportedSampleRates: 16000
      • supportedSampleRateRanges: 16000
  • OMX.google.flac.decoder (OMX.google.flac.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/flac
      • maxInputChannelCount: 8
      • bitrateRange: 1-21000000
      • supportedSampleRateRanges: 7350-192000
  • OMX.google.g711.alaw.decoder (OMX.google.g711.alaw.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/g711-alaw
      • maxInputChannelCount: 6
      • bitrateRange: 64000
      • supportedSampleRates: 8000
      • supportedSampleRateRanges: 8000
  • OMX.google.g711.mlaw.decoder (OMX.google.g711.mlaw.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/g711-mlaw
      • maxInputChannelCount: 6
      • bitrateRange: 64000
      • supportedSampleRates: 8000
      • supportedSampleRateRanges: 8000
  • OMX.google.h263.decoder (OMX.google.h263.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • video/3gpp
      • bitrateRange: 1-384000
      • supportedFrameRates: 1-30
      • widthAlignment: 4
      • heightAlignment: 4
      • supportedWidths: 4-352
      • supportedHeights: 4-288
      • colorFormats: 2135033992, 19
      • profileLevels
        • 1: 4
        • 1: 16
        • 8: 4
        • 8: 16
      • features
        • adaptive-playback
  • OMX.google.h264.decoder (OMX.google.h264.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • video/avc
      • bitrateRange: 1-48000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 2-4080
      • supportedHeights: 2-4080
      • colorFormats: 2135033992, 19
      • profileLevels
        • 65536: 65536
        • 1: 65536
        • 2: 65536
        • 524288: 65536
        • 8: 65536
      • features
        • adaptive-playback
  • OMX.google.hevc.decoder (OMX.google.hevc.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • video/hevc
      • bitrateRange: 1-10000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 2-4096
      • supportedHeights: 2-4096
      • colorFormats: 2135033992, 19
      • profileLevels
        • 1: 65536
        • 4: 65536
      • features
        • adaptive-playback
  • OMX.google.mp3.decoder (OMX.google.mp3.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/mpeg
      • maxInputChannelCount: 2
      • bitrateRange: 8000-320000
      • supportedSampleRates: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
      • supportedSampleRateRanges: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000
  • OMX.google.mpeg4.decoder (OMX.google.mpeg4.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • video/mp4v-es
      • bitrateRange: 1-384000
      • supportedFrameRates: 12-60
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 2-352
      • supportedHeights: 2-288
      • colorFormats: 2135033992, 19
      • profileLevels
        • 1: 16
      • features
        • adaptive-playback
  • OMX.google.opus.decoder (OMX.google.opus.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/opus
      • maxInputChannelCount: 8
      • bitrateRange: 6000-510000
      • supportedSampleRates: 8000, 12000, 16000, 24000, 48000
      • supportedSampleRateRanges: 8000, 12000, 16000, 24000, 48000
  • OMX.google.raw.decoder (OMX.google.raw.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/raw
      • maxInputChannelCount: 8
      • bitrateRange: 1-10000000
      • supportedSampleRateRanges: 8000-96000
  • OMX.google.vorbis.decoder (OMX.google.vorbis.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • audio/vorbis
      • maxInputChannelCount: 8
      • bitrateRange: 32000-500000
      • supportedSampleRateRanges: 8000-96000
  • OMX.google.vp8.decoder (OMX.google.vp8.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • video/x-vnd.on2.vp8
      • bitrateRange: 1-40000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 2-2048
      • supportedHeights: 2-2048
      • colorFormats: 2135033992, 19
      • features
        • adaptive-playback
  • OMX.google.vp9.decoder (OMX.google.vp9.decoder)

    • isVendor: false
    • isHardwareAccelerated: false
    • isSoftwareOnly: false
    • isAlias: false
    • video/x-vnd.on2.vp9
      • bitrateRange: 1-40000000
      • supportedFrameRates: 0-960
      • widthAlignment: 2
      • heightAlignment: 2
      • supportedWidths: 2-2048
      • supportedHeights: 2-2048
      • colorFormats: 2135033992, 19
      • profileLevels
        • 1: 256
        • 4: 256
        • 4096: 256
        • 16384: 256
      • features
        • adaptive-playback
Known media types
  • audio/3gpp
  • audio/amr-wb
  • audio/flac
  • audio/g711-alaw
  • audio/g711-mlaw
  • audio/mp4a-latm
  • audio/mpeg
  • audio/mpeg-L2
  • audio/opus
  • audio/raw
  • audio/vorbis
  • audio/x-ms-wma
  • video/3gpp
  • video/avc
  • video/hevc
  • video/mp4v-es
  • video/mpeg2
  • video/wvc1
  • video/x-motion-jpeg
  • video/x-ms-wmv
  • video/x-vnd.on2.vp8
  • video/x-vnd.on2.vp9
Codec HDR Support

HEVC

  • Dolby Vision: false
  • Dolby Vision Enhancement Layer: false
  • HDR10: true
  • HDR10+: false
Display information

Id: 0
Name: Built-in Screen
Rotation: 0°
Refresh rate: 60.000004
VSYNC offset: 100us
Presentation deadline: 17.566666ms
Minimal post processing: false
Any HDR: true
Wide color gamut: true
Preferred wide color space: Display P3 (id=7, model=RGB)
HDR capabilities:

  • Dolby Vision: false
  • HDR10: true
  • HDR10+: false
  • HLG: false

App information

App version: 0.19.5 (190599)
Package name: org.jellyfin.androidtv

Device information

Android version: 11
Device brand: NVIDIA
Device product: darcy
Device model: SHIELD Android TV
Device manufacturer: NVIDIA
Device codename: darcy

Client 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

There are no FFmpeg logs since this is an issue related to direct play, trascoding is disabled.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingplaybackIssue related to media playback

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions