test(audiod): r1 P2-1/P2-2 — 补 rapid-toggle 回归用例 + BT 音量语义文档(实现零改动)
评审 r1 的 `p2-2items`,两项都是「缺用例 / 缺一句文档」,不改任何已交付行为。 P2-1(连续拖滑块/ramp 中途反向缺回归): - test_vol_gain 新增 G4b:块长 100(< 512 斜坡)× 60 次 100↔10 反向,实测 59 次落在 斜坡中段;断言增益全程 ∈ [q15(10)=4, 32768] 且从不放大、块内逐样本只朝目标单调走、 相邻样本跳变 ≤64 LSB(硬跳变 ~16380)、停手后 cur=4/left=0/bump_left=0。 - test_audiod_host 新增 T20(daemon 侧等价集成用例):经 IPC 连发 60 次 vol, 每次只喂 100 帧(400B),断言 60 次全 ACK、underrun/dropped=0、 落盘 PCM 无硬跳变(max_delta 1020 = 正弦自身斜率)、尾部 RMS 1.49 比头部 6376.58 低 72dB(10% 真的生效)。 P2-2(文档):vol_gain.h 顶部新增「App/SDK 侧契约」段:BT 下 set_volume 同样生效 (走软件增益 + 持久化),AVRCP 钉 127 只为耳机功放满量程而非「音量交给耳机」, pct 只在 [0,100] 有意义(<=0 真静音、>100 按满量程截断),16bit 写路径的 量化下限说明;vol_gain_dac_att_reg 注释补 pct>100 行为。build_audiod.sh 头部补 M55 说明(必须一起编 vol_gain.c、旧 SDK 说法已过期)。 验证:test_audiod_host 134/134 PASS、test_vol_gain 36/36 PASS、test_bt_dev PASS; mipsel 交叉编译 0 warning,产物 md5 6cef4c54a1cb8e0c55f4ad5b6c4a323e(与 r1 完全一致, 证明二进制未变)。
This commit is contained in:
1 parent
e37c622597
commit
2c0ec2ba15
4 files changed
+151
-3
No files matched your search
@@ -13,6 +13,17 @@
|
||||
*
|
||||
* 全整数:增益表开机算一次(Q31 定点迭代乘法,不引 libm/软浮点),逐样本一次 32 位乘 +
|
||||
* 移位 + 饱和;100% 走「单位增益直接返回」快路(逐字节不变、零开销),0% 走 memset。
|
||||
*
|
||||
* ---- App / SDK 侧契约(M55 定案;MEOW_APP_SDK.md 里「BT 输出目标时音量由 AVRCP 侧控」已过期)----
|
||||
* - `meow_audio_set_volume(pct)` 在**两种输出目标下都生效**:DAC 目标写 CS43198 音量寄存器
|
||||
* (numid=1/2 + DSD_VOLUME 双组),BT 目标写本模块的软件增益(写进 A2DP 的 PCM 样本)。
|
||||
* 同一 pct 在两条路上是**同一条听感曲线**(vol_gain_dac_att_reg),不是「线性 vs 非线性」两套。
|
||||
* - BT 下 AVRCP 被钉在 127(耳机功放满量程)——那是为了让耳机的模拟级不二次衰减,
|
||||
* **不是**「音量交给耳机控」:用户的 vol 值由 audiod 的数字增益执行,`vol=0` 是真正的全 0 静音。
|
||||
* - `pct` 只在 `[0,100]` 有意义:`<=0` 一律真静音,`>100` 一律按 100(满量程)处理。
|
||||
* (`settings.conf` 里被手改成如 `audio.volume = 150` 时表现为满量程,不会超过 100% 的合法响度。)
|
||||
* - 16bit 写路径的固有下限:约 <=-78dB 的档位(pct<=10)只剩 1 LSB 量级,听感上是静音;
|
||||
* 实用区间约 60..100%(与 DAC 相同,因为曲线同源)。
|
||||
*/
|
||||
#ifndef MEOW_VOL_GAIN_H
|
||||
#define MEOW_VOL_GAIN_H
|
||||
@@ -26,7 +37,9 @@
|
||||
/* 开机调用一次(幂等):生成 256 项增益表。之后查表全只读、无锁。 */
|
||||
void vol_gain_init(void);
|
||||
|
||||
/* pct(0..100) → DAC 衰减寄存器 0..255。**dac_vol_set() 也调它**,保证两条路同一条锥度。 */
|
||||
/* pct(0..100) → DAC 衰减寄存器 0..255。**dac_vol_set() 也调它**,保证两条路同一条锥度。
|
||||
* pct<=0 → 255(真静音);pct>=100 → 0(0dB 满量程,**包括 pct>100**:越界按满量程截断,
|
||||
* 不会给出 >100% 的响度)。 */
|
||||
int vol_gain_dac_att_reg(int pct);
|
||||
|
||||
/* pct → 线性增益 Q15(32768=单位增益,0=真静音)。pct 越界自动 clamp。 */
|
||||
|
||||
Reference in new issue
Block a user