Skip to content

Dolby Vision Profile 7 is sent to a Profile 5 decoder on DV displays without a Profile 7 decoder #3486

Open

Description

@VaneSkubic

Version

Media3 main branch (other)

More version details

main at 8c6678b ("Bump version to 1.11.1"). Also seen in Media3 1.10.1 and 1.11.1 as bundled by Stremio (1.10.1-stremio01, 1.11.1-stremio01).

Devices that reproduce the issue

TCL 43BP615 (Google TV, Android 12 / API 31, Realtek, device G10). The display supports Dolby Vision (HDR types 1, 2, 3). Its Dolby Vision decoders are OMX.realtek.video.dvhe.stn.decoder, OMX.realtek.video.dvhe.dtr.decoder, OMX.realtek.video.dvhe.st.decoder, OMX.realtek.video.dvav.se.decoder and OMX.realtek.video.dav1.10.decoder; none supports profile 7.

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Yes

Reproduction steps

Play an MKV with a Dolby Vision Profile 7 video track (UHD Blu-ray remux: dvhe.07.06, dv_bl_signal_compatibility_id=6, enhancement layer present) in the demo app.

Expected result

Playback of the HDR10-compatible base layer with an HEVC decoder, as Media3 already does for profile 8 when no Dolby Vision decoder supports it.

Actual result

No decoder supports dvhe.07.06, MediaCodecUtil.getAlternativeCodecMimeType returns null for DolbyVisionProfileDvheDtb, and Media3 picks the first Dolby Vision decoder anyway, the Profile 5 one:

D/MediaCodec: create +OMX.realtek.video.dvhe.stn.decoder
W/MediaCodecRenderer: Format exceeds selected codec's capabilities [id=1, mimeType=video/dolby-vision, container=video/x-matroska, codecs=dvhe.07.06, res=3840x2160, color=BT2020/Limited range/ST2084 PQ/10 ...]
I/DVO: +++ ... Dolby = 1 DolbyProfile = 83886080

The display then treats the HDR10 base layer as Profile 5 (with another remux it went to SDR instead: Dolby = 0, hdr=SDR), and the picture is grey and washed out. Every UHD Blu-ray remux with Dolby Vision is affected on this TV.

With #3160 applied to main (it applies cleanly with a three-way merge), the same file plays through the HEVC decoder in HDR10 with correct colours:

D/MediaCodec: create +OMX.realtek.video.decoder
I/OMX_VDEC: frame-info: 3840x2160/23976, hdr=1
D/DisplayManager: notify hdr type: ... type=1

This is broader than #3119 (closed without a bug report): it affects Dolby Vision displays too, wherever no decoder supports profile 7, which is most Android TV devices. If a general fallback is a concern, the base-layer compatibility id in the dvcC/dvvC record (6 for UHD Blu-ray) could limit it to streams whose base layer is HDR10.

Media

Commercial UHD Blu-ray content, which I can't share. Any UHD Blu-ray remux with Dolby Vision reproduces it; I tested a 30-second video-only cut (dvhe.07.06, full enhancement layer).

Bug Report

I can send an adb bugreport on request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions