当样本计数器翻转时,waveOutGetPosition 会做什么?

问题描述 投票:0回答:1

可以将 waveOutGetPosition 函数配置为将经过的样本数写入 MMTIME 结构。 该信息写入的字段是 DWORD 类型,在 Win32 中,它是一个无符号 32 位整数。

如果我的数学是正确的,在 44100Hz,这意味着计数器应该每 27 小时翻转一次:

4294967296 / 44100 / 60 / 60 = 27.0532079617032

在这种情况下会发生什么? 虽然它没有准确描述情况,但我猜 waveOutGetPosition 可能会返回 MMSYSERR_NOMEM? 或者样本计时器会锁定在 4294967295 吗? 还是会转为0?

winapi waveout
1个回答
0
投票

手动测试此场景表明仓位滚动:

Progress: 4294964450
Progress: 4294965179
Progress: 4294965904
Progress: 4294966636
Progress: 89
Progress: 826
Progress: 1546
Progress: 2298

虽然在这个特定的测试运行中,位置从未达到 0,但该位置的采样率 (60Hz) 明显低于波的采样率 (44100Hz) - 我认为它实际上确实滚动到了 0 .

© www.soinside.com 2019 - 2024. All rights reserved.