Skip to content

Only do DoVi remux when the client supports profiles without fallbacks #13113

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

gnattu
Copy link
Member

@gnattu gnattu commented Nov 26, 2024

In 10.10 clients that can only play the fallback layer like the Samsung TVs will report DOVIWithHDR10 as supported video range, but the server should not do remux in DoVi as the client can only play the fallback layer. This changes the server to only do DoVi remux when the client can play DoVi videos without a fallback layer.

Changes

Issues

Forum report: https://forum.jellyfin.org/t-issue-with-playback-of-hevc-files-in-jellyfin-dolby-vision-tag-misconfiguration?pid=43992

In 10.10 clients that can only play the fallback layer like the Samsung TVs will report `DOVIWithHDR10` as supported video range, but the server should not do remux in DoVi as the client can only play the fallback layer. This changes the server to only do DoVi remux when the client can play DoVi videos without a fallback layer.
@gnattu gnattu added the stable backport Backport into the next stable release label Nov 26, 2024
@gnattu gnattu requested a review from a team November 26, 2024 07:03
@Bond-009 Bond-009 merged commit 9464f9e into jellyfin:release-10.10.z Nov 30, 2024
15 of 16 checks passed
@jellyfin-bot jellyfin-bot removed the stable backport Backport into the next stable release label Nov 30, 2024
joshuaboniface pushed a commit that referenced this pull request Nov 30, 2024
Only do DoVi remux when the client supports profiles without fallbacks

Original-merge: 9464f9e

Merged-by: Bond-009 <bond.009@outlook.com>

Backported-by: Bond_009 <bond.009@outlook.com>
@GeorgeH005
Copy link
Contributor

GeorgeH005 commented Dec 5, 2024

The supportsDolbyVision function in browserDeviceProfile.js in the web client should have returned false, shouldn't it have? Even if it did somehow return true, shouldn't the canPlayType functions have also returned false? I do not understand how the capabilities were reported as such in the first place.

@gnattu
Copy link
Member Author

gnattu commented Dec 5, 2024

The supportsDolbyVision function in browserDeviceProfile.js in the web client should have returned false, shouldn't it have? Even if it did somehow return true, shouldn't the canPlayType functions have also returned false? I do not understand how the capabilities were reported as such in the first place.

LG TV and Samsung TV has different logics because for Samsung TVs there are no DoVi capabilities at all so those color ranges are reported purely for the fallback layer. On LG TVs the real DoVi without fallback is always reported on supported TVs.

The reason behind this change is that Samsung TV also has buggy HLS player that struggles with seeking.

@gnattu gnattu deleted the only-remux-dv-when-no-fallback branch December 5, 2024 18:16
@GeorgeH005
Copy link
Contributor

Don't they share the client code? Those capabilities can't be reported as far as I recall without supportsDolbyVision being true, which is either set by the wrapper app, or because the client is using safari on an iDevice.

@gnattu
Copy link
Member Author

gnattu commented Dec 5, 2024

Clients can inject the profiles by design and that is injected by Tizen app wrapper iirc.

jellyfin/jellyfin-web@aa4004a

it is directly hard coded.

@GeorgeH005
Copy link
Contributor

I will have to look deeper into the client code. Thanks for explaining!

@GlassedSilver
Copy link

Does this trigger a re-encode then or is the fallback layer remuxed then?

@gnattu
Copy link
Member Author

gnattu commented Jan 22, 2025

Only the fallback layer is remuxed

@bm867002
Copy link

bm867002 commented Feb 8, 2025

That modification breaks DoVi playback on my LG C2. Just tested Jellyfin with and without this code modification. The new code lead to HDR fallback of all my DoVi (profile 8.1) files muxed in MKV. Other containers were not tested since not available. With the old code, everything is working fine.

I did not really proceed far with debugging, but variable "videoIsDoVi" seems to be set properly, but "clientSupportsDoVi" not. I am using the recent Jellyfin player from LG webstore. Maybe the player is not reporting DoVi modes without fallbacks?!

@gnattu
Copy link
Member Author

gnattu commented Feb 8, 2025

The only reason that is missing is that your device is not reporting profile 5 support.

We are already doing hacks for profile 8 on webOS, maybe we should do the same for profile 5 as the feature detection is not reliable on webOS:

https://github.com/jellyfin/jellyfin-web/blob/9124468fc531b7e05d2ff21323fc60e5caeee90a/src/scripts/browserDeviceProfile.js#L261-L283

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants