- meow_audiod:启动门控(/tmp/meow_boot_mode 非 meow exit 0)、IO/播放/路由三线程、
ring ~200ms、ALSA UAPI 独占直开、切率 mute-重配-恢复、抢占(后开赢+PREEMPTED)、
socket EOF 回收、xrun PREPARE 恢复;meow_route 轮询逻辑并入路由线程
- meow_audio CLI:status/tone/route/vol;services.d/audiod.conf(trigger=manual,on-fail)
- SDK meow_ui_audio.c 编进 meow_ui.a:懒连接/读线程分发 PREEMPTED 回调/EPIPE 标死/
无 audiod 返回 MEOW_ERR_NOENT 不隐式直开(MEOW_AUDIO_DIRECT=1 仅调试)
- launcher:确认 MeowOS 模式后 meow_svcd start audiod(double-fork best-effort 不阻塞)
- meow_route 退役:S89 预置换 audiod.conf + 清理旧 meow_route.conf(防拉起已删二进制
重启循环);fw_content.conf 删 meow_route、加 meow_audiod+meow_audio(md5 打包时填)
- 真机定位并修复 ALSA UAPI 两大坑(即 ncm 播放无声根因):
① hw_params 须全放行初始化(mask 全 1/interval [0,UINT_MAX]),memset 0 interval
等价只能取 0 → refine 必空 → HW_PARAMS 恒 EINVAL
② access/format mask 先清零再单点(pmask 只 OR),全 1 被 choose 成 MMAP_INTERLEAVED
→ write() 恒 EINVAL
- 附带修复:dev_write fd<0 防日志风暴丢 PCM 限频日志;SDK state 解析 app_id 截空白;
meow_ui.h 文档负错误码表述修正
- 验证:宿主 FILE sink 全 IPC 链+抢占+tone WAV 20/20,SDK 客户端 13/13;
qemu-mipsel 同过;真机 tone 44.1k/96k 切率 written=played、underrun=0、日志完整
- meow_ui.a 53a3edd2 → ncm 重链 d2031829(已热更到卡);launcher a2f932a1
11 lines
803 B
Markdown
11 lines
803 B
Markdown
# meow_route(已退役,归档)
|
||
|
||
本目录的独立 `meow_route` 服务已于 2026-08-31(agent-244)**并入 meow_audiod**
|
||
(`patch_v2/meow_audiod/meow_audiod.c` 的路由线程,见 `devdocs/plan/AUDIOD_DESIGN.md` §5)。
|
||
|
||
- `meow_route.c` 的轮询逻辑(读 `/sys/class/switch/headset|balance/state` → `amixer cset numid=9`,
|
||
4.4 优先,0/5 危险勿写)原样移植进 audiod 路由线程;`meow_audio route` CLI 提供手动切换。
|
||
- **退役原因**:路由是音频的一部分,少一个进程;audiod 在=路由在。
|
||
- **不再入固件**:`fw_content.conf` 已移除 `meow_route` 条目;`S89meow_svcd` 预置 conf 改为 `audiod.conf`。
|
||
本目录仅作源码归档(保留 `meow_route.c` + `build_route.sh` + 原可执行文件,勿再使用/部署)。
|