Switch AMR octet-aligned mode early enough to store the correct format parameters.

git-svn-id: http://voip.null.ro/svn/yate@6152 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2016-11-25 18:38:12 +00:00
parent 8c0fe9852d
commit 0927d996a6
1 changed files with 18 additions and 3 deletions

View File

@ -180,6 +180,12 @@ ObjList* SDPParser::parse(const MimeSdpBody& sdp, String& addr, ObjList* oldMedi
bool amrOctet = m_codecs.getBoolValue("amr_octet",false);
int defmap = -1;
String payload(lookup(var,s_payloads));
if (amrOctet) {
if (payload == YSTRING("amr"))
payload = "amr-o";
else if (payload == YSTRING("amr/16000"))
payload = "amr-o/16000";
}
const ObjList* l = sdp.lines().find(c);
while (l && (l = l->skipNext())) {
@ -239,6 +245,18 @@ ObjList* SDPParser::parse(const MimeSdpBody& sdp, String& addr, ObjList* oldMedi
int val = 0;
line >> val;
amrOctet = (0 != val);
if (amrOctet) {
if (payload == YSTRING("amr"))
payload = "amr-o";
else if (payload == YSTRING("amr/16000"))
payload = "amr-o/16000";
}
else {
if (payload == YSTRING("amr-o"))
payload = "amr";
else if (payload == YSTRING("amr-o/16000"))
payload = "amr/16000";
}
}
else
dest = dest->append(new NamedString("fmtp:" + payload,line));
@ -280,9 +298,6 @@ ObjList* SDPParser::parse(const MimeSdpBody& sdp, String& addr, ObjList* oldMedi
payload = m_hacks.getValue(YSTRING("ilbc_default"),"ilbc30");
}
if (amrOctet && payload == "amr")
payload = "amr-o";
XDebug(this,DebugAll,"Payload %d format '%s'",var,payload.c_str());
if (payload && m_codecs.getBoolValue(payload,defcodecs && DataTranslator::canConvert(payload))) {
if (fmt)