mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 03:20:57 +00:00
chan_sip+native_bridge_rtp: no directmedia for ptime other than default ptime.
During capabilities selection (joint capabilities of us and peer, configured capability for this peer, or general configured capabilities), if sip_new() does not keep framing information, then directmedia activation will fail for any framing different from default framing. ASTERISK-28637 Change-Id: I99257502788653c2816fc991cac7946453082466
This commit is contained in:
@@ -713,6 +713,8 @@ static int native_rtp_bridge_compatible_check(struct ast_bridge *bridge, struct
|
|||||||
framing_inst0, framing_inst1);
|
framing_inst0, framing_inst1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
ast_debug(3, "Symmetric ptimes on the two call legs (%u). May be able to native bridge in RTP\n",
|
||||||
|
framing_inst0);
|
||||||
}
|
}
|
||||||
|
|
||||||
read_ptime0 = ast_format_cap_get_format_framing(cap0, ast_channel_rawreadformat(bc0->chan));
|
read_ptime0 = ast_format_cap_get_format_framing(cap0, ast_channel_rawreadformat(bc0->chan));
|
||||||
@@ -726,6 +728,9 @@ static int native_rtp_bridge_compatible_check(struct ast_bridge *bridge, struct
|
|||||||
read_ptime0, write_ptime1, read_ptime1, write_ptime0);
|
read_ptime0, write_ptime1, read_ptime1, write_ptime0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
ast_debug(3, "Bridge '%s': Packetization comparison success between RTP streams (read_ptime0:%d == write_ptime1:%d and read_ptime1:%d == write_ptime0:%d).\n",
|
||||||
|
bridge->uniqueid,
|
||||||
|
read_ptime0, write_ptime1, read_ptime1, write_ptime0);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@@ -8193,8 +8193,11 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit
|
|||||||
/* Use only the preferred audio format, which is stored at the '0' index */
|
/* Use only the preferred audio format, which is stored at the '0' index */
|
||||||
fmt = ast_format_cap_get_best_by_type(what, AST_MEDIA_TYPE_AUDIO); /* get the best audio format */
|
fmt = ast_format_cap_get_best_by_type(what, AST_MEDIA_TYPE_AUDIO); /* get the best audio format */
|
||||||
if (fmt) {
|
if (fmt) {
|
||||||
|
int framing;
|
||||||
|
|
||||||
ast_format_cap_remove_by_type(caps, AST_MEDIA_TYPE_AUDIO); /* remove only the other audio formats */
|
ast_format_cap_remove_by_type(caps, AST_MEDIA_TYPE_AUDIO); /* remove only the other audio formats */
|
||||||
ast_format_cap_append(caps, fmt, 0); /* add our best choice back */
|
framing = ast_format_cap_get_format_framing(what, fmt);
|
||||||
|
ast_format_cap_append(caps, fmt, framing); /* add our best choice back */
|
||||||
} else {
|
} else {
|
||||||
/* If we don't have an audio format, try to get something */
|
/* If we don't have an audio format, try to get something */
|
||||||
fmt = ast_format_cap_get_format(caps, 0);
|
fmt = ast_format_cap_get_format(caps, 0);
|
||||||
|
Reference in New Issue
Block a user