/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.service.protocol; import java.text.*; import org.jitsi.service.neomedia.device.*; /** * Represents an OperationSet 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 callee 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 Call 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 Call to allow/disallow the streaming of local * video for * @param mediaDevice the media device to use for the desktop streaming * @param allowed true to allow the streaming of local video for * the specified Call; false 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 Call 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 Call 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); }