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
This commit is contained in:
Matt Jordan
2016-11-08 10:11:41 -06:00
parent d1739bcf07
commit a72ef38113
15 changed files with 645 additions and 14 deletions

View File

@@ -716,6 +716,24 @@ int ast_ari_validate_bridge_merged(struct ast_json *json);
*/
ari_validator ast_ari_validate_bridge_merged_fn(void);
/*!
* \brief Validator for BridgeVideoSourceChanged.
*
* Notification that the source of video in a bridge has changed.
*
* \param json JSON object to validate.
* \returns True (non-zero) if valid.
* \returns False (zero) if invalid.
*/
int ast_ari_validate_bridge_video_source_changed(struct ast_json *json);
/*!
* \brief Function pointer to ast_ari_validate_bridge_video_source_changed().
*
* See \ref ast_ari_model_validators.h for more details.
*/
ari_validator ast_ari_validate_bridge_video_source_changed_fn(void);
/*!
* \brief Validator for ChannelCallerId.
*
@@ -1452,6 +1470,8 @@ ari_validator ast_ari_validate_application_fn(void);
* - id: string (required)
* - name: string (required)
* - technology: string (required)
* - video_mode: string
* - video_source_id: string
* LiveRecording
* - cause: string
* - duration: int
@@ -1543,6 +1563,13 @@ ari_validator ast_ari_validate_application_fn(void);
* - timestamp: Date
* - bridge: Bridge (required)
* - bridge_from: Bridge (required)
* BridgeVideoSourceChanged
* - asterisk_id: string
* - type: string (required)
* - application: string (required)
* - timestamp: Date
* - bridge: Bridge (required)
* - old_video_source_id: string
* ChannelCallerId
* - asterisk_id: string
* - type: string (required)