KunSpace
返回博客

HDMI 切无信号再切回:DRC 从 LINE 变 RF,声音大 8dB

2026年6月30日
尚无阅读

读完了?别空手走啊 😏

若有所获,赐一赞 — 作者会假装很忙实则刷新页面

写评论

赞同、吐槽、提问都行,评论区开放

这篇写什么?

一类「音量键没动,声音自己大了一点」的投诉:

  1. HDMI1 接 dongle 播视频,听感正常
  2. 切到 HDMI2(无信号)
  3. 再切回 HDMI1,同一片源 → 声音 明显更大一点

查 dump 会发现:不是音量 index 变了,而是 DRC 从 LINE 变成了 RF——按平台链路,这往往就是大约 8 dB 量级的差异。

一句话:

HDMI1 播放(LINE)
  → 切 HDMI2 无信号:MS12 状态没清干净
  → 切回 HDMI1:误进 RF
  → 听感变大 ≈ 8 dB
  → 修:无信号时正确关 MS12,PCM/Patch 路径重配 DRC

HDMI 切换把 DRC 从 LINE 带到 RF

电平为什么差 8 dB,详见 MS12 DRC:RF / LINE 模式详解


一、现象与复现

步骤 操作 观察
1 开机后进 HDMI1,dongle 播视频 dump:DRC = LINE,听感正常
2 切到 HDMI2(无设备 / No Signal)
3 再切回 HDMI1,同一片源 dump:DRC = RF,声音变大

容易误判的点:

检查项 本次结论
cat /sys/class/audiodsp/ac3_drc_control 前后都是 3看不出 LINE/RF 变化
mixer 相关 log mixer_main_buffer_write 字节、format 等可一致
系统音量键 没动

所以要盯 MS12 / HAL 侧 DRC 模式 dump,不能只看 ac3_drc_control 或 mixer 吞吐日志。


二、为什么变大?LINE → RF

结合 DRC 模式详解

模式 粗线条听感
LINE 平台少做 ±8 dB 补偿,相对「线路」习惯
RF 常按电视 RF 习惯做头余量与补偿,同一片源听感可差约 8 dB

本次复现路径是:

正确:保持 LINE
实际:无信号切换后,状态机把后续播放带到了 RF

用户感知就是「切一下口,声音大了一点」——音量条没变,是 DRC 策略变了


三、根因:无信号时 MS12 没清干净

HDMI 切换过程中,走到 无信号(如 HDMI2 空口)时:

  1. MS12 相关状态(含 dummy / DRC 参数)未正确关闭与清理
  2. 切回有信号的 HDMI1 时,模块按 不完整 / 默认 路径重新起来
  3. DRC 落到 RF,而不是恢复切换前的 LINE
  4. 同时,对 本地 PCM / Patch PCM 等非杜比流,原逻辑没充分走到「给立体声 / DAP multi PCM 配 DRC」的分支,ms12_main1_dolby_dummy 等状态也容易设歪

一句话:不是片源变响了,是切换时 MS12/DRC 状态机丢了「上一次该是 LINE」这件事。


四、修复思路(三刀)

1)补齐 is_local_pcm / is_patch_pcm 判断

对「本地 PCM」或「经 patch 进来的 PCM」明确识别,并在这些情况下正确调用例如:

set_ms12_drc_params_for_stereo_and_dap_multi_pcm_output(...)

保证 非杜比 PCM 进 MS12 相关路径时,DRC 参数仍被按预期初始化,而不是靠残留状态碰运气。

2)reset_decoder 时真正关掉 MS12 main

在重置解码 / 重配输出流时,增加:

dolby_ms12_main_close(...)

让无信号、切口时 主模块被关掉并清状态,避免 HDMI2 空口留下的配置污染 HDMI1 下一次播放。

3)恢复时看清 dolby_stream_active / dummy 状态

切回有信号端口时,明确判断:

  • 杜比流是否仍 active
  • ms12_main1_dolby_dummy 处于什么状态

再决定如何恢复 DRC,避免「空口转一圈 → 默认 RF」。


五、验证与排查清单

复现固定三步:HDMI1 有片 → HDMI2 无信号 → 回 HDMI1 同片

  • 切换前 dump:DRC 是否为 LINE
  • 切换后 dump:是否被带成 RF(听感是否大约大 8 dB)
  • 勿只看 ac3_drc_control / mixer 吞吐——本次它们可以不变
  • 修后:无信号路径是否走到 MS12 main close
  • 修后:PCM / Patch PCM 是否重新 set DRC params
  • 多次来回切口,确认不再从 LINE「漂移」到 RF

六、小结

项目 内容
现象 HDMI1→无信号→回 HDMI1,同片源变响
直接原因 DRC LINE → RF(约 +8 dB 听感)
根因 无信号时 MS12 未正确清理,切回后状态/默认路径错误
修复 PCM/Patch 条件补齐 + dolby_ms12_main_close + 恢复时状态判断

口诀:切空口也要给 MS12 办离职;回来时把 DRC 身份证核验成 LINE,别默认发一张 RF。


相关阅读

评论

还没有评论,来做第一个吧

赞同、吐槽、提问都行,评论区开放