/*---------------------------------------------------------------------- | CrossFader_Destroy +---------------------------------------------------------------------*/ static BLT_Result CrossFader_Destroy(CrossFader* fader) { ATX_ListItem* item; ATX_LOG_FINE("CrossFader::Destroy"); /* release any packet we may hold */ item = ATX_List_GetFirstItem(fader->output.packets); while (item) { BLT_MediaPacket* packet = ATX_ListItem_GetData(item); if (packet) { BLT_MediaPacket_Release(packet); } item = ATX_ListItem_GetNext(item); } ATX_List_Destroy(fader->output.packets); /* destroy the input buffer */ if (fader->input.buffer) { ATX_RingBuffer_Destroy(fader->input.buffer); } /* destruct the inherited object */ BLT_BaseMediaNode_Destruct(&fader->base); /* free the object memory */ ATX_FreeMemory(fader); return BLT_SUCCESS; }
/*---------------------------------------------------------------------- | SilenceRemover_Destroy +---------------------------------------------------------------------*/ static BLT_Result SilenceRemover_Destroy(SilenceRemover* self) { ATX_ListItem* item; ATX_LOG_FINE("SilenceRemover::Destroy"); /* release any input packet we may hold */ if (self->input.pending) { BLT_MediaPacket_Release(self->input.pending); } /* release any output packet we may hold */ item = ATX_List_GetFirstItem(self->output.packets); while (item) { BLT_MediaPacket* packet = ATX_ListItem_GetData(item); if (packet) { BLT_MediaPacket_Release(packet); } item = ATX_ListItem_GetNext(item); } ATX_List_Destroy(self->output.packets); /* destruct the inherited object */ BLT_BaseMediaNode_Destruct(&ATX_BASE(self, BLT_BaseMediaNode)); /* free the object memory */ ATX_FreeMemory(self); return BLT_SUCCESS; }
/*---------------------------------------------------------------------- | OsxAudioUnitsOutput_Destroy +---------------------------------------------------------------------*/ static BLT_Result OsxAudioUnitsOutput_Destroy(OsxAudioUnitsOutput* self) { /* drain the queue */ OsxAudioUnitsOutput_Drain(&ATX_BASE(self, BLT_OutputNode)); /* stop the audio pump */ OsxAudioUnitsOutput_Stop(&ATX_BASE_EX(self, BLT_BaseMediaNode, BLT_MediaNode)); /* close the audio unit */ if (self->audio_unit) { ComponentResult result; result = CloseComponent(self->audio_unit); if (result != noErr) { ATX_LOG_WARNING_1("CloseComponent failed (%d)", (int)result); } } /* destroy the queue */ ATX_List_Destroy(self->packet_queue); /* destroy the lock */ pthread_mutex_destroy(&self->lock); /* destruct the inherited object */ BLT_BaseMediaNode_Destruct(&ATX_BASE(self, BLT_BaseMediaNode)); /* free the object memory */ ATX_FreeMemory(self); return BLT_SUCCESS; }
/*---------------------------------------------------------------------- | ATX_HttpMessage_Destruct +---------------------------------------------------------------------*/ static ATX_Result ATX_HttpMessage_Destruct(ATX_HttpMessage* message) { /* destroy all headers */ ATX_ListItem* item = ATX_List_GetFirstItem(message->headers); while (item) { ATX_HttpHeader_Destroy((ATX_HttpHeader*)ATX_ListItem_GetData(item)); item = ATX_ListItem_GetNext(item); } ATX_List_Destroy(message->headers); /* free the protocol string */ ATX_String_Destruct(&message->protocol); /* release the body stream */ ATX_RELEASE_OBJECT(message->body); return ATX_SUCCESS; }
/*---------------------------------------------------------------------- | AacDecoder_Destroy +---------------------------------------------------------------------*/ static BLT_Result AacDecoder_Destroy(AacDecoder* self) { ATX_LOG_FINE("AacDecoder::Destroy"); /* release any packet we may hold */ AacDecoderOutput_Flush(self); ATX_List_Destroy(self->output.packets); /* destroy the Melo decoder */ if (self->helix_decoder) AACFreeDecoder(self->helix_decoder); /* destruct the inherited object */ BLT_BaseMediaNode_Destruct(&ATX_BASE(self, BLT_BaseMediaNode)); /* free the object memory */ ATX_FreeMemory(self); return BLT_SUCCESS; }