共 21 篇文章
从 adev_create_audio_patch 到双线程 + 环形缓冲:讲清 HDMI-IN 建 patch、MS12 退出连续模式、 输入读 ALSA / 输出 out_write_new,以及 usecase 与 mixer 主辅缓冲如何切换。
从 ALSA loopback 采集多通道 Mic 原始声与播放参考信号(Ref),讲清数据来源、采集参数、通道布局、tinycap 抓取与拆分 / downmixer / 算法处理整条链路。
Google 远场占住 Built-In Mic 后,自研数字人/语音助手录不了音。通过新增 FM Tuner 输入设备、 放宽 mic mixPort 双开,并改 AudioPolicy 路由,实现两路同时取麦、各自唤醒。
做语音唤醒前,用标准测试音经喇叭播放、tinycap 录 Mic,再算 THD/% 与 dB。讲清环境、命令、拉数与 Sengpielaudio 换算表,以及和唤醒链路的关系。
自播自录 1_15kHz 查抗混叠:折痕判据、异常频谱长什么样、驱动加载顺序 pdm→loopback→resample,以及 loopbacka / loopbackb 与 16k/48k、resample 怎么配。
从裸板到整机:麦序、幅度一致性、Mic/回采幅度、THD、SNR、直流偏置、抗混叠、延时、共振异音与气密性,整理成可执行的音频评测清单。
拆清 tvuiapp / tvbackground 如何经 IAetheryalAudio AIDL、MS12 stereo_pcm_output、libaetheryalaudiohal 拿到系统播放 PCM;重点写清 ConnectToSink 门控与调试属性。
Soundbar 大音量下远场唤醒差:原生 2mic+2ref AEC 不够用。把自研多通道 AEC+NS 下沉到 Audio HAL, 用 4mic×6ref 建模,并以静音 Ref 旁路让 Google 原生 AEC 空转,保持接口兼容。
用 -23 dBFS 标准片、系统最大音量,讲清 MS12 选 RF 与 LINE 时, None(PCM 出)/ Auto(Dolby 出)四条路径上的 -8 dB / +8 dB 与后级 TV。
LoopbackA 已被 DSPC 占用时,如何在 DTS 增加 LoopbackB,从 TDM-A(tdmoutA)回采 48 kHz / 2ch / 16bit 参考声,并完成编译烧录与 tinyplay/tinycap 验证。
从音量键到喇叭:Java 记 index 与刷 UI,Native 用 AudioPolicy 算 dB、AudioFlinger 做软音量, HAL 再落到芯片增益。讲清软音量 / 硬件音量,以及 TV 适配时常踩的点。
用 960×8、16 kHz、4 通道 16bit 讲清帧、period、环形缓冲; 延迟、总缓冲时间、回调频率怎么算,以及调参时的专业取舍。
Apple TV 移焦点、开关 Tuner 时的「啪」一声:先靠 PCM/Non-PCM 检测清空误数据, 再靠进出台 TV 通路的 ease-in/out 压突变;两轮修复怎么配合。
双屏电视大屏无信号时,audio_patch_input_threadloop 里 usleep(20ms) 过长, 缓冲堆积后一股脑吐出导致小屏视频卡顿;改为 5ms 即可缓解。
HDMI1 播 dongle 时为 LINE,经 HDMI2 无信号再切回后变成 RF、听感变大; 根因是无信号时 MS12 未正确清理,切回后 DRC 状态被带偏。
大屏播 dongle、小屏开 Zoom、HDMI ARC 接 Soundbar 时喇叭与 ARC 都没声: AudioPolicy MEDIA 未强制走 SPEAKER,HAL 在 ARC 热插拔里又静音扬声器。
Dolby MS12 与 audioserver 挤在同一侧小核时容易把单核顶到 100%; 将 dolby_ms12_threadloop 的亲和性从 CPU2/3 改到 CPU6/7 分流。
HDMI 接 Apple TV:Home 焦点音效异常、Netflix 拖进度条无声; 在 HDMIIN/ATV/LINEIN 配输出时置 mute_start,等 AV 同步就绪再出声。
待机恢复、开箱向导、升级后、任意播放、Dongle+AVR 等多场景 ARC/eARC 无声: 加强 ARC 状态、推迟 OneTouchPlay、eARC 开时忽略冲突 CEC,以及编码切换时 hold bus。
用一张分层图串起 Application → Framework → AudioFlinger/Policy → HAL → TinyALSA → Kernel: AndroidRuntime 注册、audioserver 启动、AudioPatch 与 port 结构。
对照原生远场与 HAL 内嵌 AEC/唤醒的优化架构,梳理 audio_preprocess_open/start/read/stop: 产品类型选库、Mic 回调与队列、以及释放路径。