OpalMediaFormatList allCodecs = OpalMediaFormat::GetAllRegisteredMediaFormats();\r
for (OpalMediaFormatList::iterator it = allCodecs.begin(); it != allCodecs.end(); ++it) {\r
if (it->GetMediaType() == OpalMediaType::Audio()) {\r
- it->SetOptionInteger(OpalAudioFormat::RxFramesPerPacketOption(), 1);\r
- it->SetOptionInteger(OpalAudioFormat::TxFramesPerPacketOption(), 1);\r
+ int ms_per_frame = it->GetFrameTime()/it->GetTimeUnits();\r
+ int frames_in_20_ms = (ms_per_frame+19)/ms_per_frame;\r
+ it->SetOptionInteger(OpalAudioFormat::RxFramesPerPacketOption(), frames_in_20_ms);\r
+ it->SetOptionInteger(OpalAudioFormat::TxFramesPerPacketOption(), frames_in_20_ms);\r
OpalMediaFormat::SetRegisteredMediaFormat(*it);\r
+ PTRACE(4, "mod_opal\tSet " << *it << " to " << frames_in_20_ms << "frames/packet");\r
}\r
}\r
#endif // IMPLEMENT_MULTI_FAME_AUDIO\r
}\r
\r
\r
+void FSConnection::OnEstablished()\r
+{\r
+ OpalLocalConnection::OnEstablished();\r
+\r
+ if (switch_channel_direction(m_fsChannel) == SWITCH_CALL_DIRECTION_OUTBOUND) {\r
+ PTRACE(4, "mod_opal\tOnEstablished for outbound call, checking for media");\r
+ if (GetMediaStream(OpalMediaType::Audio(), true) != NULL && GetMediaStream(OpalMediaType::Audio(), false) != NULL) {\r
+ PTRACE(3, "mod_opal\tOnEstablished for outbound call, making call answered");\r
+ switch_channel_mark_answered(m_fsChannel);\r
+ }\r
+ }\r
+}\r
+\r
+\r
void FSConnection::OnReleased()\r
{\r
m_rxAudioOpened.Signal(); // Just in case\r
return;\r
\r
if (switch_channel_direction(m_fsChannel) == SWITCH_CALL_DIRECTION_INBOUND) {\r
+ PTRACE(4, "mod_opal\tOnPatchMediaStream for inbound call, flagging media opened");\r
if (isSource)\r
m_rxAudioOpened.Signal();\r
else\r
m_txAudioOpened.Signal();\r
}\r
- else if (GetMediaStream(OpalMediaType::Audio(), !isSource) != NULL) {\r
+ else {\r
+ PTRACE(4, "mod_opal\tOnPatchMediaStream for outbound call, checking media");\r
+ if (GetMediaStream(OpalMediaType::Audio(), !isSource) != NULL) {\r
// Have open media in both directions.\r
- if (IsEstablished())\r
+ if (IsEstablished()) {\r
+ PTRACE(3, "mod_opal\tOnPatchMediaStream for outbound call, making call answered");\r
switch_channel_mark_answered(m_fsChannel);\r
- else if (!IsReleased())\r
+ }\r
+ else if (!IsReleased()) {\r
+ PTRACE(3, "mod_opal\tOnPatchMediaStream for outbound call, making call pre-answered");\r
switch_channel_mark_pre_answered(m_fsChannel);\r
}\r
+ }\r
+ }\r
}\r
\r
\r