bool eqMac2DriverEngine::initHardware(IOService *provider) { bool result = false; IOAudioSampleRate initialSampleRate; IOWorkLoop *wl; //IOLog("eqMac2DriverEngine[%p]::initHardware(%p)\n", this, provider); duringHardwareInit = TRUE; if (!super::initHardware(provider)) { goto Done; } initialSampleRate.whole = 0; initialSampleRate.fraction = 0; if (!createAudioStreams(&initialSampleRate)) { IOLog("eqMac2DriverEngine::initHardware() failed\n"); goto Done; } if (initialSampleRate.whole == 0) { goto Done; } // calculate our timeout in nanosecs, taking care to keep 64bits blockTimeoutNS = blockSize; blockTimeoutNS *= 1000000000; blockTimeoutNS /= initialSampleRate.whole; setSampleRate(&initialSampleRate); // Set the number of sample frames in each buffer setNumSampleFramesPerBuffer(blockSize * numBlocks); wl = getWorkLoop(); if (!wl) { goto Done; } timerEventSource = IOTimerEventSource::timerEventSource(this, ourTimerFired); if (!timerEventSource) { goto Done; } workLoop->addEventSource(timerEventSource); result = true; Done: duringHardwareInit = FALSE; return result; }
bool PhantomAudioEngine::initHardware(IOService *provider) { bool result = false; IOAudioSampleRate initialSampleRate; IOWorkLoop *wl; IOLog("PhantomAudioEngine[%p]::initHardware(%p)\n", this, provider); duringHardwareInit = TRUE; if (!super::initHardware(provider)) { goto Done; } initialSampleRate.whole = 0; initialSampleRate.fraction = 0; if (!createAudioStreams(&initialSampleRate)) { goto Done; } if (initialSampleRate.whole == 0) { goto Done; } blockTimeoutUS = 1000000 * blockSize / initialSampleRate.whole; setSampleRate(&initialSampleRate); // Set the number of sample frames in each buffer setNumSampleFramesPerBuffer(blockSize * numBlocks); wl = getWorkLoop(); if (!wl) { goto Done; } timerEventSource = IOTimerEventSource::timerEventSource(this, timerFired); if (!timerEventSource) { goto Done; } workLoop->addEventSource(timerEventSource); result = true; Done: duringHardwareInit = FALSE; return result; }