SurfaceTexture 详解

SurfaceTexture是从Android3.0(API 11)加入的一个新类。SurfaceTexture用来捕获视频流(stream)中的图像帧(image frame)的,视频流能够是相机预览或者视频解码数据。SurfaceTexture能够做为android.hardware.camera二、MediaCodec、MediaPlayer、和 VideoDecode这些类的目标视频数据输出对象。android

SurfaceTexture和SurfaceView不一样的是,它对图像流的处理并不直接显示,而是转为OpenGL的外部纹理,所以可用于图像流数据的二次处理(如Camera滤镜,桌面特效等)。好比Camera的预览数据,能够经过SurfaceTexture交给TextureView做为View heirachy中的一个硬件加速层来显示。首先,SurfaceTexture从图像流(来自Camera预览,视频解码,GL绘制场景等)中得到帧数据,SurfaceTexture中有数据帧更新时,SurfaceTexture.OnFrameAvailableListener这个监听接口将会有回调,此时能够调用updateTexImage()方法从视频流数据中更新当前数据帧。并经过SurfaceTexture所绑定的OpenGL纹理对象来对其进行一些图像处理操做。ide