AVPlayer does not switch up from SDR to HDR (Dolby Vision) variants during HLS ABR playback

Hello,

I am developing a custom player SDK based on AVPlayer that supports HLS and LL-HLS playback on iOS. I have a question about AVPlayer's variant selection behavior with respect to the VIDEO-RANGE attribute.

Setup

Our multivariant playlist contains a ladder where the dynamic range differs per rung. Simplified example:

#EXT-X-STREAM-INF:BANDWIDTH=1200000,RESOLUTION=854x480,CODECS="hvc1.2.4.L93.B0",VIDEO-RANGE=SDR,FRAME-RATE=30.000
sdr_480p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3500000,RESOLUTION=1280x720,CODECS="dvh1.05.03",VIDEO-RANGE=PQ,FRAME-RATE=30.000
hdr_720p.m3u8

The lower rung(s) are SDR only, and HDR (Dolby Vision, VIDEO-RANGE=PQ) variants exist only at the higher rungs. There is no PQ variant at the low end and no SDR variant at the high end.

Observed behavior

On HDR-capable devices (AVPlayer.eligibleForHDRPlayback == true), playback starts on the SDR 480p variant and then never switches up to the HDR 720p variant, even when network throughput is clearly sufficient (verified via AVPlayerItemAccessLog.observedBitrate and variant switch events). ABR up-switching works as expected when all rungs share the same VIDEO-RANGE.

Questions

  1. Is it expected behavior that AVPlayer confines ABR switching to variants of a single VIDEO-RANGE for the duration of an AVPlayerItem, i.e., it will not cross SDR <-> PQ/HLG boundaries at runtime?
  2. If so, is the VIDEO-RANGE group selected once at playback start based on display capability and the initially chosen variant, with all other ranges excluded from the eligible set?
  3. The HLS Authoring Specification for Apple devices requires parallel SDR ladders for backward compatibility (sections 1.24 / 6.16), which implies each VIDEO-RANGE should form a complete, self-contained ladder. Is a mixed-range ladder like the one above considered a non-conformant authoring pattern, and is completing the PQ ladder down to the lowest rungs the correct fix?
  4. Are there any public APIs that influence video-range selection for streaming playback (beyond eligibleForHDRPlayback, which is read-only)?

I understand the ABR switching logic itself is not documented, but confirmation of the VIDEO-RANGE grouping behavior would help us author our ladders correctly.

Thank you.

@CuteMaris , thanks for reporting the issue. We will need to have some more information to diagnose it. Can you please file a feedback report with sysdiagnose and if possible, please provide a test stream or a test app that can reproduce the issue.

AVPlayer does not switch up from SDR to HDR (Dolby Vision) variants during HLS ABR playback
 
 
Q