101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee/*
201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Copyright (C) 2014 The Android Open Source Project
301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee *
401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Licensed under the Apache License, Version 2.0 (the "License");
501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * you may not use this file except in compliance with the License.
601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * You may obtain a copy of the License at
701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee *
801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee *      http://www.apache.org/licenses/LICENSE-2.0
901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee *
1001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * Unless required by applicable law or agreed to in writing, software
1101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * distributed under the License is distributed on an "AS IS" BASIS,
1201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * See the License for the specific language governing permissions and
1401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee * limitations under the License
1501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee */
1601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
1701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leepackage com.android.ims.internal;
1801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
1901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.Handler;
2001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.Looper;
2101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.Message;
2201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.os.RemoteException;
233ddaa6ec08d417d2848775ad3b5b01b865a9c891Tyler Gunnimport android.telecom.CameraCapabilities;
243ddaa6ec08d417d2848775ad3b5b01b865a9c891Tyler Gunnimport android.telecom.Connection;
253ddaa6ec08d417d2848775ad3b5b01b865a9c891Tyler Gunnimport android.telecom.VideoProfile;
2601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leeimport android.view.Surface;
2701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
2801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Leepublic abstract class ImsVideoCallProvider {
2901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_CALLBACK = 1;
3001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_CAMERA = 2;
3101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_PREVIEW_SURFACE = 3;
3201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_DISPLAY_SURFACE = 4;
3301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_DEVICE_ORIENTATION = 5;
3401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_ZOOM = 6;
3501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SEND_SESSION_MODIFY_REQUEST = 7;
3601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SEND_SESSION_MODIFY_RESPONSE = 8;
3701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_REQUEST_CAMERA_CAPABILITIES = 9;
3801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_REQUEST_CALL_DATA_USAGE = 10;
3901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private static final int MSG_SET_PAUSE_IMAGE = 11;
4001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
4101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private final ImsVideoCallProviderBinder mBinder;
4201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
4301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private IImsVideoCallCallback mCallback;
4401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
4501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    /**
4601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee     * Default handler used to consolidate binder method calls onto a single thread.
4701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee     */
4801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private final Handler mProviderHandler = new Handler(Looper.getMainLooper()) {
4901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        @Override
5001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void handleMessage(Message msg) {
5101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            switch (msg.what) {
5201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_CALLBACK:
5301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    mCallback = (IImsVideoCallCallback) msg.obj;
5401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
5501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_CAMERA:
5601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onSetCamera((String) msg.obj);
5701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
5801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_PREVIEW_SURFACE:
5901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onSetPreviewSurface((Surface) msg.obj);
6001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
6101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_DISPLAY_SURFACE:
6201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onSetDisplaySurface((Surface) msg.obj);
6301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
6401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_DEVICE_ORIENTATION:
6501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onSetDeviceOrientation(msg.arg1);
6601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
6701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_ZOOM:
6801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onSetZoom((Float) msg.obj);
6901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
7001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SEND_SESSION_MODIFY_REQUEST:
71ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad                    onSendSessionModifyRequest((VideoProfile) msg.obj);
7201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
7301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SEND_SESSION_MODIFY_RESPONSE:
74ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad                    onSendSessionModifyResponse((VideoProfile) msg.obj);
7501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
7601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_REQUEST_CAMERA_CAPABILITIES:
7701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onRequestCameraCapabilities();
7801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
7901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_REQUEST_CALL_DATA_USAGE:
8001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onRequestCallDataUsage();
8101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
8201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                case MSG_SET_PAUSE_IMAGE:
8301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    onSetPauseImage((String) msg.obj);
8401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
8501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                default:
8601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    break;
8701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
8801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
8901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    };
9001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
9101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    /**
9201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee     * IImsVideoCallProvider stub implementation.
9301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee     */
9401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    private final class ImsVideoCallProviderBinder extends IImsVideoCallProvider.Stub {
9501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setCallback(IImsVideoCallCallback callback) {
9601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_CALLBACK, callback).sendToTarget();
9701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
9801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
9901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setCamera(String cameraId) {
10001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_CAMERA, cameraId).sendToTarget();
10101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
10201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
10301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setPreviewSurface(Surface surface) {
10401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_PREVIEW_SURFACE, surface).sendToTarget();
10501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
10601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
10701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setDisplaySurface(Surface surface) {
10801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_DISPLAY_SURFACE, surface).sendToTarget();
10901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
11001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
11101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setDeviceOrientation(int rotation) {
11201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_DEVICE_ORIENTATION, rotation).sendToTarget();
11301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
11401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
11501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setZoom(float value) {
11601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_ZOOM, value).sendToTarget();
11701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
11801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
119ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad        public void sendSessionModifyRequest(VideoProfile requestProfile) {
12001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(
12101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    MSG_SEND_SESSION_MODIFY_REQUEST, requestProfile).sendToTarget();
12201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
12301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
124ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad        public void sendSessionModifyResponse(VideoProfile responseProfile) {
12501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(
12601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                    MSG_SEND_SESSION_MODIFY_RESPONSE, responseProfile).sendToTarget();
12701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
12801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
12901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void requestCameraCapabilities() {
13001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_REQUEST_CAMERA_CAPABILITIES).sendToTarget();
13101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
13201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
13301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void requestCallDataUsage() {
13401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_REQUEST_CALL_DATA_USAGE).sendToTarget();
13501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
13601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
13701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        public void setPauseImage(String uri) {
13801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            mProviderHandler.obtainMessage(MSG_SET_PAUSE_IMAGE, uri).sendToTarget();
13901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
14001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
14101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
14201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public ImsVideoCallProvider() {
14301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        mBinder = new ImsVideoCallProviderBinder();
14401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
14501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
14601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    /**
14701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee     * Returns binder object which can be used across IPC methods.
14801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee     */
14901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public final IImsVideoCallProvider getInterface() {
15001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        return mBinder;
15101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
15201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
153ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSetCamera */
15401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onSetCamera(String cameraId);
15501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
156ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSetPreviewSurface */
15701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onSetPreviewSurface(Surface surface);
15801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
159ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSetDisplaySurface */
16001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onSetDisplaySurface(Surface surface);
16101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
162ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSetDeviceOrientation */
16301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onSetDeviceOrientation(int rotation);
16401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
165ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSetZoom */
16601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onSetZoom(float value);
16701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
168ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSendSessionModifyRequest */
169ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    public abstract void onSendSessionModifyRequest(VideoProfile requestProfile);
17001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
171ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSendSessionModifyResponse */
172ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    public abstract void onSendSessionModifyResponse(VideoProfile responseProfile);
17301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
174ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onRequestCameraCapabilities */
17501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onRequestCameraCapabilities();
17601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
177ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onRequestCallDataUsage */
17801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onRequestCallDataUsage();
17901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
180ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#onSetPauseImage */
18101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public abstract void onSetPauseImage(String uri);
18201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
183ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#receiveSessionModifyRequest */
184ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    public void receiveSessionModifyRequest(VideoProfile VideoProfile) {
18501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        if (mCallback != null) {
18601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            try {
187ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad                mCallback.receiveSessionModifyRequest(VideoProfile);
18801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            } catch (RemoteException ignored) {
18901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
19001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
19101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
19201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
193ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#receiveSessionModifyResponse */
19401b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public void receiveSessionModifyResponse(
195ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad            int status, VideoProfile requestedProfile, VideoProfile responseProfile) {
19601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        if (mCallback != null) {
19701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            try {
19801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                mCallback.receiveSessionModifyResponse(status, requestedProfile, responseProfile);
19901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            } catch (RemoteException ignored) {
20001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
20101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
20201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
20301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
204ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#handleCallSessionEvent */
20501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public void handleCallSessionEvent(int event) {
20601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        if (mCallback != null) {
20701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            try {
20801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                mCallback.handleCallSessionEvent(event);
20901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            } catch (RemoteException ignored) {
21001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
21101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
21201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
21301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
214ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#changePeerDimensions */
21501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public void changePeerDimensions(int width, int height) {
21601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        if (mCallback != null) {
21701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            try {
21801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                mCallback.changePeerDimensions(width, height);
21901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            } catch (RemoteException ignored) {
22001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
22101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
22201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
22301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
224ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#changeCallDataUsage */
22501b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    public void changeCallDataUsage(int dataUsage) {
22601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        if (mCallback != null) {
22701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            try {
22801b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee                mCallback.changeCallDataUsage(dataUsage);
22901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            } catch (RemoteException ignored) {
23001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
23101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
23201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
23301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee
234ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    /** @see Connection.VideoProvider#changeCameraCapabilities */
235ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad    public void changeCameraCapabilities(CameraCapabilities CameraCapabilities) {
23601b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        if (mCallback != null) {
23701b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            try {
238ed7fbd60ee7f2d72d7bdf78718663774f526a1bcIhab Awad                mCallback.changeCameraCapabilities(CameraCapabilities);
23901b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            } catch (RemoteException ignored) {
24001b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee            }
24101b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee        }
24201b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee    }
24301b4ea445b5cdc6c1b32153d4f0216f429ede8afAndrew Lee}