Skip to content

Commit 7e07a7e

Browse files
authored
Merge pull request #412 from HaishinKit/feature/textureid
Added a string ID for managing ScreenObject.
2 parents 29071e7 + 6f452a2 commit 7e07a7e

File tree

18 files changed

+108
-44
lines changed

18 files changed

+108
-44
lines changed

app/src/main/java/com/haishinkit/app/CameraViewModel.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import android.graphics.Bitmap
88
import android.graphics.BitmapFactory
99
import android.graphics.Rect
1010
import android.provider.MediaStore
11-
import android.util.Log
1211
import androidx.core.net.toUri
1312
import androidx.lifecycle.AndroidViewModel
1413
import androidx.lifecycle.DefaultLifecycleObserver

haishinkit/src/main/java/com/haishinkit/gles/PixelTransform.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ internal class PixelTransform(
160160
video.videoSize = Size(screen.frame.width(), screen.frame.height())
161161
}
162162
if (video.shouldInvalidateLayout) {
163-
video.id = screen.id
163+
video.textureId = screen.textureId
164164
video.layout(renderer)
165165
}
166166
program?.use()

haishinkit/src/main/java/com/haishinkit/gles/Program.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ internal class Program(
8989
GLES20.glUniformMatrix4fv(mvpMatrixHandle, 1, false, screenObject.matrix, 0)
9090
Utils.checkGlError("glUniformMatrix4fv")
9191

92-
GLES20.glBindTexture(screenObject.target, screenObject.id)
92+
GLES20.glBindTexture(screenObject.target, screenObject.textureId)
9393
Utils.checkGlError("glBindTexture")
9494

9595
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4)

haishinkit/src/main/java/com/haishinkit/gles/screen/Renderer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ internal class Renderer(
4545

4646
is ImageScreenObject -> {
4747
val bitmap = screenObject.bitmap ?: return
48-
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, screenObject.id)
48+
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, screenObject.textureId)
4949
Utils.checkGlError("glBindTexture")
5050
GLES20.glPixelStorei(GLES20.GL_UNPACK_ALIGNMENT, 1)
5151
Utils.checkGlError("glPixelStorei")

haishinkit/src/main/java/com/haishinkit/gles/screen/Screen.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ internal class Screen(
2727

2828
private var textureIds = intArrayOf(0)
2929

30-
override var id: Int
30+
override var textureId: Int
3131
get() = framebuffer.textureId
3232
set(value) {
3333
}
@@ -56,27 +56,27 @@ internal class Screen(
5656
is VideoScreenObject -> {
5757
val track = screenObject.track
5858
videoTextureRegistry.getTextureIdByTrack(track)?.let { id ->
59-
screenObject.id = id
59+
screenObject.textureId = id
6060
}
6161
}
6262

6363
else -> {
6464
GLES20.glGenTextures(1, textureIds, 0)
65-
screenObject.id = textureIds[0]
65+
screenObject.textureId = textureIds[0]
6666
}
6767
}
6868
}
6969

7070
override fun unbind(screenObject: ScreenObject) {
7171
when (screenObject) {
7272
is VideoScreenObject -> {
73-
screenObject.id = 0
73+
screenObject.textureId = 0
7474
}
7575

7676
else -> {
77-
textureIds[0] = screenObject.id
77+
textureIds[0] = screenObject.textureId
7878
GLES20.glDeleteTextures(1, textureIds, 0)
79-
screenObject.id = 0
79+
screenObject.textureId = 0
8080
}
8181
}
8282
}
@@ -90,9 +90,9 @@ internal class Screen(
9090
} else {
9191
videoTextureRegistry.register(track, video)
9292
videoTextureRegistry.getTextureIdByTrack(track)?.let { id ->
93-
getScreenObjects(VideoScreenObject::class.java).forEach {
93+
findByClass(VideoScreenObject::class.java).forEach {
9494
if (it.track == track) {
95-
it.id = id
95+
it.textureId = id
9696
it.videoSize = video.videoSize
9797
it.imageOrientation = video.imageOrientation
9898
}

haishinkit/src/main/java/com/haishinkit/gles/screen/ThreadScreen.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ internal class ThreadScreen(
2121
return screen.graphicsContext
2222
}
2323

24-
override var id: Int
25-
get() = screen.id
24+
override var textureId: Int
25+
get() = screen.textureId
2626
set(value) {
2727
}
2828

@@ -138,9 +138,15 @@ internal class ThreadScreen(
138138
}
139139
}
140140

141-
override fun <T : ScreenObject> getScreenObjects(clazz: Class<T>): List<T> {
141+
override fun <T : ScreenObject> findByClass(clazz: Class<T>): List<T> {
142142
return handler.run {
143-
screen.getScreenObjects(clazz)
143+
screen.findByClass(clazz)
144+
}
145+
}
146+
147+
override fun findById(targetId: String): ScreenObject? {
148+
return handler.run {
149+
screen.findById(targetId)
144150
}
145151
}
146152

haishinkit/src/main/java/com/haishinkit/media/MediaMixer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class MediaMixer(
8989
val windowManager =
9090
context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
9191
windowManager.defaultDisplay?.orientation?.let { orientation ->
92-
screen.getScreenObjects(VideoScreenObject::class.java).forEach {
92+
screen.findByClass(VideoScreenObject::class.java).forEach {
9393
it.deviceOrientation = orientation
9494
}
9595
}
@@ -145,7 +145,7 @@ class MediaMixer(
145145
track: Int,
146146
videoEffect: VideoEffect,
147147
) {
148-
screen.getScreenObjects(VideoScreenObject::class.java).forEach {
148+
screen.findByClass(VideoScreenObject::class.java).forEach {
149149
if (it.track == track) {
150150
it.videoEffect = videoEffect
151151
}

haishinkit/src/main/java/com/haishinkit/screen/ImageScreenObject.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import java.io.ByteArrayOutputStream
88
/**
99
* An object that manages offscreen rendering an image source.
1010
*/
11-
open class ImageScreenObject : ScreenObject() {
11+
open class ImageScreenObject(
12+
id: String? = null,
13+
) : ScreenObject(id) {
1214
private interface Keys {
1315
companion object {
1416
const val BITMAP: String = "bitmap"

haishinkit/src/main/java/com/haishinkit/screen/MediaOutputScreenObject.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import java.lang.ref.WeakReference
2929
@Suppress("UNUSED")
3030
class MediaOutputScreenObject(
3131
context: Context,
32-
) : VideoScreenObject(),
32+
id: String? = null,
33+
) : VideoScreenObject(id),
3334
MediaOutput {
3435
override var type: String = "media"
3536

haishinkit/src/main/java/com/haishinkit/screen/NullScreenObject.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.haishinkit.screen
22

3-
internal class NullScreenObject : ScreenObject() {
3+
internal class NullScreenObject(
4+
id: String? = null,
5+
) : ScreenObject(id) {
46
override val type: String = TYPE
57

68
override var elements: Map<String, String>

0 commit comments

Comments
 (0)