Jump to content

Recommended Posts

Posted (edited)

Hello,

I tried the Xbox app today to see if I can finally use it for UHD. Overall, despite being somewhat buggy, the app itself seems to be in decent shape. However, for HDR playback it still has issues.

    1. Attempting to play HDR (tested with both 1080p and 2160p) at 120 hz will result in a stuck spinning blue circle with no playback and no error message. The same files play fine on 24 hz or 60 hz. I reported this in the past. If playback at 120 hz cannot be fixed, consider making the automatic display mode switcher prioritize 60 hz over 120 hz for HDR content. 24 > 60 > 120.

    2. Higher bitrate HDR files (threshold seems to be around 30 mbps) are forced to transcode with "VideoBitrateNotSupported" when they play perfectly fine if transcoding is disallowed. I reported this in the past and even uploaded a sample file.

    3. Dolby Vision profile 7 files (aka DV with EL) don't seem to trigger automatic HDR enabling and look washed out. Once HDR is enabled they play and look fine.

    4. Minor issue: Notification popups include escape sequences. For example: "HDR Mode Enabled.\r\n" (the \r\n is shown on screen).
 

EmbyPlus Xbox 2.213.70.1 on Xbox Series X.

Hope these can be addressed. I also encountered other issues with transcoding, like active ffmpeg processes sticking around after playback, but these need more testing before I can give you any useful details.

Thanks.

Edited by 65535
  • Like 1
Posted

Hi, 

thanks a lot for the feedback!

On 2/9/2025 at 3:36 PM, 65535 said:

    1. Attempting to play HDR (tested with both 1080p and 2160p) at 120 hz will result in a stuck spinning blue circle with no playback and no error message. The same files play fine on 24 hz or 60 hz. I reported this in the past. If playback at 120 hz cannot be fixed, consider making the automatic display mode switcher prioritize 60 hz over 120 hz for HDR content. 24 > 60 > 120.

Starting from Beta 2.217.0 (released today), there's a hard limit of 60 Hz on Xbox which will even be enforced when automatic rate switching is disabled.
Refresh rates > 60 Hz also won't be taken into account for  automatic rate switching.

On 2/9/2025 at 3:36 PM, 65535 said:

2. Higher bitrate HDR files (threshold seems to be around 30 mbps) are forced to transcode with "VideoBitrateNotSupported" when they play perfectly fine if transcoding is disallowed. I reported this in the past and even uploaded a sample file.

It might be because the Xbox Series X is a bit more powerful than Serries S (development and testing should always be based on the lower-end models).
Starting from Beta 2.217.0, there's an option to disable the 30 Mbps limit, but this mode is unsupported and you'll see a big warning banner - don't complain when video is not playing properly. 😉 

On 2/9/2025 at 3:36 PM, 65535 said:

3. Dolby Vision profile 7 files (aka DV with EL) don't seem to trigger automatic HDR enabling and look washed out. Once HDR is enabled they play and look fine.

Can you please show the Embyx MediaInfo for such kind of file?

On 2/9/2025 at 3:36 PM, 65535 said:

4. Minor issue: Notification popups include escape sequences. For example: "HDR Mode Enabled.\r\n" (the \r\n is shown on screen).

Fixed in Beta 2.217.0 (released today).

It might take about a week until a new stable release will be available.

Thanks a lot for reporting!

  • Like 2
Posted
7 hours ago, softworkz said:

Thanks a lot for reporting!

Thanks for the comprehensive response. I'll happily continue testing and reporting, knowing that my time won't be wasted.

7 hours ago, softworkz said:

Starting from Beta 2.217.0, there's an option to disable the 30 Mbps limit

Since I'm enrolled in the beta, I thought I'd try it. I started with 4k, but it seems the beta is not "aware" that it can play certain codecs and tries to transcode with `Converting video to compatible codec`. I know it can because disallowing transcoding makes it direct play.  I then tried with two AVC files (31 and 30 mbps) and it still transcoded "VideoBitrateNotSupported", so it seems like the option doesn't work. I did enable it, to be clear.

7 hours ago, softworkz said:

 

On 2/9/2025 at 4:36 PM, 65535 said:

3. Dolby Vision profile 7 files (aka DV with EL) don't seem to trigger automatic HDR enabling and look washed out. Once HDR is enabled they play and look fine.

