CoreAudio HAL API + AudioQueue证据1a. AVPlayer 完全不存在在二进位档案的符号表 (nm) 与字串表 (strings) 中,找不到任何 AVPlayer、AVPlayerItem、AVQueuePlayer、AVURLAsset 的引用——零个 class 引用、零个 selector 引用。
符号 | 用途 |
AudioQueueNewOutput | 建立输出伫列 |
AudioQueueAllocateBuffer | 分配音讯缓冲区 |
AudioQueueEnqueueBuffer | 将已填充的缓冲区送入伫列 |
AudioQueueStart | 开始播放 |
AudioQueuePause | 暂停播放 |
AudioQueueFlush | 清空伫列 |
AudioQueueDispose | 释放伫列 |
AudioQueueSetParameter | 设定参数(如音量) |
AudioQueueSetProperty | 设定属性 |
AudioQueueGetCurrentTime | 取得播放时间 |
问题项 | Foobar2000 Mac 状态 | 影响 |
是否以 AVAudioEngine 作为输出 | 否。使用 AudioQueue + CoreAudio HAL | 无此问题 |
是否设定 .spectral 时域拉伸 | 否。甚至不使用 AVPlayer/AVPlayerItem | 无此问题 |
面向 | Foobar2000 Mac | AVPlayer(MadTunes) |
输出 API | AudioQueue (push-model) | AVPlayer → coreaudiod (pull-model) |
信号路径长度 | 解码 → DSP 链 → output_shims → softfader → AudioQueue → coreaudiod | 解码 → coreaudiod(最短路径) |
SRC 引擎 | Speex / ARDFTSRC(自带) | coreaudiod 母带级 SRC |
音量控制 | AudioQueueSetParameter软件纯量乘 | AVPlayer.volume(系统管线级) |
位元深度处理 | 内部 64-bit float → 截断/抖动至 ≤24-bit integer | 系统原生位元透明管线 |
ReplayGain | 软件增益修改 PCM | 无(原始讯号直通) |
HAL 缓冲区管理 | 不管理 | 主动调大至 1024 frames |
淡入淡出 | output_softfader 修改 PCM | 无侵入式 DSP |
格式转换层数 | double → output_shims → AudioQueue → coreaudiod → HAL | CoreMedia → coreaudiod → HAL |
预设 DSP 开销 | replaygain_manager + autoResampler + output_softfader + output_injectdsp 始终在信号链 | 零 DSP |