Skip to content

Commit 7452876

Browse files
committed
feat: move pixel perfect option to VideoPlayer class
1 parent bf2b6c5 commit 7452876

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

src/main/kotlin/dev/silenium/multimedia/compose/player/VideoPlayer.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package dev.silenium.multimedia.compose.player
22

3-
import androidx.compose.runtime.Composable
4-
import androidx.compose.runtime.State
3+
import androidx.compose.runtime.*
54
import dev.silenium.compose.gl.surface.GLDrawScope
65
import dev.silenium.compose.gl.surface.GLSurface
76
import dev.silenium.compose.gl.surface.GLSurfaceState
@@ -14,6 +13,12 @@ import kotlin.time.Duration
1413
import kotlin.time.Duration.Companion.seconds
1514

1615
class VideoPlayer(hwdec: Boolean = false) : AutoCloseable {
16+
class Config(pixelPerfect: Boolean = false) {
17+
var pixelPerfect by mutableStateOf(pixelPerfect)
18+
}
19+
20+
val config: Config = Config()
21+
1722
internal var surface: GLSurface? = null
1823
private var initialized = false
1924

@@ -45,6 +50,7 @@ class VideoPlayer(hwdec: Boolean = false) : AutoCloseable {
4550

4651
suspend fun seekAbsolute(position: Duration) =
4752
mpv.commandAsync(arrayOf("seek", position.inWholeMilliseconds.div(1000.0).toString(), "absolute"))
53+
4854
suspend fun seekRelative(by: Duration) =
4955
mpv.commandAsync(arrayOf("seek", by.inWholeMilliseconds.div(1000.0).toString(), "relative"))
5056

src/main/kotlin/dev/silenium/multimedia/compose/player/VideoSurface.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import org.jetbrains.skia.Paint
1717
private fun createGLSurface(
1818
player: VideoPlayer,
1919
surfaceState: GLSurfaceState = rememberGLSurfaceState(),
20-
pixelPerfect: Boolean = false,
2120
onInitialized: () -> Unit = {},
2221
): GLSurface {
2322
var initialized by remember { mutableStateOf(false) }
@@ -27,8 +26,8 @@ private fun createGLSurface(
2726

2827
@OptIn(InternalMultimediaApi::class)
2928
val dheight by player.property<Long>("dheight")
30-
val fboSizeOverride = remember(pixelPerfect, dwidth, dheight) {
31-
if (!pixelPerfect) return@remember null
29+
val fboSizeOverride = remember(player.config.pixelPerfect, dwidth, dheight) {
30+
if (!player.config.pixelPerfect) return@remember null
3231
dwidth?.let { w ->
3332
dheight?.let { h ->
3433
FBOSizeOverride(w.toInt(), h.toInt())
@@ -79,11 +78,11 @@ fun VideoSurface(
7978
@Composable
8079
fun rememberVideoPlayer(
8180
surfaceState: GLSurfaceState = rememberGLSurfaceState(),
82-
pixelPerfect: Boolean = false,
81+
hwdec: Boolean = true,
8382
onInitialized: () -> Unit = {},
8483
): VideoPlayer {
85-
val player = remember { VideoPlayer() }
86-
val surface = createGLSurface(player, surfaceState, pixelPerfect, onInitialized)
84+
val player = remember { VideoPlayer(hwdec) }
85+
val surface = createGLSurface(player, surfaceState, onInitialized)
8786

8887
DisposableEffect(player, surface) {
8988
player.surface = surface

0 commit comments

Comments
 (0)