Насколько я понимаю, аудио-контекст имеет:
.currentTime
, время в начале следующего кадрового буфера с возможностью выборки из 128 сэмплов (предыдущие буферы уже имелиотправлено)
.baseLatency
, время, необходимое для передачи запланированного аудио из WebAudio land в ОС
.getOutputTimestamp().contextTime
, aотметка времени для образца кадра, который в настоящее время передается в ОС
При этом понимании context.getOutputTimestamp().contextTime
никогда не должно быть меньше context.currentTime - context.baseLatency
.
Но это так!В моих тестах в Chrome на быстром MacBook это меньше, чем на -0,025 с.Это> 1000 образцов кадров позади.
const context = new AudioContext();
// Let the audio clock settle
setTimeout(function() {
const currentTime = context.currentTime;
const contextTime = context.getOutputTimestamp().contextTime;
console.assert(
contextTime > (currentTime - context.baseLatency),
'contextTime', contextTime,
'currentTime', currentTime,
'baseLatency', context.baseLatency,
'contextTime - (currentTime - baseLatency)', contextTime - (currentTime - context.baseLatency)
);
}, 1000);
Мои предположения относительно того, что он должен делать, искажены, или API лжет мне о его baseLatency?