@Override
    public void setSurface(Surface surface) {
        if (mScreenOnWhilePlaying && surface != null) {
            DebugLog.w(TAG,
                    "setScreenOnWhilePlaying(true) is ineffective for Surface");
        }
        mSurfaceHolder = null;
        _setVideoSurface(surface);
        updateSurfaceScreenOn();
    }
Sets the {@link Surface} to be used as the sink for the video portion of
the media. This is similar to {@link #setDisplay(SurfaceHolder)}, but
does not support {@link #setScreenOnWhilePlaying(boolean)}. Setting a
Surface will un-set any Surface or SurfaceHolder that was previously set.
A null surface will result in only the audio track being played.

If the Surface sends frames to a {@link SurfaceTexture}, the timestamps
returned from {@link SurfaceTexture#getTimestamp()} will have an
unspecified zero point. These timestamps cannot be directly compared
between different media sources, different instances of the same media
source, or multiple runs of the same program. The timestamp is normally
monotonically increasing and is unaffected by time-of-day adjustments,
but it is reset when the position is set.

@param surface
           The {@link Surface} to be used for the video portion of the
           media.
IjkPlayerDemo/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java