本文主要记录 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-visiondecoder 时,允许在 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 与失败退路,避免写成「已完美支持所有双层碟」。