void ast_ari_bridges_set_video_source(struct ast_variable *headers, struct ast_ari_bridges_set_video_source_args *args, struct ast_ari_response *response) { struct ast_bridge *bridge; struct stasis_app_control *control; bridge = find_bridge(response, args->bridge_id); if (!bridge) { return; } control = find_channel_control(response, args->channel_id); if (!control) { ao2_ref(bridge, -1); return; } if (stasis_app_get_bridge(control) != bridge) { ast_ari_response_error(response, 422, "Unprocessable Entity", "Channel not in this bridge"); ao2_ref(bridge, -1); ao2_ref(control, -1); return; } stasis_app_send_command(control, bridge_set_video_source_cb, ao2_bump(bridge), __ao2_cleanup); ao2_ref(bridge, -1); ao2_ref(control, -1); ast_ari_response_no_content(response); }
int stasis_app_control_remove_channel_from_bridge( struct stasis_app_control *control, struct ast_bridge *bridge) { int *res; ast_debug(3, "%s: Sending channel remove_from_bridge command\n", stasis_app_control_get_channel_id(control)); res = stasis_app_send_command(control, app_control_remove_channel_from_bridge, bridge); return *res; }
int stasis_app_control_answer(struct stasis_app_control *control) { int retval; ast_debug(3, "%s: Sending answer command\n", stasis_app_control_get_channel_id(control)); retval = stasis_app_send_command(control, app_control_answer, NULL); if (retval != 0) { ast_log(LOG_WARNING, "%s: Failed to answer channel\n", stasis_app_control_get_channel_id(control)); return -1; } return 0; }