Skip to content

[Bug]: WebDAV Dolby Vision handoffs are classified as SDR and reset the display #13

Description

@thatcube

Summary

Same-mode Dolby Vision episode handoffs work through Plex but not through WebDAV/media shares. The Aether display-preservation API works when Plozz supplies the correct mode; WebDAV playback requests currently classify the playing and prefetched Dolby Vision files as SDR, so Plozz deliberately performs a full display reset between episodes.

Steps to reproduce

  1. Add a WebDAV media share containing consecutive Dolby Vision episodes.
  2. Play one episode through Plozzigen.
  3. Let playback advance to the prefetched next episode.
  4. Observe the TV perform a Dolby Vision display-mode switch between episodes.

Expected behavior

When both prefetched WebDAV episodes are Plozzigen Dolby Vision sources with the same frame rate/range, Plozz should preserve the current display mode just as it does for Plex.

Actual behavior

The next episode is prefetched successfully and both files are detected by AetherEngine as Dolby Vision, but PlayerViewModel.contentDisplayMode and the prefetched request's HDRDisplayMode are both .sdr. shouldPreserveDisplayMode therefore returns false, stop(preserveDisplayMode: false) resets preferredDisplayCriteria, and the incoming engine switches the panel back to Dolby Vision.

Affected backend(s)

SMB share

Plozz version & build

2026.7.16 (build 1962), AetherEngine a9e1dac

tvOS version

N/A

Apple TV model

Apple TV 4K (3rd generation)

Logs / screenshots

Sanitized live trace:

prefetch READY ... engine=plozzigen
[DisplayCriteria] SET: format=dolbyVision codec=dvh1 rate=23.976
handoff advance ... prefetch=HIT engine=plozzigen
handoff display cur=sdr next=sdr bothPlozzigen=true preserve=false
stop preserveDisplayMode=false contentMode=sdr
[DisplayCriteria] RESET
[DisplayCriteria] SET: format=dolbyVision codec=dvh1 rate=23.976

Control case from Plex on the same reviewed build:

handoff display cur=dolbyVision next=dolbyVision bothPlozzigen=true preserve=true
stop preserveDisplayMode=true contentMode=dolbyVision
[DisplayCriteria] SET: format=dolbyVision ...
[DisplayCriteria] no switch started ...

Likely scope: media-share PlaybackRequest.sourceMetadata is absent/incomplete even though the filename parser and engine probe identify Dolby Vision. Keep this separate from the Aether upstream patches—the engine API behaved correctly when called with preserveDisplayMode: true.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions