/*---------------------------------------------------------------------- | OsxAudioUnitsOutput_Seek +---------------------------------------------------------------------*/ BLT_METHOD OsxAudioUnitsOutput_Seek(BLT_MediaNode* _self, BLT_SeekMode* mode, BLT_SeekPoint* point) { OsxAudioUnitsOutput* self = ATX_SELF_EX(OsxAudioUnitsOutput, BLT_BaseMediaNode, BLT_MediaNode); ComponentResult result; BLT_COMPILER_UNUSED(mode); BLT_COMPILER_UNUSED(point); /* flush the queue */ pthread_mutex_lock(&self->lock); ATX_List_Clear(self->packet_queue); pthread_mutex_unlock(&self->lock); /* reset the device */ result = AudioUnitReset(self->audio_unit, kAudioUnitScope_Input, 0); if (result != noErr) { ATX_LOG_WARNING_1("AudioUnitReset failed (%d)", (int)result); } return BLT_SUCCESS; }
void CoreAudioOutput::start() { this->clearBuffer(); OSSpinLockLock(this->_spinlockAU); AudioUnitReset(this->_au, kAudioUnitScope_Global, 0); AudioOutputUnitStart(this->_au); OSSpinLockUnlock(this->_spinlockAU); }
static void au_unconfigure_read(AUData *d){ if(d->read_started == TRUE) { d->read_started=FALSE; AudioUnitElement inputBus = 1; AudioUnitReset(d->io_unit, kAudioUnitScope_Global, inputBus); } au_unconfigure(d); ms_mutex_lock(&d->mutex); flushq(&d->rq,0); ms_mutex_unlock(&d->mutex); }
static void au_unconfigure_write(AUData *d){ if(d->write_started == TRUE) { d->write_started=FALSE; AudioUnitElement outputBus = 0; AudioUnitReset(d->io_unit, kAudioUnitScope_Global, outputBus); } ms_message("[%i] frames of silence inserted for [%i] ms.",d->n_lost_frame,(d->n_lost_frame*1000)/d->rate); au_unconfigure(d); ms_mutex_lock(&d->mutex); ms_bufferizer_flush(d->bufferizer); ms_mutex_unlock(&d->mutex); }
/*---------------------------------------------------------------------- | OsxAudioUnitsOutput_Stop +---------------------------------------------------------------------*/ BLT_METHOD OsxAudioUnitsOutput_Stop(BLT_MediaNode* _self) { OsxAudioUnitsOutput* self = ATX_SELF_EX(OsxAudioUnitsOutput, BLT_BaseMediaNode, BLT_MediaNode); ComponentResult result; /* flush the queue */ pthread_mutex_lock(&self->lock); ATX_List_Clear(self->packet_queue); pthread_mutex_unlock(&self->lock); /* stop the and reset audio unit */ result = AudioOutputUnitStop(self->audio_unit); if (result != noErr) { ATX_LOG_WARNING_1("AudioUnitOutputStop failed (%d)", (int)result); } result = AudioUnitReset(self->audio_unit, kAudioUnitScope_Input, 0); if (result != noErr) { ATX_LOG_WARNING_1("AudioUnitReset failed (%d)", (int)result); } return BLT_SUCCESS; }
JNIEXPORT jint JNICALL Java_com_apple_audio_units_AudioUnit_AudioUnitReset (JNIEnv *, jclass, jint ci, jint inScope, jint inElement) { return (jint)AudioUnitReset((AudioUnit)ci, (AudioUnitScope)inScope, (AudioUnitElement)inElement); }