New user preference to disable Dolby Vision#1644
Conversation
…ofiles. This gives the user the ability to turn off problematic dolby vision media without relying on KnownDefects.kt to handle all permutations. Additionally, changes were made to workflows/main.yaml and build.gradle.kts making it easier for people who fork the repo to build and have actions.
damontecres
left a comment
There was a problem hiding this comment.
This PR has build script changes unrelated to the suggested feature. I will review this PR once that is fixed.
|
Removed the changes to the build and github actions. Let me know if I need to make any other changes before getting a review. Thanks. |
damontecres
left a comment
There was a problem hiding this comment.
I'll admit that I'm not super familiar with Dolby Vision and all of the peculiarities with it, but I do agree that it seems accurately detecting support is difficult so this seems useful.
Thanks for the contribution!
| summary = R.string.force_dovi_profile_7_summary, | ||
| ) | ||
|
|
||
| val DoviDeviceCompatibilityPref = |
There was a problem hiding this comment.
I'd like to make this an experimental setting, see #1624 for an example.
| when (doviDeviceCompatibilityMode) { | ||
| DoviDeviceCompatibilityMode.DISABLE_DOVI_ALL -> { | ||
| add(VideoRangeType.DOVI.serialName) | ||
| add(VideoRangeType.DOVI_WITH_HDR10.serialName) |
There was a problem hiding this comment.
Does DOVI_WITH_HLG and DOVI_WITH_SDR need to be considered here?
There was a problem hiding this comment.
Thanks for pointing out these formats. Since the preference is disable all dolby vision, I think we should it should report the device as being incompatible with these formats (even through I haven't had a problem with it). The less restrictive option would continue to only disable the dolby vision with hdr10(+) formats.
There was a problem hiding this comment.
I think reporting all of them as incompatible makes sense
| add(VideoRangeType.DOVI_WITH_HDR10.serialName) | ||
| if (jellyfinTenEleven) add("DOVIWithHDR10Plus") | ||
| } | ||
| else -> {} |
There was a problem hiding this comment.
Use exhaustive enum list instead of else so potential future changes force a compiler error.
| add("DOVIWithELHDR10Plus") | ||
| } | ||
| } | ||
| else -> {} |
| </string-array> | ||
| <string-array name="dovi_device_compatibility_mode_descriptions"> | ||
| <item>Allow Dolby Vision media</item> | ||
| <item>Force transcoding by reporting the device as incompatible with all Dolby Vision media</item> |
There was a problem hiding this comment.
| <item>Force transcoding by reporting the device as incompatible with all Dolby Vision media</item> | |
| <item>Force transcoding all Dolby Vision media</item> |
| <string-array name="dovi_device_compatibility_mode_descriptions"> | ||
| <item>Allow Dolby Vision media</item> | ||
| <item>Force transcoding by reporting the device as incompatible with all Dolby Vision media</item> | ||
| <item>Force transcoding by reporting the device as incompatible with Dolby Vision and HDR10/HDR10+ hybrid media</item> |
There was a problem hiding this comment.
| <item>Force transcoding by reporting the device as incompatible with Dolby Vision and HDR10/HDR10+ hybrid media</item> | |
| <item>Force transcoding Dolby Vision with HDR10/HDR10+ hybrid media</item> |

The PR adds a user preference to control dolby vision support in device profiles. This gives the user the ability to turn off problematic dolby vision media without relying on KnownDefects.kt to handle all permutations.
Background:
My household uses FireTV for streaming our media. I have several different models across multiple generations connected to different brands of TVs. It has been a very frustrating experience trying to get Dolby Vision media to play on those devices. I frequently get a black screen when play DV media by it various by model and TV. This seems to be a very common issue that continues to cause people problems. I tried various fixes including filtering DV codecs with mixed success (it worked on some FireTV / TV combos but not others). Since the problem varies depending on the TV and media, I thought it best to give the user a preference to disable DV compatibility and let the server transcode.
Feature Changes:
Description
Adding a new user preference to disable Dolby Vision when sending device compatibility information to the Jellyfin server.
Related issues
This is a common problem across the Jellyfin ecosystem, but there isn't a specific issue for Wholphin. My experience is the issue is FireTV (model and generation) + TV dependent + media dependent. I tested videos from https://kodi.wiki/view/Samples with the same DOVIWithHDR10 flag that worked while other movies I have with the same flag didn't work. It is a very frustrating user experience and the current work around of setting the bitrate really low to force a transcode is sub-optimal IMO as it lowers the video quality. This allows the user to maintain full quality while disabling DV.
jellyfin/jellyfin-androidtv#4021
jellyfin/jellyfin-androidtv#4892
nova-video-player/aos-AVP#1503
https://www.reddit.com/r/jellyfin/comments/12jqoxh/dolby_vision_video_not_working_on_fire_stick_4k/
Testing
FireTV 4K (gen 1) + Vizio
FireTV 4K Max (gen 1) + LG
FireTV 4K Max (gen 2) + Vizio
FireTV (gen 1) + Olevia
Screenshots
AI or LLM usage
I used Claude Code to help guide me through the unfamiliar repo and to prototype solutions. The current code in the PR is my own.