From d23b4af4779675589c8a3ce39c0f4b80d0432d5c Mon Sep 17 00:00:00 2001 From: Matt Jordan Date: Tue, 8 Nov 2016 10:11:41 -0600 Subject: res/ari/resource_bridges: Add the ability to manipulate the video source In multi-party bridges, Asterisk currently supports two video modes: * Follow the talker, in which the speaker with the most energy is shown to all participants but the speaker, and the speaker sees the previous video source * Explicitly set video sources, in which all participants see a locked video source Prior to this patch, ARI had no ability to manipulate the video source. This isn't important for two-party bridges, in which Asterisk merely relays the video between the participants. However, in a multi-party bridge, it can be advantageous to allow an external application to manipulate the video source. This patch provides two new routes to accomplish this: (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId} Sets a video source to an explicit channel (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource Removes any explicit video source, and sets the video mode to talk detection ASTERISK-26595 #close Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621 --- include/asterisk/bridge.h | 9 +++++++++ include/asterisk/stasis_bridges.h | 4 ++++ 2 files changed, 13 insertions(+) (limited to 'include') diff --git a/include/asterisk/bridge.h b/include/asterisk/bridge.h index 30ac0953c..0d4376735 100644 --- a/include/asterisk/bridge.h +++ b/include/asterisk/bridge.h @@ -903,6 +903,15 @@ int ast_bridge_is_video_src(struct ast_bridge *bridge, struct ast_channel *chan) */ void ast_bridge_remove_video_src(struct ast_bridge *bridge, struct ast_channel *chan); +/*! + * \brief Converts an enum representation of a bridge video mode to string + * + * \param video_mode The video mode + * + * \retval A string representation of \c video_mode + */ +const char *ast_bridge_video_mode_to_string(enum ast_bridge_video_mode_type video_mode); + enum ast_transfer_result { /*! The transfer completed successfully */ AST_BRIDGE_TRANSFER_SUCCESS, diff --git a/include/asterisk/stasis_bridges.h b/include/asterisk/stasis_bridges.h index d549e4620..05d356cc2 100644 --- a/include/asterisk/stasis_bridges.h +++ b/include/asterisk/stasis_bridges.h @@ -58,6 +58,10 @@ struct ast_bridge_snapshot { unsigned int num_channels; /*! Number of active channels in the bridge. */ unsigned int num_active; + /*! The video mode of the bridge */ + enum ast_bridge_video_mode_type video_mode; + /*! Unique ID of the channel providing video, if one exists */ + AST_STRING_FIELD_EXTENDED(video_source_id); }; /*! -- cgit v1.2.3