mirror of https://github.com/sipwise/jitsi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
294 lines
13 KiB
294 lines
13 KiB
/*
|
|
* 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.awt.*;
|
|
import java.beans.*;
|
|
import java.text.*;
|
|
import java.util.List;
|
|
|
|
import org.jitsi.service.neomedia.*;
|
|
import org.jitsi.util.event.*;
|
|
|
|
/**
|
|
* Represents an <tt>OperationSet</tt> giving access to video-specific
|
|
* functionality in telephony such as visual <tt>Component</tt>s displaying
|
|
* video and listening to dynamic availability of such <tt>Component</tt>s.
|
|
*
|
|
* @author Lyubomir Marinov
|
|
* @author Sebastien Vincent
|
|
*/
|
|
public interface OperationSetVideoTelephony
|
|
extends OperationSet
|
|
{
|
|
/**
|
|
* Adds a specific <tt>VideoListener</tt> to this telephony in order to
|
|
* receive notifications when visual/video <tt>Component</tt>s are being
|
|
* added and removed for a specific <tt>CallPeer</tt>.
|
|
*
|
|
* @param peer the <tt>CallPeer</tt> whose video the specified listener
|
|
* is to be notified about
|
|
* @param listener the <tt>VideoListener</tt> to be notified when
|
|
* visual/video <tt>Component</tt>s are being added or removed for
|
|
* <tt>peer</tt>
|
|
*/
|
|
public void addVideoListener( CallPeer peer, VideoListener listener);
|
|
|
|
/**
|
|
* Gets the visual <tt>Component</tt> which depicts the local video
|
|
* being streamed to a specific <tt>CallPeer</tt>.
|
|
*
|
|
* @param peer the <tt>CallPeer</tt> to whom the local video which is to be
|
|
* depicted by the returned visual <tt>Component</tt> is being streamed
|
|
* @return a visual <tt>Component</tt> which depicts the local video being
|
|
* streamed to the specified <tt>CallPeer</tt> if this telephony chooses to
|
|
* carry out the creation synchronously; <tt>null</tt> if this telephony
|
|
* chooses to create the requested visual <tt>Component</tt> asynchronously
|
|
* @throws OperationFailedException if creating the component fails for
|
|
* whatever reason.
|
|
*/
|
|
public Component getLocalVisualComponent(CallPeer peer)
|
|
throws OperationFailedException;
|
|
|
|
/**
|
|
* Gets the visual/video <tt>Component</tt> available in this telephony for
|
|
* a specific <tt>CallPeer</tt>.
|
|
*
|
|
* @param peer the <tt>CallPeer</tt> whose video is to be retrieved
|
|
* @return the visual/video <tt>Component</tt> available in this telephony
|
|
* for the specified <tt>peer</tt> if any; otherwise, <tt>null</tt>
|
|
*/
|
|
@Deprecated
|
|
public Component getVisualComponent(CallPeer peer);
|
|
|
|
/**
|
|
* Gets the visual/video <tt>Component</tt>s available in this telephony for
|
|
* a specific <tt>CallPeer</tt>.
|
|
*
|
|
* @param peer the <tt>CallPeer</tt> whose videos are to be retrieved
|
|
* @return the visual/video <tt>Component</tt>s available in this telephony
|
|
* for the specified <tt>peer</tt>
|
|
*/
|
|
public List<Component> getVisualComponents(CallPeer peer);
|
|
|
|
/**
|
|
* Removes a specific <tt>VideoListener</tt> from this telephony in
|
|
* order to no longer have it receive notifications when visual/video
|
|
* <tt>Component</tt>s are being added and removed for a specific
|
|
* <tt>CallPeer</tt>.
|
|
*
|
|
* @param peer the <tt>CallPeer</tt> whose video the specified listener is
|
|
* to no longer be notified about
|
|
* @param listener the <tt>VideoListener</tt> to no longer be notified
|
|
* when visual/video <tt>Component</tt>s are being added or removed for
|
|
* <tt>peer</tt>
|
|
*/
|
|
public void removeVideoListener(CallPeer peer, VideoListener listener);
|
|
|
|
/**
|
|
* 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 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, boolean allowed)
|
|
throws OperationFailedException;
|
|
|
|
/**
|
|
* Gets 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 get the indicator of
|
|
* @return <tt>true</tt> if the streaming of local video for the specified
|
|
* <tt>Call</tt> is allowed; otherwise, <tt>false</tt>
|
|
*/
|
|
public boolean isLocalVideoAllowed(Call call);
|
|
|
|
/**
|
|
* The property which indicates whether a specific <tt>Call</tt> is
|
|
* currently streaming the local video (to a remote destination).
|
|
*/
|
|
public static final String LOCAL_VIDEO_STREAMING = "LOCAL_VIDEO_STREAMING";
|
|
|
|
/**
|
|
* Gets the indicator which determines whether a specific <tt>Call</tt>
|
|
* is currently streaming the local video (to a remote destination).
|
|
*
|
|
* @param call the <tt>Call</tt> to get the indicator of
|
|
* @return <tt>true</tt> if the specified <tt>Call</tt> is currently
|
|
* streaming the local video (to a remote destination); otherwise,
|
|
* <tt>false</tt>
|
|
*/
|
|
public boolean isLocalVideoStreaming(Call call);
|
|
|
|
/**
|
|
* Adds a specific <tt>PropertyChangeListener</tt> to the list of
|
|
* listeners which get notified when the properties (e.g.
|
|
* {@link #LOCAL_VIDEO_STREAMING}) associated with a specific
|
|
* <tt>Call</tt> change their values.
|
|
*
|
|
* @param call the <tt>Call</tt> to start listening to the changes of
|
|
* the property values of
|
|
* @param listener the <tt>PropertyChangeListener</tt> to be notified
|
|
* when the properties associated with the specified <tt>Call</tt> change
|
|
* their values
|
|
*/
|
|
public void addPropertyChangeListener(Call call,
|
|
PropertyChangeListener listener);
|
|
|
|
/**
|
|
* Removes a specific <tt>PropertyChangeListener</tt> from the list of
|
|
* listeners which get notified when the properties (e.g.
|
|
* {@link #LOCAL_VIDEO_STREAMING}) associated with a specific
|
|
* <tt>Call</tt> change their values.
|
|
*
|
|
* @param call the <tt>Call</tt> to stop listening to the changes of the
|
|
* property values of
|
|
* @param listener the <tt>PropertyChangeListener</tt> to no longer be
|
|
* notified when the properties associated with the specified <tt>Call</tt>
|
|
* change their values
|
|
*/
|
|
public void removePropertyChangeListener(Call call,
|
|
PropertyChangeListener listener);
|
|
|
|
/**
|
|
* 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.
|
|
* @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 CallParticipatn 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 sip address
|
|
* string.
|
|
*/
|
|
public Call createVideoCall(String uri)
|
|
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.
|
|
* @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 CallParticipatn 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)
|
|
throws OperationFailedException;
|
|
|
|
/**
|
|
* 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 qualityPreferences the quality preset we will use establishing
|
|
* the video call, and we will expect from the other side. When establishing
|
|
* call we don't have any indications whether remote part supports quality
|
|
* presets, so this setting can be ignored.
|
|
* @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 CallParticipatn 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 sip address
|
|
* string.
|
|
*/
|
|
public Call createVideoCall(String uri, QualityPreset qualityPreferences)
|
|
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 qualityPreferences the quality preset we will use establishing
|
|
* the video call, and we will expect from the other side. When establishing
|
|
* call we don't have any indications whether remote part supports quality
|
|
* presets, so this setting can be ignored.
|
|
* @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 CallParticipatn 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,
|
|
QualityPreset qualityPreferences)
|
|
throws OperationFailedException;
|
|
|
|
/**
|
|
* Indicates a user request to answer an incoming call with video enabled
|
|
* from the specified CallPeer.
|
|
* @param peer the call peer that we'd like to answer.
|
|
* @throws OperationFailedException with the corresponding code if we
|
|
* encounter an error while performing this operation.
|
|
*/
|
|
public void answerVideoCallPeer(CallPeer peer)
|
|
throws OperationFailedException;
|
|
|
|
/**
|
|
* Returns the quality control for video calls if any. It can be null if we
|
|
* were able to successfully determine that other party does not support it.
|
|
* @param peer the peer which this control operates on.
|
|
* @return the implemented quality control.
|
|
*/
|
|
public QualityControl getQualityControl(CallPeer peer);
|
|
|
|
/**
|
|
* Determines the <tt>ConferenceMember</tt> which is participating in a
|
|
* telephony conference with a specific <tt>CallPeer</tt> as its focus and
|
|
* which is sending a video content/RTP stream displayed in a specific
|
|
* visual <tt>Component</tt>.
|
|
*
|
|
* @param peer the <tt>CallPeer</tt> which is the conference focus of the
|
|
* telephony conference to be examined in order to locate the
|
|
* <tt>ConferenceMember</tt> which is sending the video content/RTP stream
|
|
* displayed in the specified <tt>visualComponent</tt>
|
|
* @param visualComponent the visual <tt>Component</tt> which displays the
|
|
* video content/RTP stream of the <tt>ConferenceMember</tt> to be located
|
|
* @return the <tt>ConferenceMember</tt>, if any, which is sending the video
|
|
* content/RTP stream displayed in the specific <tt>visualComponent</tt>
|
|
*/
|
|
public ConferenceMember getConferenceMember(
|
|
CallPeer peer,
|
|
Component visualComponent);
|
|
}
|