diff options
author | Tyler Gunn <tgunn@google.com> | 2015-05-06 08:52:27 -0700 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2015-05-06 08:52:27 -0700 |
commit | 4538216a31d15b01e18c7b504e51031da0ce6e40 (patch) | |
tree | 3ff5816a01518ff07b756edaaa89617344eaa514 /telecomm/java/android/telecom/VideoCallImpl.java | |
parent | d5304020b29762ce79d66c1ed3028b0ee30c68ad (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.java | 24 |
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) { } } |