这篇写什么?
TV / STB 开 MS12 做杜比解码 / 转码时,DRC(Dynamic Range Control) 决定「动态范围怎么压」和「对白响度对齐到哪」。常见选型:
- RF:偏电视 / 广播链路,往往在 LINE 归一后再 +8 dBr(或地区相关的 +11 dBr)
- LINE(含 off 常按 LINE 处理):对白归一到约 -31 dBFS,平台少做出口补偿
- Auto(公版 UI 默认):按产品策略在模式间自动选
同一条 -23 dBFS 标准片,走 None(PCM 出) 还是 Auto(Dolby 出),进 MS12 前后电平会完全不一样;而且 Android 11 / 12 / 14 对 PCM 源的处理并不相同。本文把概念、UI、地区标准、版本差异和四条路径写清楚。
测试前提
- 认证 / 对比响度请用 杜比 SDK 指定的标准测试信号(见文末答疑)
- 系统音量开到最大,避免被系统音量曲线再削一层
一句话:
Settings → Dolby DRC Mode
→ LINE:对白往 -31;RF:再抬到约 -23(DVB)或 -20
→ 看 Android 版本:PCM 进库前是否 -8、MS12 参数是否被强制 LINE
→ 再看 None / Auto:PCM 出谁补 +8,Dolby 出谁交给后级 TV


〇、UI 在哪、怎么查当前模式
设置路径:
Settings → Device Preferences → Display & Sound → Sound → Dolby DRC Mode
公版默认常见为 Auto。改 UI 后,Android 12+ 往往经 OutputModeManager.setDoblyMode(...)(如 LINE_DRCMODE)去写节点。
节点与 Settings:
# 读当前 DRC 控制节点
cat /sys/class/audiodsp/ac3_drc_control
# 读 global
settings get global drc_mode
节点取值(平台约定,以你们分支为准):
| 节点值 | 含义 |
|---|---|
| 2 | off(实现上常按 LINE) |
| 3 | RF |
| 6554402 | LINE |
手动打开 RF(调试用):
echo drcmode 3 > /sys/class/audiodsp/ac3_drc_control
echo drchighcutscale 0 > /sys/class/audiodsp/ac3_drc_control
echo drclowboostscale 0 > /sys/class/audiodsp/ac3_drc_control
手动打开 LINE / 关闭类行为(调试用):
echo drchighcutscale 0 > /sys/class/audiodsp/ac3_drc_control
echo drclowboostscale 0 > /sys/class/audiodsp/ac3_drc_control
echo drcmode 2 > /sys/class/audiodsp/ac3_drc_control
settings put global drc_mode 0
HAL 侧通过读节点决定当前模式;Android 12+ 在 dynamic_get_dolby_ms12_drc_parameters 一类接口里还有额外规则:若当前输入是 PCM,传给 MS12 的 DRC 参数常被强制为 LINE;若是 MS12 可编解码的 Dolby 格式,才用 UI 选中的 RF / LINE。
一、DRC 在干什么?(压缩 + 对白归一)
1.1 动态范围压缩(直觉)
DRC 把「最大声」和「最小声」的差距压到可控范围,避免爆炸突然过大、对白突然过小。示意(阈值举例 -20 dBFS,高于阈值的被压):
原始: 对话 -31 dB 爆炸 0 dB
↓ Apply RF DRC(压爆炸)
对话 -31 dB 爆炸 -11 dB
↓ Add Gain(如 +11 dB)整体抬响度
对话 -20 dB 爆炸 0 dB
1.2 对白响度归一(Line / RF 的电平锚点)
杜比节目里带有 实时对白响度元数据。在 LINE(line mode on/off 一类)下,解码后会把对白校准到标准 -31 dBFS。
例如对白元数据为 -24 dBFS,则解码后会再施约 -7 dBr,落到 -31 dBFS。好处是不同节目、不同制作方,对白听感更一致。
切到 RF 时,会在 LINE 归一结果上再加增益,常见:
| 场景 | 额外增益 | 对白目标(量级) |
|---|---|---|
| DVB 等 | +8 dBr | 约 -23 dBFS |
| 其它部分标准 | +11 dBr | 约 -20 dBFS |
所以:LINE ≈ 锚在 -31;RF ≈ 再抬到地区要求的听感目标。
1.3 MPEG1L2 / 外部解码进 MS12
MS12 不含 MPEG1 Layer II 解码器,一般由 SoC 外部解码后再进 MS12 做 DAP 等处理。杜比侧要求:
无论 MS12 的 DRC 设为 LINE 还是 RF,外部解码后的 MPEG1L2(以及同类送入)应对白平均响度先到 -31 dBFS,再进 MS12。
用 SDK 标准 MPEG1L2 片(尤其 DTV RF INPUT)时,解码输出对白平均响度一般在 -23 dBFS,因此常见做法是 先衰减 8 dBr → -31,再进 MS12:
- MS12 RF:内部杜比解码或外部 PCM/MPEG/AAC 等,从 -31 再 +8 → -23 输出(PCM 出路径)
- MS12 LINE:不加增益,保持 -31 输出
AML 对 PCM 片源的 -8 dB:并不等于「标准写死必须减 8」。目的往往是让 -23 标准 PCM 片进 MS12 前也落到 -31,和杜比路径对齐,方便 loudness 联调。减多少取决于片源与地区目标,不是任意猜数。
1.4 地区响度标准 → mixgain
不同地区目标响度不同,Audio HAL 里常见按 TV 标准选衰减 / 抬升量,例如:
int get_ms12_syss_mixgain_target(void)
{
int target = 0;
switch (active_tv_standards) {
case DVB:
target = DRC_RF_MODE_ADD_LEVEL + DVB_LEVEL;
break;
case ATSC:
target = DRC_RF_MODE_ADD_LEVEL + ATSC_LEVEL;
break;
case DTMB:
target = DRC_RF_MODE_ADD_LEVEL + DTMB_LEVEL;
break;
case ISDB:
case SBTVD:
default:
target = DRC_RF_MODE_ADD_LEVEL;
break;
}
return target;
}
排「功放表头数值不对 / HDMI 接功放电平怪」时(如 SEI700SKY-98 一类),除了 RF/LINE,也要确认 当前 TV 标准枚举 有没有走错分支。
1.5 PCM 出 vs Dolby 出(MS12 能力边界)
| 输出 | 说明 |
|---|---|
| PCM | 可从 DAP 后处理出(喇叭,DAP 最高可到如 5.1.2),或从 PCM RENDERER 出经 DRC 的 5.1 / downmix 2ch(可不经 DAP);给喇叭、SPDIF、HDMI PCM |
| Dolby 再编码 | DD+ / DD / Dolby MAT 等,需要下游支持杜比解码;流内常带 DRC metadata,后级 TV 可再执行 |
文中 None ≈ PCM 出,Auto ≈ Dolby 出(测试叫法)。
二、Android 11:RF / LINE 四条路径(经典 ±8)
下面两节对应公版早期、也是原文主体:Android 11 上用 -23 dBFS Dolby / MPEG(PCM)标准片测得的链路。
2.1 DRC = RF(A11)

