Merge "res_stasis: Add 'video_sfu' as a requested bridge type."
This commit is contained in:
commit
47d68401d7
2 changed files with 20 additions and 3 deletions
|
@ -766,6 +766,7 @@ static struct ast_bridge *bridge_create_common(const char *type, const char *nam
|
||||||
int flags = AST_BRIDGE_FLAG_MERGE_INHIBIT_FROM | AST_BRIDGE_FLAG_MERGE_INHIBIT_TO
|
int flags = AST_BRIDGE_FLAG_MERGE_INHIBIT_FROM | AST_BRIDGE_FLAG_MERGE_INHIBIT_TO
|
||||||
| AST_BRIDGE_FLAG_SWAP_INHIBIT_FROM | AST_BRIDGE_FLAG_SWAP_INHIBIT_TO
|
| AST_BRIDGE_FLAG_SWAP_INHIBIT_FROM | AST_BRIDGE_FLAG_SWAP_INHIBIT_TO
|
||||||
| AST_BRIDGE_FLAG_TRANSFER_BRIDGE_ONLY;
|
| AST_BRIDGE_FLAG_TRANSFER_BRIDGE_ONLY;
|
||||||
|
enum ast_bridge_video_mode_type video_mode = AST_BRIDGE_VIDEO_MODE_TALKER_SRC;
|
||||||
|
|
||||||
if (invisible) {
|
if (invisible) {
|
||||||
flags |= AST_BRIDGE_FLAG_INVISIBLE;
|
flags |= AST_BRIDGE_FLAG_INVISIBLE;
|
||||||
|
@ -782,9 +783,17 @@ static struct ast_bridge *bridge_create_common(const char *type, const char *nam
|
||||||
} else if (!strcmp(requested_type, "dtmf_events") ||
|
} else if (!strcmp(requested_type, "dtmf_events") ||
|
||||||
!strcmp(requested_type, "proxy_media")) {
|
!strcmp(requested_type, "proxy_media")) {
|
||||||
capabilities &= ~AST_BRIDGE_CAPABILITY_NATIVE;
|
capabilities &= ~AST_BRIDGE_CAPABILITY_NATIVE;
|
||||||
|
} else if (!strcmp(requested_type, "video_sfu")) {
|
||||||
|
video_mode = AST_BRIDGE_VIDEO_MODE_SFU;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* For an SFU video bridge we ensure it always remains in multimix for the best experience. */
|
||||||
|
if (video_mode == AST_BRIDGE_VIDEO_MODE_SFU) {
|
||||||
|
capabilities = AST_BRIDGE_CAPABILITY_MULTIMIX;
|
||||||
|
flags &= ~AST_BRIDGE_FLAG_SMART;
|
||||||
|
}
|
||||||
|
|
||||||
if (!capabilities
|
if (!capabilities
|
||||||
/* Holding and mixing capabilities don't mix. */
|
/* Holding and mixing capabilities don't mix. */
|
||||||
|| ((capabilities & AST_BRIDGE_CAPABILITY_HOLDING)
|
|| ((capabilities & AST_BRIDGE_CAPABILITY_HOLDING)
|
||||||
|
@ -794,7 +803,15 @@ static struct ast_bridge *bridge_create_common(const char *type, const char *nam
|
||||||
|
|
||||||
bridge = bridge_stasis_new(capabilities, flags, name, id);
|
bridge = bridge_stasis_new(capabilities, flags, name, id);
|
||||||
if (bridge) {
|
if (bridge) {
|
||||||
ast_bridge_set_talker_src_video_mode(bridge);
|
if (video_mode == AST_BRIDGE_VIDEO_MODE_SFU) {
|
||||||
|
ast_bridge_set_sfu_video_mode(bridge);
|
||||||
|
/* We require a minimum 5 seconds between video updates to stop floods from clients,
|
||||||
|
* this should rarely be changed but should become configurable in the future.
|
||||||
|
*/
|
||||||
|
ast_bridge_set_video_update_discard(bridge, 5);
|
||||||
|
} else {
|
||||||
|
ast_bridge_set_talker_src_video_mode(bridge);
|
||||||
|
}
|
||||||
if (!ao2_link(app_bridges, bridge)) {
|
if (!ao2_link(app_bridges, bridge)) {
|
||||||
ast_bridge_destroy(bridge, 0);
|
ast_bridge_destroy(bridge, 0);
|
||||||
bridge = NULL;
|
bridge = NULL;
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"name": "type",
|
"name": "type",
|
||||||
"description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media).",
|
"description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu).",
|
||||||
"paramType": "query",
|
"paramType": "query",
|
||||||
"required": false,
|
"required": false,
|
||||||
"allowMultiple": false,
|
"allowMultiple": false,
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"name": "type",
|
"name": "type",
|
||||||
"description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media) to set.",
|
"description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu) to set.",
|
||||||
"paramType": "query",
|
"paramType": "query",
|
||||||
"required": false,
|
"required": false,
|
||||||
"allowMultiple": false,
|
"allowMultiple": false,
|
||||||
|
|
Loading…
Reference in a new issue