Can you please show the Embyx MediaInfo for such kind of file?

image.png.c847535f876c260b6e11a01009e321be.png
It happened with every profile 7 file I tried.

Posted

Sorry, the beta was set to work like the regular release, not the plus app. 
It should work in 2.218.0 now (for all codecs).

On 2/9/2025 at 3:36 PM, 65535 said:

   3. Dolby Vision profile 7 files (aka DV with EL) don't seem to trigger automatic HDR enabling and look washed out. Once HDR is enabled they play and look fine.

Also fixed in 2.218.0 (in a few hours).

Thanks!

  • Like 1
Posted

Thank you for your diligence. There are still a couple of issues to iron out though.

I found edge cases in my library where HDR is still not enabling. It might have to do with Emby server not recognizing the DV profile in these files. Notice how it says "None" under Dolby Profile:

image.png.2df5c63b1a9f4ec92cdafc7321c37db5.png

MediaInfo reports them as a profile "8.6":

Spoiler
Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5.1@High
HDR format                               : Dolby Vision, Version 1.0, Profile 8.6, dvhe.08.06, BL+RPU, no metadata compression, Blu-ray compatible / SMPTE ST 2086, Version HDR10, HDR10 compatible
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 2 h 18 min
Bit rate                                 : 39.3 Mb/s
Width                                    : 3 840 pixels
Height                                   : 1 600 pixels
Display aspect ratio                     : 2.40:1
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0 (Type 2)
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.266
Stream size                              : 37.9 GiB (90%)
Writing library                          : x265 3.4+36-5239276dd:[Windows][GCC 10.2.1][64 bit] 10bit
Encoding settings                        : cpuid=1111039 / frame-threads=4 / numa-pools=24 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x1600 / interlace=0 / total-frames=198941 / level-idc=51 / high-tier=1 / uhd-bd=0 / ref=4 / no-allow-non-conformance / repeat-headers / annexb / aud / hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=40 / lookahead-slices=4 / scenecut=40 / hist-scenecut=0 / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=4 / tu-intra-depth=4 / limit-tu=4 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=4 / limit-refs=1 / limit-modes / me=3 / subme=5 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / no-sao / no-sao-non-deblock / rd=4 / selective-sao=0 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=1.00 / no-rd-refine / no-lossless / cbqpoffs=-2 / crqpoffs=-2 / rc=crf / crf=20.2 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / vbv-maxrate=160000 / vbv-bufsize=160000 / vbv-init=0.9 / min-vbv-fullness=50.0 / max-vbv-fullness=80.0 / crf-max=0.0 / crf-min=0.0 / ipratio=1.40 / pbratio=1.30 / aq-mode=2 / aq-strength=1.70 / no-cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=0 / overscan=0 / videoformat=5 / range=0 / colorprim=9 / transfer=16 / colormatrix=9 / chromaloc=1 / chromaloc-top=2 / chromaloc-bottom=2 / display-window=0 / master-display=G(8500,39850)B(6550,2300)R(35400,14600)WP(15635,16450)L(10000000,1) / cll=996,246 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / hist-threshold=0.03 / no-opt-cu-delta-qp / no-aq-motion / hdr10 / hdr10-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=0 / analysis-save-reuse-level=0 / analysis-load-reuse-level=0 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=1 / refine-ctu-distortion=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-analysis-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei / no-hevc-aq / no-svt / no-field / qp-adaptation-range=1.00 / scenecut-aware-qp=0conformance-window-offsets / right=0 / bottom=0 / decoder-max-rate=0 / no-vbv-live-multi-pass
Language                                 : English
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.2020
Transfer characteristics                 : PQ
Matrix coefficients                      : BT.2020 non-constant
Mastering display color primaries        : BT.2020
Mastering display luminance              : min: 0.0001 cd/m2, max: 1000 cd/m2
Maximum Content Light Level              : 996 cd/m2
Maximum Frame-Average Light Level        : 246 cd/m2

There's some discussion in this thread: 

 

Next, the 120 hz spinning circle problem is still not completely fixed. It switches to 24 hz just fine, but it has trouble switching to 60 from 120. The TV reports being switched to 60, but there's no notification from Emby that the refresh rate changed (only HDR enabled), and you get the endlessly spinning blue circle. If you set the Xbox to 60 hz then everything plays fine.

 

 

