这篇写什么?
双屏电视、不接 Soundbar,HDMI1 接 Apple TV:
| 异常 | 现象 |
|---|---|
| 异常 1 | Home 界面:右移有焦点音效,左移音效消失 |
| 异常 2 | 打开 Netflix 播片,拖动进度条后 无声 |
初步对比发现:能复现的版本与「刚合入 pop 音相关改动」的版本靠近;更老的基线不易复现。最终修复点很集中:在 config_output 里,对 HDMI-IN / ATV / LINEIN 等 patch 源,除了 need_do_avsync,再补上 adev->mute_start = true。
一句话:
切源 / seek / 焦点音效 → 要重建输出、做 AV sync
→ 只标 need_do_avsync、不 mute_start
→ 流未就绪就可能「该响不响」
→ 先 mute_start,等同步与流就绪再出声

相关:HDMI Pop 音两招、TV HDMI-IN Patch。
一、现象与版本线索
复现条件
- 双屏电视,不接 Soundbar
- HDMI1 接 Apple TV,停在 Home
- 左右移焦点听 UI 音效;进 Netflix 拖进度条
版本对比(工程经验)
| 观察 | 含义 |
|---|---|
| 较新版本易复现,较老基线不易 | 中间合入过影响输出时机的改动(如 pop 相关 fade / 通路优化) |
仅比对 .so MD5 可能「一样」 |
库文件相同不等于整机行为相同;仍要以 逻辑与实机 为准 |
| 问题落在 audio patch / 输出配置时机 | 不是 Netflix 本身「坏了音轨」 |
Pop 修复改变了 进出台、淡入淡出、写硬件节奏;若 AV sync 窗口里没有配合 启动静音,更容易出现「焦点音效单边丢、seek 后哑」这类时序问题。
二、根因:AV sync 窗口里过早出声 / 状态不齐
HDMI-IN(Apple TV)在焦点音效、拖进度条时,会频繁:
- 重建或重配输出(MS12 / patch)
- 做 AV 同步(avsync)
- 经历短时缓冲、格式与时间戳对齐
代码里本来就会:
adev->audio_patch->need_do_avsync = true;
表示「接下来要做音画同步」。若此时 没有 把设备置于「先别出声」的启动静音:
- 同步未完成、流未初始化完整
- 上层/焦点音效、seek 后的新时间点音频
- 可能落到 该响的时段被跳过或路由空窗 → 听感就是无声、或左右焦点表现不一致
所以根因表述为:audio patch 侧同步与输出启动时序不齐;不是单纯「音量被写成 0」。
三、修复:mute_start = true
在 config_output 中,当成功配输出且当前是外部 patch 源时:
if (ret == 0 && adev->audio_patch &&
(adev->patch_src == SRC_HDMIIN ||
adev->patch_src == SRC_ATV ||
adev->patch_src == SRC_LINEIN)) {
adev->audio_patch->need_do_avsync = true;
adev->mute_start = true;
ALOGI("set ms12, then do avsync!");
}

| 字段 | 作用 |
|---|---|
need_do_avsync = true |
标记需要做音画同步 |
mute_start = true |
强制先静音,等音频流与同步都就绪,再开始正常输出 |
效果:
- 避免「半就绪」状态把无效/空窗当成正式播放
- seek、焦点音效触发的重配,都先过同一扇「静音门」
- 同步完成后再出声 → Netflix 拖进度条、Home 焦点音效恢复正常
覆盖源:SRC_HDMIIN、SRC_ATV、SRC_LINEIN——凡走 TV patch、需要 avsync 的外输入,一并处理。
四、和 Pop 修复的关系(怎么理解「回归」)
| 改动 | 目标 | 可能副作用 |
|---|---|---|
| Pop:ease-in/out、进出台优化 | 少「啪」 | 改变 mute/写硬件时机 |
本修:mute_start |
同步完成前先哑 | 堵住 seek/焦点空窗无声 |
不是互相否定,而是 时序配套:
Pop 补丁让切换更「软」
→ 同步窗口变敏感
→ 需要 mute_start 明确「未就绪不出声」
排查类似回归时:先确认最近是否动过 fade / mute / patch 启停,再查 config_output 是否漏了启动静音。
五、验证清单
- Apple TV Home:左右移焦点,音效都在
- Netflix:多次拖进度条,seek 后有声
- 不接 Soundbar / 接 ARC 各测一轮(产品矩阵)
- log 可见
set ms12, then do avsync!,且随后能正常解静音出声 - 回归 pop:切口、开关 Tuner 是否仍可接受
六、小结
| 项目 | 内容 |
|---|---|
| 现象 | Apple TV 焦点音效异常;Netflix 拖进度条无声 |
| 根因 | patch 重配 / AV sync 未完成时输出时机不对 |
| 修复 | config_output 对 HDMIIN/ATV/LINEIN 设 mute_start = true |
| 口诀 | 要做 avsync,就先 mute_start;就绪再响。 |
相关阅读
评论
还没有评论,来做第一个吧
赞同、吐槽、提问都行,评论区开放