What should the engine do?
I bought a Samsung TV which doesn’t support Dolby Vision so I used this opportunity to experiment with how AVPlayer handles DV on that TV.
After some testing, I realised that DV 5 looks slightly better than DV 8.x so I investigated further.
DV 5:
AVPlayer uses player-led decoding (LLDV) and applies the metadata to the video frame pixels directly BEFORE sending them to the TV. This is confirmed by Dolby’s test video strobing effect indicating video is playing in Dolby Vision mode.
DV 8.1 & DV 8.4:
AVPlayer plays the HDR10 & HLG base layers without the metadata, no brightness strobing
My experimental workaround:
Tag the DV 8.1 fMP4 segments as dvh1 instead of hvc1
Change dvhe08.07 to dvhe05.07 in the dvcC box
Master routing with codecs=dvh1
Outcome:
DV 8.1 plays as DV instead of HDR10. Test video strobes indicating metadata is being decoded.
No regressions:
Tested on devices that have native DV support and they still work as expected.
Untested: AV1 but should be similar (av1 for SDR/HDR and dav1 for DV 10.0/10.1/10.4)
I know you also have a Samsung TV so might be worth experimenting with this and seeing if forced DV looks better than the HDR10 base layer on your panel.
Motivating media or use case
Could be a nice opt-in feature for Samsung TV users to be able to benefit from dynamic metadata. Default behaviour should remain unchanged at least for now.
Area
HDR / Dolby Vision
Host app / integration context
No response
Would you be willing to open a PR?
No
What should the engine do?
I bought a Samsung TV which doesn’t support Dolby Vision so I used this opportunity to experiment with how AVPlayer handles DV on that TV.
After some testing, I realised that DV 5 looks slightly better than DV 8.x so I investigated further.
DV 5:
AVPlayer uses player-led decoding (LLDV) and applies the metadata to the video frame pixels directly BEFORE sending them to the TV. This is confirmed by Dolby’s test video strobing effect indicating video is playing in Dolby Vision mode.
DV 8.1 & DV 8.4:
AVPlayer plays the HDR10 & HLG base layers without the metadata, no brightness strobing
My experimental workaround:
Tag the DV 8.1 fMP4 segments as dvh1 instead of hvc1
Change dvhe08.07 to dvhe05.07 in the dvcC box
Master routing with codecs=dvh1
Outcome:
DV 8.1 plays as DV instead of HDR10. Test video strobes indicating metadata is being decoded.
No regressions:
Tested on devices that have native DV support and they still work as expected.
Untested: AV1 but should be similar (av1 for SDR/HDR and dav1 for DV 10.0/10.1/10.4)
I know you also have a Samsung TV so might be worth experimenting with this and seeing if forced DV looks better than the HDR10 base layer on your panel.
Motivating media or use case
Could be a nice opt-in feature for Samsung TV users to be able to benefit from dynamic metadata. Default behaviour should remain unchanged at least for now.
Area
HDR / Dolby Vision
Host app / integration context
No response
Would you be willing to open a PR?
No