350 |
*/ |
*/ |
351 |
template<typename T> |
template<typename T> |
352 |
void EventGenerator::scheduleAheadMicroSec(RTAVLTree<T>& queue, T& node, int32_t fragmentPosBase, uint64_t microseconds) { |
void EventGenerator::scheduleAheadMicroSec(RTAVLTree<T>& queue, T& node, int32_t fragmentPosBase, uint64_t microseconds) { |
353 |
node.scheduleTime = uiTotalSamplesProcessed + fragmentPosBase + float(uiSampleRate) * (float(microseconds) / 1000000.f); |
// round up (+1) if microseconds is not zero (i.e. because 44.1 kHz and |
354 |
|
// 1 us would yield in < 1 and thus would be offset == 0) |
355 |
|
const sched_time_t offset = |
356 |
|
(microseconds != 0LL) ? |
357 |
|
1.f + (float(uiSampleRate) * (float(microseconds) / 1000000.f)) |
358 |
|
: 0.f; |
359 |
|
node.scheduleTime = uiTotalSamplesProcessed + fragmentPosBase + offset; |
360 |
queue.insert(node); |
queue.insert(node); |
361 |
} |
} |
362 |
|
|