本文主要记录 Android Media3 路径上播放 Dolby Vision Profile 7(双层) 时的开播策略:为何能力声明不能当硬试开关、假成功黑屏为何不能自动猜切,以及用户三态(双层 / 单层 / 兼容层)与默认「单层」如何定。它是 Media3 实验路径能力边界的续写,不是 HDR 概念百科。

前置背景见 Octans-Android Media3实验路径能力边界:video 在 FORMAT_EXCEEDS_CAPABILITIES 时允许 hard-try;HTTPFILE DirectPlay 具备 base decoder fallback(常见为 HEVC 兼容层)。P7 把「声明 / 硬试 / 出画」三件事彻底拆开。

背景:四机同片不同命

对同一类 dvhe.07.xx P7 样本,多台真机 Media3 硬试大致呈现:

设备类型(脱敏)现象
部分平板 / 手机系统 DV decoder 可出音画
部分电视 SoC落到 HEVC 后可出画,或先选错 DV decoder 再失败
部分盒子亮 DV 灯、有声、黑屏;播放状态仍像「成功」,不进 error→base

能力声明侧:测试机 均未 稳定上报真·P7 常量 DolbyVisionProfileDvheDtb。若用错误的 DvheDtr(实际对应 P4 线字母串)当「支持 P7」开关,既映射错,也预测不了硬试是否出画。

工程判断(非厂商白皮书承诺):

  • 厂商完整双层(BL+EL)能力声明往往偏保守。
  • 许多设备仅靠 BL 硬试系统 DV 也能出画甚至点亮 DV 标识。
  • 声明「不支持 P7」≠ 不能 hard-try有 DV 组件 ≠ 硬试一定出画

运行时硬约束

开播:乐观硬试,不用错误 profile 常量驱动

  • 存在 video/dolby-vision decoder 时,允许在 exceeds-capabilities 放行下尝试系统 DV decoder。
  • 再以 DvheDtr / DvheDtb 作为 Auto 是否硬试的主开关。
  • v1 不做 无 TTL 的设备负向名单(固件升级后过时,维护成本高)。

假成功黑屏:不自动识别

曾规划「ready/playing 超时无有效帧 → 自动切 base」。真机验证表明:

  • first-frame / isPlaying / 进度 不能 可靠区分真出画与假成功
  • 通用无帧逻辑会 误伤 正常 DV 设备
  • decoder 名启发式属于单机补丁、因果未证

现行:不自动判定假成功。 假成功机型由用户改「兼容层」(或依赖下文「单层」默认)解决。系统 decoder error 路径的 base 重开 仍启用——与假成功不是一类问题。

与 exceeds-capabilities 的关系

既有「超出声明仍允许尝试」决策继续有效。P7 策略只补齐:三态职责、停止错误常量驱动、假成功不自动猜切。

用户三态与默认「单层」

Media3 控制台「双层杜比视界」收敛为 唯一一轴三态(仅当 dolbyVisionProfile == 7 时读取):

模式行为摘要
双层原样硬试系统 DV;decoder error → 兼容层 base
单层喂包前用 libdovi 一类路径把 P7 收成单层兼容意图,再硬试 DV;error → base
兼容层开播直接 base(HEVC 等);不硬试 DV

硬规则:

  • 仅双层杜比(典型 P7) 读该配置;P5 / P8 等单层 DV 按既有路径直通。
  • libmpv 本三态 UI(双内核能力表不能取并集)。
  • 不做 假成功自动识别;不做 无 TTL 设备黑名单。
  • 「尝试双层」也 关掉 error→base(否则用户可能彻底无退路)。

默认值:单层。 多机 live 对照上,单层在「假成功黑屏机」上可恢复画面且仍可能点亮 DV 路径,同时避免把默认直接打成纯 HEVC 兼容层。

推荐文案方向(产品 UI):

模式副标题意图
单层推荐;P7 收成单层后再硬解,兼容多数设备
双层原样双层硬解;部分设备可能黑屏或失败
兼容层直接兼容层,不尝试杜比视界解码

能力上报注意

  • 可删除或只读派生用户可改的「基础重试」开关,避免与三态重叠。
  • 协议字段 dolbyVision.baseDecoderFallbackRetry 保留,避免误伤服务端 DirectPlay 准入与其它客户端。
  • Android Media3 派生上报默认仍报具备 base 退路能力;不要因为用户选「双层」就把上报打成 false,导致服务端不再下放原始 DV HTTPFILE。

与 Kodi 对照时的一句边界

Kodi Android 走自研 VideoPlayer + FFmpeg demux + MediaCodec,并可链入 libdovi 做 RPU 处理。Octans Media3 路径则是 Exo 管线 + 可选 convert + 产品三态。两边都可能在 P7 上遇到「设备声明保守 / 双层难硬解」;对照用于建立心智模型,不表示能力矩阵可逐项对标宣传

验收清单(工程)

期望
声明无 Dtb 的好机单层 / 双层硬试仍可能出画
假成功机双层可黑屏;单层或兼容层可看
error 路径仍能 base 重开(非假成功)
P5 / P8不误读 P7 三态
升级 Media3不替代本策略文档

相关阅读

注意事项

  • 设备表、样片 ID、内网日志路径不应出现在公开文;结论用行为描述即可。
  • libdovi convert 属于工程手段,写入对外文时要标明适用 profile 与失败退路,避免写成「已完美支持所有双层碟」。