//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
            //ORIGINAL LINE: public void addRenderCallback(@NonNull IRenderCallback callback)
            public void addRenderCallback(IRenderView_IRenderCallback callback)
            {
                mRenderCallbackMap[callback] = callback;

                IRenderView_ISurfaceHolder surfaceHolder = null;

                if (mSurfaceTexture != null)
                {
                    if (surfaceHolder == null)
                    {
                        TextureRenderView texture = null;
                        mWeakRenderView.TryGetTarget(out texture);
                        surfaceHolder = new InternalSurfaceHolder(texture, mSurfaceTexture, this);
                    }
                    callback.onSurfaceCreated(surfaceHolder, mWidth, mHeight);
                }

                if (mIsFormatChanged)
                {
                    if (surfaceHolder == null)
                    {
                        TextureRenderView texture = null;
                        mWeakRenderView.TryGetTarget(out texture);
                        surfaceHolder = new InternalSurfaceHolder(texture, mSurfaceTexture, this);
                    }
                    callback.onSurfaceChanged(surfaceHolder, 0, mWidth, mHeight);
                }
            }
Example #2
0
            //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
            //ORIGINAL LINE: public void addRenderCallback(@NonNull IRenderCallback callback)
            public void AddRenderCallback(IRenderView_IRenderCallback callback)
            {
                mRenderCallbackMap[callback] = callback;

                IRenderView_ISurfaceHolder surfaceHolder = null;

                if (mSurfaceHolder != null)
                {
                    if (surfaceHolder == null)
                    {
                        SurfaceRenderView t = null;
                        mWeakSurfaceView.TryGetTarget(out t);
                        surfaceHolder = new InternalSurfaceHolder(t, mSurfaceHolder);
                    }
                    callback.onSurfaceCreated(surfaceHolder, mWidth, mHeight);
                }

                if (mIsFormatChanged)
                {
                    if (surfaceHolder == null)
                    {
                        SurfaceRenderView t = null;
                        mWeakSurfaceView.TryGetTarget(out t);
                        surfaceHolder = new InternalSurfaceHolder(t, mSurfaceHolder);
                    }
                    callback.onSurfaceChanged(surfaceHolder, mFormat, mWidth, mHeight);
                }
            }
            //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
            //ORIGINAL LINE: public void onSurfaceDestroyed(@NonNull IRenderView.ISurfaceHolder holder)
            public void onSurfaceDestroyed(IRenderView_ISurfaceHolder holder)
            {
                if (holder.RenderView != outerInstance.mRenderView)
                {
                    Log.Error(outerInstance.TAG, "onSurfaceDestroyed: unmatched render callback\n");
                    return;
                }

                // after we return from this we can't use the surface any more
                outerInstance.mSurfaceHolder = null;
                // REMOVED: if (mMediaController != null) mMediaController.hide();
                // REMOVED: release(true);
                outerInstance.releaseWithoutStop();
            }
        // REMOVED: mSHCallback
        private void bindSurfaceHolder(IMediaPlayer mp, IRenderView_ISurfaceHolder holder)
        {
            if (mp == null)
            {
                return;
            }

            if (holder == null)
            {
                mp.SetDisplay(null);
                return;
            }

            holder.bindToMediaPlayer(mp);
        }
            //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
            //ORIGINAL LINE: public void onSurfaceCreated(@NonNull IRenderView.ISurfaceHolder holder, int width, int height)
            public void onSurfaceCreated(IRenderView_ISurfaceHolder holder, int width, int height)
            {
                if (holder.RenderView != outerInstance.mRenderView)
                {
                    Log.Error(outerInstance.TAG, "onSurfaceCreated: unmatched render callback\n");
                    return;
                }

                outerInstance.mSurfaceHolder = holder;
                if (outerInstance.mMediaPlayer != null)
                {
                    outerInstance.bindSurfaceHolder(outerInstance.mMediaPlayer, holder);
                }
                else
                {
                    outerInstance.openVideo();
                }
            }
            //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
            //ORIGINAL LINE: public void onSurfaceChanged(@NonNull IRenderView.ISurfaceHolder holder, int format, int w, int h)
            public void onSurfaceChanged(IRenderView_ISurfaceHolder holder, int format, int w, int h)
            {
                if (holder.RenderView != outerInstance.mRenderView)
                {
                    Log.Error(outerInstance.TAG, "onSurfaceChanged: unmatched render callback\n");
                    return;
                }

                outerInstance.mSurfaceWidth  = w;
                outerInstance.mSurfaceHeight = h;
                bool isValidState = (outerInstance.mTargetState == STATE_PLAYING);
                bool hasValidSize = !outerInstance.mRenderView.shouldWaitForResize() || (outerInstance.mVideoWidth == w && outerInstance.mVideoHeight == h);

                if (outerInstance.mMediaPlayer != null && isValidState && hasValidSize)
                {
                    if (outerInstance.mSeekWhenPrepared != 0)
                    {
                        outerInstance.SeekTo((int)outerInstance.mSeekWhenPrepared);
                    }
                    outerInstance.Start();
                }
            }