android.graphics.SurfaceTexture#release ( )源码实例Demo

下面列出了android.graphics.SurfaceTexture#release ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: AutoplayVideos   文件: AAH_CustomVideoView.java
@Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
//        Log.d("k9k9", "onSurfaceTextureDestroyed: ");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            //pre lollipop needs SurfaceTexture it owns before calling onDetachedFromWindow super
            surface.release();
        }
        if (mMediaPlayer != null) {
            mMediaPlayer.stop();
            mMediaPlayer.release();
            mMediaPlayer = null;
        }

        try {
            showThumb.call();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return true;
    }
 
源代码2 项目: Mrthumb   文件: ReleasePlayerTask.java
@Override
protected Object doInBackground(Object[] objects) {
    LogUtil.d("ReleasePlayerTask doInBackground");
    AudioManager audioManager = audioManagerWeakReference.get();
    if (audioManager != null) {
        audioManager.abandonAudioFocus(null);
        audioManagerWeakReference.clear();
        audioManagerWeakReference = null;
        LogUtil.d("ReleasePlayerTask release audioManager");
    }
    IMediaPlayer iMediaPlayer = mediaPlayerWeakReference.get();
    if (iMediaPlayer != null) {
        iMediaPlayer.release();
        mediaPlayerWeakReference.clear();
        mediaPlayerWeakReference = null;
        LogUtil.d("ReleasePlayerTask release iMediaPlayer");
    }
    SurfaceTexture surfaceTexture = surfaceTextureWeakReference.get();
    if (surfaceTexture != null) {
        surfaceTexture.release();
        surfaceTextureWeakReference.clear();
        surfaceTextureWeakReference = null;
        LogUtil.d("ReleasePlayerTask release surfaceTexture");
    }
    Surface surface = surfaceWeakReference.get();
    if (surface != null) {
        surface.release();
        surfaceWeakReference.clear();
        surfaceWeakReference = null;
        LogUtil.d("ReleasePlayerTask release surface");
    }
    return null;
}
 
源代码3 项目: ShareBox   文件: TextureRenderView.java
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
    if (surfaceTexture == null) {
        Log.d(TAG, "releaseSurfaceTexture: null");
    } else if (mDidDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release detached SurfaceTexture");
            surfaceTexture.release();
        } else {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): already released by TextureView");
        }
    } else if (mWillDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): will released by TextureView");
        }
    } else {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: alive: will released by TextureView");
        }
    }
}
 
源代码4 项目: WliveTV   文件: TextureRenderView.java
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
    if (surfaceTexture == null) {
        Log.d(TAG, "releaseSurfaceTexture: null");
        return;
    } else if (mDidDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTecture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release detached SurfaceTexture");
            surfaceTexture.release();
        } else {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): already released by TextureView");
        }
    } else if (mWillDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTecture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): will released by TextureView");
        }
    } else {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTecture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: alive: will released by TextureView");
        }
    }
}
 
源代码5 项目: TvPlayer   文件: TextureRenderView.java
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
    if (surfaceTexture == null) {
        Log.d(TAG, "releaseSurfaceTexture: null");
        return;
    } else if (mDidDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTecture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release detached SurfaceTexture");
            surfaceTexture.release();
        } else {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): already released by TextureView");
        }
    } else if (mWillDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTecture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): will released by TextureView");
        }
    } else {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTecture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: alive: will released by TextureView");
        }
    }
}
 
源代码6 项目: MVideo   文件: TextureRenderView.java
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
    if (surfaceTexture == null) {
        Log.d(TAG, "releaseSurfaceTexture: null");
    } else if (mDidDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release detached SurfaceTexture");
            surfaceTexture.release();
        } else {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): already released by TextureView");
        }
    } else if (mWillDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): will released by TextureView");
        }
    } else {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: alive: will released by TextureView");
        }
    }
}
 
