예제 #1
0
        public void OnPeerFactoryCreated(IPeerConnectionFactory factory)
        {
            var androidFactory = (IPeerConnectionFactoryAndroid)factory.NativeObject;

            PipScreenRenderer.Init(androidFactory.EglBaseContext, null);
            FullScreenRenderer.Init(androidFactory.EglBaseContext, null);
        }
예제 #2
0
        void SetActivity()
        {
            CallPageActivity = this.Context as Activity;
            CallView         = CallPageActivity.LayoutInflater.Inflate(Resource.Layout.activity_call, this, false);

            FullScreenRenderer = CallView.FindViewById <SurfaceViewRenderer>(Resource.Id.fullscreen_video_view);
            PipScreenRenderer  = CallView.FindViewById <SurfaceViewRenderer>(Resource.Id.pip_video_view);

            CallFragment = CreateCallFragment(CallPageActivity.Intent);

            LocalVideoRenderer  = new VideoRendererProxy();
            RemoteVideoRenderer = new VideoRendererProxy();

            PipScreenRenderer.Click += PipScreenRenderer_Click;
            PipScreenRenderer.SetScalingType(RendererCommon.ScalingType.ScaleAspectFit);
            PipScreenRenderer.SetZOrderMediaOverlay(true);
            PipScreenRenderer.SetEnableHardwareScaler(true);


            FullScreenRenderer.Click += FullScreenRenderer_Click;
            FullScreenRenderer.SetScalingType(RendererCommon.ScalingType.ScaleAspectFill);
            FullScreenRenderer.SetEnableHardwareScaler(false);


            SetSwappedFeeds(true);

            var fragmentTransaction = MainActivity.Instance.SupportFragmentManager.BeginTransaction();

            fragmentTransaction.Add(Resource.Id.call_fragment_container, CallFragment);
            fragmentTransaction.Commit();

            CallController = CreateController();
            Connect(CallController, CallPageActivity.Intent);
        }
예제 #3
0
 private void SetSwappedFeeds(bool isSwappedFeed)
 {
     IsSwappedFeed = isSwappedFeed;
     LocalVideoRenderer.Renderer  = IsSwappedFeed ? FullScreenRenderer : PipScreenRenderer;
     RemoteVideoRenderer.Renderer = IsSwappedFeed ? PipScreenRenderer : FullScreenRenderer;
     FullScreenRenderer.SetMirror(isSwappedFeed);
     PipScreenRenderer.SetMirror(!isSwappedFeed);
 }
예제 #4
0
        private void Disconnect()
        {
            CallController?.Disconnect();
            CallController = null;
            PipScreenRenderer?.Release();
            PipScreenRenderer = null;
            FullScreenRenderer?.Release();
            FullScreenRenderer = null;

            CallPageActivity?.Finish();
        }