pull/123/head
FongMi 3 years ago
parent 01526069cc
commit 089cd664eb
  1. 28
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ISurfaceTextureHolder.java
  2. 24
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ISurfaceTextureHost.java
  3. 6
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java
  4. 9
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/SurfaceRenderView.java
  5. 43
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/TextureRenderView.java

@ -1,28 +0,0 @@
/*
* Copyright (C) 2015 Bilibili
* Copyright (C) 2015 Zhang Rui <bbcallen@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tv.danmaku.ijk.media.player;
import android.graphics.SurfaceTexture;
public interface ISurfaceTextureHolder {
void setSurfaceTexture(SurfaceTexture surfaceTexture);
SurfaceTexture getSurfaceTexture();
void setSurfaceTextureHost(ISurfaceTextureHost surfaceTextureHost);
}

@ -1,24 +0,0 @@
/*
* Copyright (C) 2015 Bilibili
* Copyright (C) 2015 Zhang Rui <bbcallen@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tv.danmaku.ijk.media.player;
import android.graphics.SurfaceTexture;
public interface ISurfaceTextureHost {
void releaseSurfaceTexture(SurfaceTexture surfaceTexture);
}

@ -323,11 +323,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
private void bindSurfaceHolder(IMediaPlayer mp, IRenderView.ISurfaceHolder holder) {
if (mp == null) return;
if (holder == null) {
mp.setDisplay(null);
return;
}
if (mp == null || holder == null) return;
holder.bindToMediaPlayer(mp);
}

@ -18,7 +18,6 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.ISurfaceTextureHolder;
public class SurfaceRenderView extends SurfaceView implements IRenderView {
@ -105,13 +104,7 @@ public class SurfaceRenderView extends SurfaceView implements IRenderView {
}
public void bindToMediaPlayer(IMediaPlayer mp) {
if (mp != null) {
if (mp instanceof ISurfaceTextureHolder) {
ISurfaceTextureHolder textureHolder = (ISurfaceTextureHolder) mp;
textureHolder.setSurfaceTexture(null);
}
mp.setDisplay(mSurfaceHolder);
}
mp.setDisplay(mSurfaceHolder);
}
@NonNull

@ -18,8 +18,6 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.ISurfaceTextureHolder;
import tv.danmaku.ijk.media.player.ISurfaceTextureHost;
public class TextureRenderView extends TextureView implements IRenderView {
@ -117,20 +115,7 @@ public class TextureRenderView extends TextureView implements IRenderView {
}
public void bindToMediaPlayer(IMediaPlayer mp) {
if (mp == null) return;
if (mp instanceof ISurfaceTextureHolder) {
ISurfaceTextureHolder textureHolder = (ISurfaceTextureHolder) mp;
mTextureView.mSurfaceCallback.setOwnSurfaceTexture(false);
SurfaceTexture surfaceTexture = textureHolder.getSurfaceTexture();
if (surfaceTexture != null) {
mTextureView.setSurfaceTexture(surfaceTexture);
} else {
textureHolder.setSurfaceTexture(mSurfaceTexture);
textureHolder.setSurfaceTextureHost(mTextureView.mSurfaceCallback);
}
} else {
mp.setSurface(openSurface());
}
mp.setSurface(openSurface());
}
@NonNull
@ -171,7 +156,7 @@ public class TextureRenderView extends TextureView implements IRenderView {
private SurfaceCallback mSurfaceCallback;
private static final class SurfaceCallback implements SurfaceTextureListener, ISurfaceTextureHost {
private static final class SurfaceCallback implements SurfaceTextureListener {
private SurfaceTexture mSurfaceTexture;
private boolean mIsFormatChanged;
@ -245,30 +230,6 @@ public class TextureRenderView extends TextureView implements IRenderView {
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
if (surfaceTexture == null) return;
if (mDidDetachFromWindow) {
if (surfaceTexture != mSurfaceTexture) {
surfaceTexture.release();
} else if (!mOwnSurfaceTexture) {
surfaceTexture.release();
}
} else if (mWillDetachFromWindow) {
if (surfaceTexture != mSurfaceTexture) {
surfaceTexture.release();
} else if (!mOwnSurfaceTexture) {
setOwnSurfaceTexture(true);
}
} else {
if (surfaceTexture != mSurfaceTexture) {
surfaceTexture.release();
} else if (!mOwnSurfaceTexture) {
setOwnSurfaceTexture(true);
}
}
}
private void willDetachFromWindow() {
mWillDetachFromWindow = true;
}

Loading…
Cancel
Save