Ejemplo n.º 1
0
/*----------------------------------------------------------------------
|    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;
}
Ejemplo n.º 2
0
void CoreAudioOutput::start()
{
	this->clearBuffer();
	
	OSSpinLockLock(this->_spinlockAU);
	AudioUnitReset(this->_au, kAudioUnitScope_Global, 0);
	AudioOutputUnitStart(this->_au);
	OSSpinLockUnlock(this->_spinlockAU);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
/*----------------------------------------------------------------------
|    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);
}