DtmfTesterDialog::DtmfTesterDialog(const string& filename, UACAuthCred* credentials) : filename(filename), cred(credentials), play_list(this) { // try out this inband detector setInbandDetector(Dtmf::SpanDSP); }
int AmSession::onSdpCompleted(const AmSdp& local_sdp, const AmSdp& remote_sdp) { DBG("AmSession::onSdpCompleted(...) ...\n"); if(local_sdp.media.empty() || remote_sdp.media.empty()) { ERROR("Invalid SDP"); string debug_str; local_sdp.print(debug_str); ERROR("Local SDP:\n%s", debug_str.empty() ? "<empty>" : debug_str.c_str()); remote_sdp.print(debug_str); ERROR("Remote SDP:\n%s", debug_str.empty() ? "<empty>" : debug_str.c_str()); return -1; } bool set_on_hold = false; if (!remote_sdp.media.empty()) { vector<SdpAttribute>::const_iterator pos = std::find(remote_sdp.media[0].attributes.begin(), remote_sdp.media[0].attributes.end(), SdpAttribute("sendonly")); set_on_hold = pos != remote_sdp.media[0].attributes.end(); } lockAudio(); // TODO: // - get the right media ID // - check if the stream coresponding to the media ID // should be created or updated // int ret = 0; try { ret = RTPStream()->init(local_sdp, remote_sdp, AmConfig::ForceSymmetricRtp); } catch (const string& s) { ERROR("Error while initializing RTP stream: '%s'\n", s.c_str()); ret = -1; } catch (...) { ERROR("Error while initializing RTP stream (unknown exception in AmRTPStream::init)\n"); ret = -1; } unlockAudio(); if (!isProcessingMedia()) { setInbandDetector(AmConfig::DefaultDTMFDetector); } return ret; }