/* destructor */ static tsk_object_t* tdav_consumer_audiounit_dtor(tsk_object_t * self) { tdav_consumer_audiounit_t *consumer = self; if(consumer){ /* deinit self */ // Stop the consumer if not done if(consumer->started){ tdav_consumer_audiounit_stop(self); } // destroy handle if(consumer->audioUnitHandle){ tdav_audiounit_handle_destroy(&consumer->audioUnitHandle); } TSK_FREE(consumer->ring.chunck.buffer); if(consumer->ring.buffer){ speex_buffer_destroy(consumer->ring.buffer); } if(consumer->ring.mutex){ tsk_mutex_destroy(&consumer->ring.mutex); } /* deinit base */ tdav_consumer_audio_deinit(TDAV_CONSUMER_AUDIO(consumer)); } return self; }
/* destructor */ static tsk_object_t* tdav_consumer_dsound_dtor(tsk_object_t * self) { tdav_consumer_dsound_t *dsound = self; if(dsound){ tsk_size_t i; /* stop */ if(dsound->started){ tdav_consumer_dsound_stop(self); } /* deinit base */ tdav_consumer_audio_deinit(TDAV_CONSUMER_AUDIO(dsound)); /* deinit self */ // Delete secondary buffer if(dsound->primaryBuffer){ IDirectSoundBuffer_Release(dsound->primaryBuffer); } if(dsound->secondaryBuffer){ IDirectSoundBuffer_Release(dsound->secondaryBuffer); } if(dsound->device){ IDirectSound_Release(dsound->device); } for(i = 0; i<sizeof(dsound->notifEvents)/sizeof(HANDLE); i++){ if(dsound->notifEvents[i]){ CloseHandle(dsound->notifEvents[i]); } } } return self; }
/* destructor */ static tsk_object_t* tdav_consumer_audioqueue_dtor(tsk_object_t * self) { tdav_consumer_audioqueue_t *consumer = self; if(consumer){ // Stop the consumer if not done if(consumer->started){ tdav_consumer_audioqueue_stop(self); } // Free all buffers and dispose the queue if (consumer->queue) { tsk_size_t i; for(i=0; i<CoreAudioPlayBuffers; i++){ AudioQueueFreeBuffer(consumer->queue, consumer->buffers[i]); } AudioQueueDispose(consumer->queue, true); } /* deinit base */ tdav_consumer_audio_deinit(TDAV_CONSUMER_AUDIO(consumer)); } return self; }
/* destructor */ static tsk_object_t* tdav_consumer_audiounit_dtor(tsk_object_t * self) { tdav_consumer_audiounit_t *consumer = self; if(consumer) { /* deinit self */ tdav_consumer_audiounit_deinit(TMEDIA_CONSUMER(self)); TSK_FREE(consumer->ring.chunck.buffer); if(consumer->ring.buffer) { speex_buffer_destroy(consumer->ring.buffer); } if(consumer->ring.mutex) { tsk_mutex_destroy(&consumer->ring.mutex); } /* deinit base */ tdav_consumer_audio_deinit(TDAV_CONSUMER_AUDIO(consumer)); TSK_DEBUG_INFO("*** AudioUnit Consumer destroyed ***"); } return self; }