forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
package tech.kinc
 | 
						|
 | 
						|
import android.graphics.SurfaceTexture
 | 
						|
import android.graphics.SurfaceTexture.OnFrameAvailableListener
 | 
						|
import android.opengl.GLES20
 | 
						|
 | 
						|
class KincMovieTexture: OnFrameAvailableListener {
 | 
						|
	private val GL_TEXTURE_EXTERNAL_OES: Int = 0x8D65
 | 
						|
 | 
						|
	var textureId: Int = 0
 | 
						|
 | 
						|
	init {
 | 
						|
		val textures = IntArray(1)
 | 
						|
		GLES20.glGenTextures(1, textures, 0)
 | 
						|
		textureId = textures[0]
 | 
						|
 | 
						|
		GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, textureId)
 | 
						|
		GLES20.glTexParameteri(
 | 
						|
			GL_TEXTURE_EXTERNAL_OES,
 | 
						|
			GLES20.GL_TEXTURE_MIN_FILTER,
 | 
						|
			GLES20.GL_NEAREST
 | 
						|
		)
 | 
						|
		GLES20.glTexParameteri(
 | 
						|
			GL_TEXTURE_EXTERNAL_OES,
 | 
						|
			GLES20.GL_TEXTURE_MAG_FILTER,
 | 
						|
			GLES20.GL_LINEAR
 | 
						|
		)
 | 
						|
		GLES20.glTexParameteri(
 | 
						|
			GL_TEXTURE_EXTERNAL_OES,
 | 
						|
			GLES20.GL_TEXTURE_WRAP_S,
 | 
						|
			GLES20.GL_CLAMP_TO_EDGE
 | 
						|
		)
 | 
						|
		GLES20.glTexParameteri(
 | 
						|
			GL_TEXTURE_EXTERNAL_OES,
 | 
						|
			GLES20.GL_TEXTURE_WRAP_T,
 | 
						|
			GLES20.GL_CLAMP_TO_EDGE
 | 
						|
		)
 | 
						|
	}
 | 
						|
 | 
						|
	var surfaceTexture = SurfaceTexture(textureId)
 | 
						|
 | 
						|
	init {
 | 
						|
		surfaceTexture.setOnFrameAvailableListener(this)
 | 
						|
	}
 | 
						|
 | 
						|
	private var updateTexture = false
 | 
						|
 | 
						|
	fun update(): Boolean {
 | 
						|
		val ret = updateTexture
 | 
						|
		if (updateTexture) {
 | 
						|
			surfaceTexture.updateTexImage()
 | 
						|
			updateTexture = false
 | 
						|
		}
 | 
						|
		return ret
 | 
						|
	}
 | 
						|
	
 | 
						|
	override fun onFrameAvailable(surface: SurfaceTexture) {
 | 
						|
		if (surfaceTexture == surface) {
 | 
						|
			updateTexture = true
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |