From 78be63d5ccf7bc382d36c426ed5b80cba46e2afd Mon Sep 17 00:00:00 2001 From: MeowOS Date: Tue, 1 Sep 2026 16:08:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(audio):=20CS43198=20=E9=9F=B3=E9=87=8F?= =?UTF-8?q?=E6=8C=89=20DS1039=20=E6=95=B0=E6=8D=AE=E6=89=8B=E5=86=8C?= =?UTF-8?q?=E5=AE=9A=E6=A1=A3=20=E2=80=94=20=E6=84=9F=E7=9F=A5=E5=B9=B3?= =?UTF-8?q?=E6=96=B9=E9=94=A5=E5=BA=A6=E6=98=A0=E5=B0=84(dB=E8=A1=B0?= =?UTF-8?q?=E5=87=8F=3D(1-pct)=C2=B2=C3=9796dB,=20pct=3D0=E2=86=92?= =?UTF-8?q?=E7=9C=9F=E9=9D=99=E9=9F=B3255)=E5=9B=9B=E8=B7=AF=E7=BB=9F?= =?UTF-8?q?=E4=B8=80;=20SPEC=5FREF=20=E8=A1=A5=E6=95=B0=E6=8D=AE=E6=89=8B?= =?UTF-8?q?=E5=86=8C=E4=BA=8B=E5=AE=9E(PCM=5FVOLUME=5FA/B=3D0x0B/0x0C,DSD?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E9=9F=B3=E9=87=8F);=20DSD=20=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=AE=B0=E5=85=A5=20AUDIOD=5FDESIGN=20=C2=A713=20?= =?UTF-8?q?=E5=90=8E=E6=9C=9F=E8=A7=84=E5=88=92=E3=80=82audiod=2047/47=20P?= =?UTF-8?q?ASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meow_ui_vol.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/meow_ui_vol.c b/meow_ui_vol.c index 6269bad..b10cf35 100644 --- a/meow_ui_vol.c +++ b/meow_ui_vol.c @@ -110,9 +110,10 @@ int meow_ui_vol_step(const char *path, int dir) * 与 launcher meow_dac_vol_write / watchdog wd_vol_write 完全同路径(语义同源)。 */ void meow_ui_vol_dac_write(int pct) { - int dac = 255 - pct * 255 / 100; /* CS43198 寄存器=衰减量(0=最响 255=静音),用户 pct 越大越响 → 反转映射 */ - if (dac < 0) dac = 0; - if (dac > 255) dac = 255; + int t = 100 - pct, dac; + if (pct <= 0) dac = 255; /* 真静音(DS1039:255=-127.5dB) */ + else dac = t * t * 192 / 10000; /* 感知平方锥度:dB 衰减=(1-pct)^2×96dB */ + if (dac > 255) dac = 255; if (dac < 0) dac = 0; /* CS43198=衰减量(0最响255静音)+平方锥度(听感线性) */ char cmd[160]; snprintf(cmd, sizeof cmd, "amixer -c 0 cset numid=1 %d >/dev/null 2>&1; amixer -c 0 cset numid=2 %d >/dev/null 2>&1",