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
 | |
| 		}
 | |
| 	}
 | |
| }
 |