源代码7 项目: talk-android   文件: TextureRenderView.java
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
    if (surfaceTexture == null) {
        Log.d(TAG, "releaseSurfaceTexture: null");
        return;
    } else if (mDidDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release detached SurfaceTexture");
            surfaceTexture.release();
        } else {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): already released by TextureView");
        }
    } else if (mWillDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): will released by TextureView");
        }
    } else {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: alive: will released by TextureView");
        }
    }
}
 
@Override
protected void onDetachedFromWindow() {
    mRenderThread.dispose();
    super.onDetachedFromWindow();
    final SurfaceTexture surfaceTexture = getSurfaceTexture();
    if (surfaceTexture != null) {
        surfaceTexture.release();
    }
}
 
源代码9 项目: no-player   文件: PlayerViewSurfaceHolder.java
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    setSurfaceNotReady();
    surface.release();
    callbacks.clear();
    return true;
}
 
源代码10 项目: BlogDemo   文件: ListPlayAdapter.java
@Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
  if (mPlayer != null) {
    mPlayer.stop();
  }
  surface.release();
  mPlayer = null;
  return true;
}
 
源代码11 项目: sketch   文件: GifTextureView.java
@Override
protected void onDetachedFromWindow() {
	mRenderThread.dispose(this, null);
	super.onDetachedFromWindow();
	final SurfaceTexture surfaceTexture = getSurfaceTexture();
	if (surfaceTexture != null) {
		surfaceTexture.release();
	}
}
 
源代码12 项目: ZZShow   文件: TextureRenderView.java
@Override
public void releaseSurfaceTexture(SurfaceTexture surfaceTexture) {
    if (surfaceTexture == null) {
        Log.d(TAG, "releaseSurfaceTexture: null");
    } else if (mDidDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): release detached SurfaceTexture");
            surfaceTexture.release();
        } else {
            Log.d(TAG, "releaseSurfaceTexture: didDetachFromWindow(): already released by TextureView");
        }
    } else if (mWillDetachFromWindow) {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: willDetachFromWindow(): will released by TextureView");
        }
    } else {
        if (surfaceTexture != mSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: release different SurfaceTexture");
            surfaceTexture.release();
        } else if (!mOwnSurfaceTexture) {
            Log.d(TAG, "releaseSurfaceTexture: alive: re-attach SurfaceTexture to TextureView");
            setOwnSurfaceTexture(true);
        } else {
            Log.d(TAG, "releaseSurfaceTexture: alive: will released by TextureView");
        }
    }
}
 
源代码13 项目: ExoMedia   文件: ExoTextureVideoView.java
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
    delegate.onSurfaceDestroyed();
    surfaceTexture.release();

    return true;
}
 
@CalledByNative
private static void destroy(SurfaceTexture surfaceTexture) {
    surfaceTexture.setOnFrameAvailableListener(null);
    surfaceTexture.release();
}
 
@Override
public void run() {
    while (true) {
        SurfaceTexture surfaceTexture = null;

        // Latch the SurfaceTexture when it becomes available.  We have to wait for
        // the TextureView to create it.
        synchronized (mLock) {
            while (!mDone && (surfaceTexture = mSurfaceTexture) == null) {
                try {
                    mLock.wait();
                } catch (InterruptedException ie) {
                    throw new RuntimeException(ie);     // not expected
                }
            }
            if (mDone) {
                break;
            }
        }
        Log.d(TAG, "Got surfaceTexture=" + surfaceTexture);

        // Create an EGL surface for our new SurfaceTexture.  We're not on the same
        // thread as the SurfaceTexture, which is a concern for the *consumer*, which
        // wants to call updateTexImage().  Because we're the *producer*, i.e. the
        // one generating the frames, we don't need to worry about being on the same
        // thread.
        mEglCore = new EglCore(null, EglCore.FLAG_TRY_GLES3);
        WindowSurface windowSurface = new WindowSurface(mEglCore, mSurfaceTexture);
        windowSurface.makeCurrent();

        // Render frames until we're told to stop or the SurfaceTexture is destroyed.
        doAnimation(windowSurface);

        windowSurface.release();
        mEglCore.release();
        if (!sReleaseInCallback) {
            Log.i(TAG, "Releasing SurfaceTexture in renderer thread");
            surfaceTexture.release();
        }
    }

    Log.d(TAG, "Renderer thread exiting");
}
 
源代码16 项目: grafika   文件: TextureViewGLActivity.java
@Override
public void run() {
    while (true) {
        SurfaceTexture surfaceTexture = null;

        // Latch the SurfaceTexture when it becomes available.  We have to wait for
        // the TextureView to create it.
        synchronized (mLock) {
            while (!mDone && (surfaceTexture = mSurfaceTexture) == null) {
                try {
                    mLock.wait();
                } catch (InterruptedException ie) {
                    throw new RuntimeException(ie);     // not expected
                }
            }
            if (mDone) {
                break;
            }
        }
        Log.d(TAG, "Got surfaceTexture=" + surfaceTexture);

        // Create an EGL surface for our new SurfaceTexture.  We're not on the same
        // thread as the SurfaceTexture, which is a concern for the *consumer*, which
        // wants to call updateTexImage().  Because we're the *producer*, i.e. the
        // one generating the frames, we don't need to worry about being on the same
        // thread.
        mEglCore = new EglCore(null, EglCore.FLAG_TRY_GLES3);
        WindowSurface windowSurface = new WindowSurface(mEglCore, mSurfaceTexture);
        windowSurface.makeCurrent();

        // Render frames until we're told to stop or the SurfaceTexture is destroyed.
        doAnimation(windowSurface);

        windowSurface.release();
        mEglCore.release();
        if (!sReleaseInCallback) {
            Log.i(TAG, "Releasing SurfaceTexture in renderer thread");
            surfaceTexture.release();
        }
    }

    Log.d(TAG, "Renderer thread exiting");
}
 
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
  surface.release();
  mSurface = null;
  return true;
}
 
源代码18 项目: ExoMedia   文件: NativeTextureVideoView.java
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    surface.release();
    suspend();
    return true;
}
 
源代码19 项目: UVCCameraZxing   文件: RendererHolder.java
@Override
public void run() {
	if (DEBUG) Log.v(TAG, "start:threadid=" + Thread.currentThread().getId());
	mMasterEgl = new EGLBase(EGL14.EGL_NO_CONTEXT, false, false);
   	mDummySurface = mMasterEgl.createOffscreen(2, 2);
	mDummySurface.makeCurrent();
	mTexId = GLDrawer2D.initTex();
	mMasterTexture = new SurfaceTexture(mTexId);
	mSurface = new Surface(mMasterTexture);
	mMasterTexture.setOnFrameAvailableListener(mOnFrameAvailableListener);
	if (mCallback != null) {
		mCallback.onCreate(mSurface);
	}
	synchronized (mSync) {
		mMasterTexture.setDefaultBufferSize(mFrameWidth, mFrameHeight);
		isRunning = true;
		mSync.notifyAll();
		for ( ; isRunning ; ) {
			if (requestResize) {
				requestResize = false;
				if ((mRequestWidth > 0) && (mRequestHeight > 0)
					&& ((mFrameWidth != mRequestWidth) || (mFrameHeight != mRequestHeight))) {
					mFrameWidth = mRequestWidth;
					mFrameHeight = mRequestHeight;
					mMasterTexture.setDefaultBufferSize(mFrameWidth, mFrameHeight);
				}
			}
			if (requestDraw) {
				requestDraw = false;
				draw();
			} else {
				try {
					mSync.wait();
				} catch (final InterruptedException e) {
					break;
				}
			}
		}
	}
	if (DEBUG) Log.v(TAG, "finishing");
	if (mCallback != null) {
		mCallback.onDestroy();
	}
	release();
	mSurface = null;
	mMasterTexture.release();
	mMasterTexture = null;
	GLDrawer2D.deleteTex(mTexId);
	mDummySurface.release();
	mDummySurface = null;
	mMasterEgl.release();
	mMasterEgl = null;
	if (DEBUG) Log.v(TAG, "finished");
}
 
源代码20 项目: JieCaoVideoPlayer-develop   文件: JCVideoPlayer.java
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    surface.release();
    return true;
}