//--------------------------------------------------------------------------------------------- // asio2 buffer switch void AsioSample::bufferSwitchX () { getSamplePosition (&asioTime.timeInfo.samplePosition, &asioTime.timeInfo.systemTime); long offset = toggle ? blockFrames : 0; if (tcRead) { // Create a fake time code, which is 10 minutes ahead of the card's sample position // Please note that for simplicity here time code will wrap after 32 bit are reached asioTime.timeCode.timeCodeSamples.lo = asioTime.timeInfo.samplePosition.lo + 600.0 * sampleRate; asioTime.timeCode.timeCodeSamples.hi = 0; } callbacks->bufferSwitchTimeInfo (&asioTime, toggle, ASIOFalse); asioTime.timeInfo.flags &= ~(kSampleRateChanged | kClockSourceChanged); }
//--------------------------------------------------------------------------------------------- void KXAsio::bufferSwitch () { if (started && callbacks) { getSamplePosition (&asioTime.timeInfo.samplePosition, &asioTime.timeInfo.systemTime); if (timeInfoMode) bufferSwitchX (); else callbacks->bufferSwitch (toggle, ASIOTrue); toggle = 1-toggle; samplePosition += blockFrames; } }