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