Merge "res_stasis: Add 'video_sfu' as a requested bridge type."
This commit is contained in:
commit
47d68401d7
|
@ -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
|
||||
| AST_BRIDGE_FLAG_SWAP_INHIBIT_FROM | AST_BRIDGE_FLAG_SWAP_INHIBIT_TO
|
||||
| AST_BRIDGE_FLAG_TRANSFER_BRIDGE_ONLY;
|
||||
enum ast_bridge_video_mode_type video_mode = AST_BRIDGE_VIDEO_MODE_TALKER_SRC;
|
||||
|
||||
if (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") ||
|
||||
!strcmp(requested_type, "proxy_media")) {
|
||||
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
|
||||
/* Holding and mixing capabilities don't mix. */
|
||||
|| ((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);
|
||||
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)) {
|
||||
ast_bridge_destroy(bridge, 0);
|
||||
bridge = NULL;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
"parameters": [
|
||||
{
|
||||
"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",
|
||||
"required": false,
|
||||
"allowMultiple": false,
|
||||
|
@ -65,7 +65,7 @@
|
|||
"parameters": [
|
||||
{
|
||||
"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",
|
||||
"required": false,
|
||||
"allowMultiple": false,
|
||||
|
|
Loading…
Reference in New Issue