- PCM 源进 MS12 前:平台 -8 dB → 进库约 -31 dBFS
- Dolby 源:MS12 库内官方 -8 dB → 约 -31
- PCM 出口:统一 +8 → 回到 -23
- Dolby 出口:+0,约 -31
- 后级 TV:对 MS12 出的 Dolby 再按 DRC / 元数据增益(常见再 +8)
| 输入 | 输出 | 进 MS12 附近 | MS12 出口 | 到后级 | 后级 TV |
|---|---|---|---|---|---|
| PCM | None→PCM | 进库前 -8 | +8 | -23 | PCM 通路 |
| PCM | Auto→Dolby | 进库前 -8 | +0 | -31 | 常再 +8 |
| Dolby | None→PCM | 库内 -8 | +8 | -23 | PCM 通路 |
| Dolby | Auto→Dolby | 库内 -8 | +0 | -31 | 常再 +8 |
口诀:A11 RF = 先掉 8,PCM 出补回 8;Dolby 出不补,交给 TV。
2.2 DRC = LINE(A11)

- PCM 源:平台 不预衰减,进库仍 -23
- Dolby 源:库内仍 -8 → -31
- 出口一律 +0(PCM 出 / Dolby 出都一样)
- Dolby 再编码:流内带 DRC 曲线;LINE 下后级通常 不再做平台式 +8
- 纯 PCM 出:没有 DRC metadata;后级要按码流 DRC 处理,必须自己解杜比并读 metadata
| 输入 | 输出 | 进 MS12 | 出口 | 到后级 |
|---|---|---|---|---|
| PCM | None→PCM | -23 | +0 | -23 |
| PCM | Auto→Dolby | -23 | +0 | 编码路径看流内 DRC |
| Dolby | None→PCM | -31 | +0 | -31 |
| Dolby | Auto→Dolby | -31 | +0 | -31,靠流内 DRC |
同一音量键下,LINE 里 Dolby 源常比 PCM 源轻约 8 dB——是路径设计结果。
口诀:A11 LINE = PCM 原样进;Dolby 仍 -8;出口不补。
三、Android 12:PCM 路径改了什么?
相对 A11,杜比源路径大体不变;变化集中在 PCM 源 + 传给 MS12 的 DRC 参数:
| UI 模式 | MS12 输出 | PCM 源进库前 | 传给 MS12 的 DRC 参数 | 结果(相对 -23 片) |
|---|---|---|---|---|
| RF | PCM | 不衰减 | 强制 LINE | 进库后也不再按 RF 抬;整体不再走 A11 那套 PCM ±8 |
| RF | Dolby | 仍 -8 | 仍用 RF | MS12 对 Dolby 出 不加增益;TV 读流内 DRC 再 +8 |
| LINE | PCM | 不衰减 | LINE | MS12 / TV 都不加增益 |
| LINE | Dolby | 仍 -8 | LINE | MS12 / TV 都不加增益 |
要点:A12 在 RF + PCM 出 时,用「不预衰减 + 强制 LINE 参数」避免对 PCM 再做 RF 那套抬升,听感/电平策略和 A11 不同。排问题务必先确认 Android 大版本。
四、Android 14:在 A12 上再差一刀
主体与 Android 12 一致,AML 公版类逻辑里常见差异是:
| UI 模式 | MS12 输出 | A12(PCM 源) | A14 AML(PCM 源) |
|---|---|---|---|
| RF | PCM | 不 -8;参数强制 LINE | 同左 |
| RF | Dolby | 进库前 -8 | 同左 |
| LINE | PCM | 不 -8 | 同左 |
| LINE | Dolby | 进库前 -8 | 不 -8 |
SEI 公版(非 AML)补充: LINE 模式下,PCM 进 MS12 前仍 衰减 8 dB,目的是与 Dolby 片源响度对齐。同一 Android 14,产品分支不同,LINE + Dolby 出时 PCM 是否 -8 可能相反——工单里务必写清是 AML 还是 SEI 公版改动。
五、三版本对照(排音量时先看这张)
| 场景(PCM 源) | A11 | A12 | A14 AML | A14 SEI 公版(LINE) |
|---|---|---|---|---|
| RF + PCM 出,进库前 -8? | 是 | 否(参数改 LINE) | 否 | (同 A12 主体) |
| RF + Dolby 出,进库前 -8? | 是 | 是 | 是 | 是 |
| LINE + PCM 出,进库前 -8? | 否 | 否 | 否 | 是(对齐 Dolby) |
| LINE + Dolby 出,进库前 -8? | 否 | 是 | 否 | (按 SEI LINE 策略) |
| Dolby 源进库 | 库内 -8 | 同左 | 同左 | 同左 |
排查「同一片源 None / Auto 响度差一截」:
- 确认 Dolby DRC Mode(UI / 节点 /
drc_mode) - 确认输出是 PCM 还是 Dolby(None / Auto)
- 确认 Android 大版本 + 是否 SEI 改动
- 用杜比 SDK 标准片 + 最大系统音量 复测
- 差是否整 8 dB(或地区相关的 11 dB)——对上表里的预衰减 / 补回 / TV 元数据
相关:系统音量见 Android 音量设置流程;切口后 DRC 从 LINE 变 RF 见 HDMI 切无信号再切回。
六、杜比侧常见问答(摘要)
Q1:DRC 对片源有要求吗?一定要标准片吗?
认证只测杜比提供 / 指定的测试信号。有疑问用 SDK 标准信号复现后再问杜比,不要拿非指定片源扯认证结论。
Q2:MPEG1LII「标多少出多少」——先衰到 -31 后,RF/LINE 是否都直接出 -31?
外部解码标准 MPEG1LII 对白平均宜在 -23;进 MS12 前 -8 → -31。之后:
- RF:从 -31 +8 → -23 输出(适用内部杜比与外部送入的 MPEG/AAC 等)
- LINE:保持 -31,不再加增益
Q3:Dolby 出和 PCM 出有何不同?
PCM:喇叭 / SPDIF / HDMI PCM,可走 DAP 或 PCM RENDERER。
Dolby 再编码:需下游解杜比;可携带 DRC metadata,后级 TV 再执行。
七、小结
- 概念:DRC = 压动态范围 + 对白归一;LINE ≈ -31,RF ≈ 再抬到 -23/-20(看地区)。
- 外部 PCM/MPEG 进 MS12:目标先进到 -31;A11 上常见平台 -8;A12+ 对「RF + PCM 出」改为不 -8 并强制 LINE 参数。
- A11:RF 经典「先 -8,PCM 出 +8,Dolby 出交给 TV」;LINE 则 PCM 原样、Dolby 仍 -8、出口不补。
- A12 / A14:以 PCM 路径差异为主;A14 AML 在 LINE + Dolby 出 上对 PCM 不再 -8,SEI 公版 LINE 仍可能 -8 对齐杜比。
- 排障先钉死:UI 模式、节点值、输出格式、Android 版本、TV 标准(mixgain)、是否标准片。
记住一句话:谁在 -8、谁在 +8、谁把 +8 交给 TV、当前是 A11 还是 A12/A14——MS12 的 DRC 音量问题就好拆了。
相关阅读
评论
还没有评论,来做第一个吧
赞同、吐槽、提问都行,评论区开放