示例#1
0
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;
  }
}
示例#2
0
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;
}
示例#3
0
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 */
}