void CPlayerMedia::rtp_end(void) { if (m_rtp_session != NULL && m_rtp_session_from_outside == false) { rtp_send_bye(m_rtp_session); rtp_done(m_rtp_session); } else { rtp_set_rtp_callback(m_rtp_session, NULL, NULL); } m_rtp_session = NULL; if (m_srtp_session != NULL) { destroy_srtp(m_srtp_session); m_srtp_session = NULL; } }
int destroy_rtp_session(rtp_session_t *rtp){ if (rtp == NULL){ return TRUE; } if (rtp->rtp != NULL){ rtp_send_bye(rtp->rtp); rtp_done(rtp->rtp); } //TODO: deleting module not working... // if (rtp->tx_session != NULL){ // module_done(CAST_MODULE(rtp->tx_session)); // } free(rtp); return TRUE; }
void os_sound_close (call_t * ca) { if (ca->rtp_session != NULL) { ca->enable_audio = -1; osip_thread_join (ca->audio_thread); osip_free (ca->audio_thread); /* Say bye-bye */ rtp_send_bye (ca->rtp_session); rtp_done (ca->rtp_session); ca->rtp_session = NULL; } #ifdef SPEEX_SUPPORT speex_bits_destroy (&ca->speex_bits); speex_bits_destroy (&ca->dec_speex_bits); speex_encoder_destroy (&ca->speex_enc); speex_decoder_destroy (&ca->speex_dec); #endif close (ca->fd); /* close the sound card */ }