diff --git a/res/ari/resource_bridges.h b/res/ari/resource_bridges.h index 95f43d0b39..01d5d6070c 100644 --- a/res/ari/resource_bridges.h +++ b/res/ari/resource_bridges.h @@ -52,7 +52,7 @@ struct ast_ari_bridges_list_args { void ast_ari_bridges_list(struct ast_variable *headers, struct ast_ari_bridges_list_args *args, struct ast_ari_response *response); /*! Argument struct for ast_ari_bridges_create() */ struct ast_ari_bridges_create_args { - /*! Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single). */ + /*! Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single, sdp_label). */ const char *type; /*! Unique ID to give to the bridge being created. */ const char *bridge_id; @@ -82,7 +82,7 @@ int ast_ari_bridges_create_parse_body( void ast_ari_bridges_create(struct ast_variable *headers, struct ast_ari_bridges_create_args *args, struct ast_ari_response *response); /*! Argument struct for ast_ari_bridges_create_with_id() */ struct ast_ari_bridges_create_with_id_args { - /*! Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single) to set. */ + /*! Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single, sdp_label) to set. */ const char *type; /*! Unique ID to give to the bridge being created. */ const char *bridge_id; diff --git a/res/res_stasis.c b/res/res_stasis.c index 7eacbfe0a1..84244c2a13 100644 --- a/res/res_stasis.c +++ b/res/res_stasis.c @@ -801,6 +801,7 @@ static struct ast_bridge *bridge_create_common(const char *type, const char *nam | 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; + int send_sdp_label = 0; if (invisible) { flags |= AST_BRIDGE_FLAG_INVISIBLE; @@ -821,6 +822,8 @@ static struct ast_bridge *bridge_create_common(const char *type, const char *nam video_mode = AST_BRIDGE_VIDEO_MODE_SFU; } else if (!strcmp(requested_type, "video_single")) { video_mode = AST_BRIDGE_VIDEO_MODE_SINGLE_SRC; + } else if (!strcmp(requested_type, "sdp_label")) { + send_sdp_label = 1; } } @@ -837,7 +840,7 @@ static struct ast_bridge *bridge_create_common(const char *type, const char *nam return NULL; } - bridge = bridge_stasis_new(capabilities, flags, name, id, video_mode); + bridge = bridge_stasis_new(capabilities, flags, name, id, video_mode, send_sdp_label); if (bridge) { if (!ao2_link(app_bridges, bridge)) { ast_bridge_destroy(bridge, 0); diff --git a/res/stasis/stasis_bridge.c b/res/stasis/stasis_bridge.c index d5ab00aae7..f48f60cab9 100644 --- a/res/stasis/stasis_bridge.c +++ b/res/stasis/stasis_bridge.c @@ -295,7 +295,7 @@ static void bridge_stasis_pull(struct ast_bridge *self, struct ast_bridge_channe ast_bridge_base_v_table.pull(self, bridge_channel); } -struct ast_bridge *bridge_stasis_new(uint32_t capabilities, unsigned int flags, const char *name, const char *id, enum ast_bridge_video_mode_type video_mode) +struct ast_bridge *bridge_stasis_new(uint32_t capabilities, unsigned int flags, const char *name, const char *id, enum ast_bridge_video_mode_type video_mode, unsigned int send_sdp_label) { void *bridge; @@ -317,6 +317,10 @@ struct ast_bridge *bridge_stasis_new(uint32_t capabilities, unsigned int flags, ast_bridge_set_talker_src_video_mode(bridge); } + if (send_sdp_label) { + ast_bridge_set_send_sdp_label(bridge, 1); + } + bridge = bridge_register(bridge); return bridge; diff --git a/res/stasis/stasis_bridge.h b/res/stasis/stasis_bridge.h index 531da927ff..3a459155cb 100644 --- a/res/stasis/stasis_bridge.h +++ b/res/stasis/stasis_bridge.h @@ -55,7 +55,7 @@ extern "C" { * \retval a pointer to a new bridge on success * \retval NULL on failure */ -struct ast_bridge *bridge_stasis_new(uint32_t capabilities, unsigned int flags, const char *name, const char *id, enum ast_bridge_video_mode_type video_mode); +struct ast_bridge *bridge_stasis_new(uint32_t capabilities, unsigned int flags, const char *name, const char *id, enum ast_bridge_video_mode_type video_mode, unsigned int send_sdp_label); /*! * \internal diff --git a/rest-api/api-docs/bridges.json b/rest-api/api-docs/bridges.json index bf0a0016ec..636d254093 100644 --- a/rest-api/api-docs/bridges.json +++ b/rest-api/api-docs/bridges.json @@ -30,7 +30,7 @@ "parameters": [ { "name": "type", - "description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single).", + "description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single, sdp_label).", "paramType": "query", "required": false, "allowMultiple": false, @@ -69,7 +69,7 @@ "parameters": [ { "name": "type", - "description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single) to set.", + "description": "Comma separated list of bridge type attributes (mixing, holding, dtmf_events, proxy_media, video_sfu, video_single, sdp_label) to set.", "paramType": "query", "required": false, "allowMultiple": false,