/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.service.protocol; import java.text.*; import org.jitsi.service.neomedia.device.*; /** * Represents an <tt>OperationSet</tt> giving access to desktop streaming * specific functionality. * * @author Sebastien Vincent * @author Yana Stamcheva */ public interface OperationSetDesktopStreaming extends OperationSetVideoTelephony { /** * Create a new video call and invite the specified CallPeer to it. * * @param uri the address of the callee that we should invite to a new * call. * @param mediaDevice the media device to use for the desktop streaming * @return CallPeer the CallPeer that will represented by the * specified uri. All following state change events will be delivered * through that call peer. The Call that this peer is a member * of could be retrieved from the CallParticipatnt instance with the use * of the corresponding method. * @throws OperationFailedException with the corresponding code if we fail * to create the video call. * @throws ParseException if <tt>callee</tt> is not a valid address * string. */ public Call createVideoCall(String uri, MediaDevice mediaDevice) throws OperationFailedException, ParseException; /** * Create a new video call and invite the specified CallPeer to it. * * @param callee the address of the callee that we should invite to a new * call. * @param mediaDevice the media device to use for the desktop streaming * @return CallPeer the CallPeer that will represented by the * specified uri. All following state change events will be delivered * through that call peer. The Call that this peer is a member * of could be retrieved from the CallParticipant instance with the use * of the corresponding method. * @throws OperationFailedException with the corresponding code if we fail * to create the video call. */ public Call createVideoCall(Contact callee, MediaDevice mediaDevice) throws OperationFailedException; /** * Sets the indicator which determines whether the streaming of local video * in a specific <tt>Call</tt> is allowed. The setting does not reflect * the availability of actual video capture devices, it just expresses the * desire of the user to have the local video streamed in the case the * system is actually able to do so. * * @param call the <tt>Call</tt> to allow/disallow the streaming of local * video for * @param mediaDevice the media device to use for the desktop streaming * @param allowed <tt>true</tt> to allow the streaming of local video for * the specified <tt>Call</tt>; <tt>false</tt> to disallow it * * @throws OperationFailedException if initializing local video fails. */ public void setLocalVideoAllowed( Call call, MediaDevice mediaDevice, boolean allowed) throws OperationFailedException; /** * If the streaming is partial (not the full desktop). * * @param call the <tt>Call</tt> whose video transmission properties we are * interested in. * @return true if streaming is partial, false otherwise */ public boolean isPartialStreaming(Call call); /** * Move origin of a partial desktop streaming. * * @param call the <tt>Call</tt> whose video transmission properties we are * interested in. * @param x new x coordinate origin * @param y new y coordinate origin */ public void movePartialDesktopStreaming(Call call, int x, int y); }