summaryrefslogtreecommitdiff
path: root/telecomm/java/android/telecom/VideoCallImpl.java
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2015-05-06 08:52:27 -0700
committerTyler Gunn <tgunn@google.com>2015-05-06 08:52:27 -0700
commit4538216a31d15b01e18c7b504e51031da0ce6e40 (patch)
tree3ff5816a01518ff07b756edaaa89617344eaa514 /telecomm/java/android/telecom/VideoCallImpl.java
parentd5304020b29762ce79d66c1ed3028b0ee30c68ad (diff)
Change sendSessionModifyRequest VideoProvider API signature.
Including a fromProfile in addition to the requestedProfile. - Changed VideoCallImpl to generate the fromVideoProfile based on the call's current videoState. This ensures the InCall UI only needs to pass in the new video profile; the VideoCall Impl already has enough knowledge to generate the fromProfile. - Changed VideoCallImpl to track the current videoQuality, which forms a part of the fromVideoProfile. Bug: 20704229 Change-Id: I89f293f03a2b13fc8c1dcfd8a07ab8640d3950e0
Diffstat (limited to 'telecomm/java/android/telecom/VideoCallImpl.java')
-rw-r--r--telecomm/java/android/telecom/VideoCallImpl.java24
1 files changed, 21 insertions, 3 deletions
diff --git a/telecomm/java/android/telecom/VideoCallImpl.java b/telecomm/java/android/telecom/VideoCallImpl.java
index 7a82c1bb3e3d..331f57ed8a54 100644
--- a/telecomm/java/android/telecom/VideoCallImpl.java
+++ b/telecomm/java/android/telecom/VideoCallImpl.java
@@ -40,6 +40,8 @@ public class VideoCallImpl extends VideoCall {
private final IVideoProvider mVideoProvider;
private final VideoCallListenerBinder mBinder;
private VideoCall.Callback mCallback;
+ private int mVideoQuality = VideoProfile.QUALITY_UNKNOWN;
+ private Call mCall;
private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
@Override
@@ -161,6 +163,7 @@ public class VideoCallImpl extends VideoCall {
(CameraCapabilities) msg.obj);
break;
case MSG_CHANGE_VIDEO_QUALITY:
+ mVideoQuality = msg.arg1;
mCallback.onVideoQualityChanged(msg.arg1);
break;
default:
@@ -171,12 +174,13 @@ public class VideoCallImpl extends VideoCall {
private Handler mHandler;
- VideoCallImpl(IVideoProvider videoProvider) throws RemoteException {
+ VideoCallImpl(IVideoProvider videoProvider, Call call) throws RemoteException {
mVideoProvider = videoProvider;
mVideoProvider.asBinder().linkToDeath(mDeathRecipient, 0);
mBinder = new VideoCallListenerBinder();
mVideoProvider.addVideoCallback(mBinder);
+ mCall = call;
}
public void destroy() {
@@ -251,10 +255,24 @@ public class VideoCallImpl extends VideoCall {
}
}
- /** {@inheritDoc} */
+ /**
+ * Sends a session modification request to the video provider.
+ * <p>
+ * The {@link InCallService} will create the {@code requestProfile} based on the current
+ * video state (i.e. {@link Call.Details#getVideoState()}). It is, however, possible that the
+ * video state maintained by the {@link InCallService} could get out of sync with what is known
+ * by the {@link android.telecom.Connection.VideoProvider}. To remove ambiguity, the
+ * {@link VideoCallImpl} passes along the pre-modify video profile to the {@code VideoProvider}
+ * to ensure it has full context of the requested change.
+ *
+ * @param requestProfile The requested video profile.
+ */
public void sendSessionModifyRequest(VideoProfile requestProfile) {
try {
- mVideoProvider.sendSessionModifyRequest(requestProfile);
+ VideoProfile originalProfile = new VideoProfile(mCall.getDetails().getVideoState(),
+ mVideoQuality);
+
+ mVideoProvider.sendSessionModifyRequest(originalProfile, requestProfile);
} catch (RemoteException e) {
}
}