And finally, this is a very minor cosmetic issue but since I already brought it up earlier. The escape sequence is gone but there's no newline:

image.png.9fc420083fd22dfaaba9266305b5dacd.png

 

Thanks again for your effort.

image.png

Posted

Ignore that last screenshot. I forgot to delete it and it's misplaced.

Posted

Thanks a lot for testing. Profile 8.6 actually doesn't exist afaik.

Can you run this on the server:

ffprobe -print_format json -show_streams <file-path>

 

Posted
6 hours ago, 65535 said:

Next, the 120 hz spinning circle problem is still not completely fixed. It switches to 24 hz just fine, but it has trouble switching to 60 from 120. The TV reports being switched to 60, but there's no notification from Emby that the refresh rate changed (only HDR enabled), and you get the endlessly spinning blue circle. If you set the Xbox to 60 hz then everything plays fine.

So, the refresh rate changes but the video doesn't play?

Does it play on a second attempt then (when the rate is alredy at 60Hz? Or doesn't it really switch to 60Hz?

Posted
2 hours ago, softworkz said:

Thanks a lot for testing. Profile 8.6 actually doesn't exist afaik.

Can you run this on the server:

ffprobe -print_format json -show_streams <file-path>
Spoiler

ffprobe version 7.1-essentials_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.100 / 61. 19.100
  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
{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\Library\Movies\The Amazing Spider-Man (2012)\The Amazing Spider-Man (2012).mp4':
  Metadata:
    major_brand     : iso4
    minor_version   : 1
    compatible_brands: iso4
    creation_time   : 2023-05-25T05:19:18.000000Z
    encoder         : GPAC-2.3-DEV-rev119-g33f36c8a6-master
  Duration: 02:16:17.18, start: 0.000000, bitrate: 16786 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 465.924000
      Metadata:
        title           : Chapter 1
    Chapter #0:1: start 465.924000, end 879.670000
      Metadata:
        title           : Chapter 2
    Chapter #0:2: start 879.670000, end 1377.543000
      Metadata:
        title           : Chapter 3
    Chapter #0:3: start 1377.543000, end 1978.226000
      Metadata:
        title           : Chapter 4
    Chapter #0:4: start 1978.226000, end 2485.066000
      Metadata:
        title           : Chapter 5
    Chapter #0:5: start 2485.066000, end 2922.503000
      Metadata:
        title           : Chapter 6
    Chapter #0:6: start 2922.503000, end 3310.933000
      Metadata:
        title           : Chapter 7
    Chapter #0:7: start 3310.933000, end 3797.293000
      Metadata:
        title           : Chapter 8
    Chapter #0:8: start 3797.293000, end 4349.011000
      Metadata:
        title           : Chapter 9
    Chapter #0:9: start 4349.011000, end 4671.750000
      Metadata:
        title           : Chapter 10
    Chapter #0:10: start 4671.750000, end 5078.949000
      Metadata:
        title           : Chapter 11
    Chapter #0:11: start 5078.949000, end 5644.556000
      Metadata:
        title           : Chapter 12
    Chapter #0:12: start 5644.556000, end 6179.548000
      Metadata:
        title           : Chapter 13
    Chapter #0:13: start 6179.548000, end 6736.355000
      Metadata:
        title           : Chapter 14
    Chapter #0:14: start 6736.355000, end 7252.912000
      Metadata:
        title           : Chapter 15
    Chapter #0:15: start 7252.912000, end 8177.184000
      Metadata:
        title           : Chapter 16
  Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x1604, 16015 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)
      Metadata:
        creation_time   : 2023-05-25T05:19:18.000000Z
        vendor_id       : [0][0][0][0]
      Side data:
        DOVI configuration record: version: 1.0, profile: 8, level: 6, rpu flag: 1, el flag: 0, bl flag: 1, compatibility id: 6, compression: 0
        Mastering Display Metadata, has_primaries:1 has_luminance:1 r(0.6800,0.3200) g(0.2650,0.6900) b(0.1500 0.0600) wp(0.3127, 0.3290) min_luminance=0.005000, max_luminance=4000.000000
        Content Light Level Metadata, MaxCLL=4809, MaxFALL=1138
  Stream #0:1[0x2](eng): Audio: eac3 (ec-3 / 0x332D6365), 48000 Hz, 7.1, fltp, 768 kb/s (default)
      Metadata:
        creation_time   : 2023-05-25T05:21:32.000000Z
        handler_name    : E-AC-3 7.1
        vendor_id       : [0][0][0][0]
      Side data:
        audio service type: main
    "streams": [
        {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "H.265 / HEVC (High Efficiency Video Coding)",
            "profile": "Main 10",
            "codec_type": "video",
            "codec_tag_string": "hvc1",
            "codec_tag": "0x31637668",
            "width": 3840,
            "height": 1604,
            "coded_width": 3840,
            "coded_height": 1608,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "pix_fmt": "yuv420p10le",
            "level": 153,
            "color_range": "tv",
            "color_space": "bt2020nc",
            "color_transfer": "smpte2084",
            "color_primaries": "bt2020",
            "chroma_location": "topleft",
            "refs": 1,
            "view_ids_available": "",
            "view_pos_available": "",
            "id": "0x1",
            "r_frame_rate": "24000/1001",
            "avg_frame_rate": "24000/1001",
            "time_base": "1/24000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 196252040,
            "duration": "8177.168333",
            "bit_rate": "16015690",
            "nb_frames": "196056",
            "extradata_size": 127,
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "non_diegetic": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0,
                "multilayer": 0
            },
            "tags": {
                "creation_time": "2023-05-25T05:19:18.000000Z",
                "language": "und",
                "vendor_id": "[0][0][0][0]"
            },
            "side_data_list": [
                {
                    "side_data_type": "DOVI configuration record",
                    "dv_version_major": 1,
                    "dv_version_minor": 0,
                    "dv_profile": 8,
                    "dv_level": 6,
                    "rpu_present_flag": 1,
                    "el_present_flag": 0,
                    "bl_present_flag": 1,
                    "dv_bl_signal_compatibility_id": 6,
                    "dv_md_compression": "none"
                },
                {
                    "side_data_type": "Mastering display metadata",
                    "red_x": "34000/50000",
                    "red_y": "16000/50000",
                    "green_x": "13250/50000",
                    "green_y": "34500/50000",
                    "blue_x": "7500/50000",
                    "blue_y": "3000/50000",
                    "white_point_x": "15635/50000",
                    "white_point_y": "16450/50000",
                    "min_luminance": "50/10000",
                    "max_luminance": "40000000/10000"
                },
                {
                    "side_data_type": "Content light level metadata",
                    "max_content": 4809,
                    "max_average": 1138
                }
            ]
        },
        {
            "index": 1,
            "codec_name": "eac3",
            "codec_long_name": "ATSC A/52B (AC-3, E-AC-3)",
            "codec_type": "audio",
            "codec_tag_string": "ec-3",
            "codec_tag": "0x332d6365",
            "sample_fmt": "fltp",
            "sample_rate": "48000",
            "channels": 8,
            "channel_layout": "7.1",
            "bits_per_sample": 0,
            "initial_padding": 0,
            "id": "0x2",
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/48000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 392504832,
            "duration": "8177.184000",
            "bit_rate": "768000",
            "nb_frames": "255537",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0,
                "non_diegetic": 0,
                "captions": 0,
                "descriptions": 0,
                "metadata": 0,
                "dependent": 0,
                "still_image": 0,
                "multilayer": 0
            },
            "tags": {
                "creation_time": "2023-05-25T05:21:32.000000Z",
                "language": "eng",
                "handler_name": "E-AC-3 7.1",
                "vendor_id": "[0][0][0][0]"
            },
            "side_data_list": [
                {
                    "side_data_type": "Audio Service Type",
                    "service_type": 0
                }
            ]
        }
    ]
}

 

2 hours ago, softworkz said:

So, the refresh rate changes but the video doesn't play?

Does it play on a second attempt then (when the rate is alredy at 60Hz? Or doesn't it really switch to 60Hz?

Yes, the refresh rate changes, according to my TV, but without the Emby notification that usually accompanies a refresh rate change. Then it just gets stuck like this:
image.png.ef88732e6b03ee638ac8a4fa126f55d8.png

 

The app becomes unresponsive to my inputs and the only thing I can do is force close it or wait until it crashes after a few minutes (varies), so I can't test a second attempt. It also plays all SDR files at 120 hz without attempting to switch, which play fine as we know (only HDR has issues with 120 hz).

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...