From fdf7127e2df15cc36336ebdb5edf1fef521fe340 Mon Sep 17 00:00:00 2001 From: Elie Gambache Date: Sat, 11 Apr 2026 20:35:49 +0300 Subject: [PATCH] fix(mac,linux): convert VideoMetadata.duration to milliseconds nGetVideoDuration() returns seconds on macOS (CMTimeGetSeconds) and Linux (GStreamer duration / GST_SECOND). Multiply by 1000 before assigning to metadata.duration so the value matches the documented millisecond contract and aligns with iOS, Android, Windows, and Web. Fixes #153 --- .../composemediaplayer/linux/LinuxVideoPlayerState.kt | 2 +- .../kdroidfilter/composemediaplayer/mac/MacVideoPlayerState.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/linux/LinuxVideoPlayerState.kt b/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/linux/LinuxVideoPlayerState.kt index 65e00617..c9dcb0dd 100644 --- a/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/linux/LinuxVideoPlayerState.kt +++ b/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/linux/LinuxVideoPlayerState.kt @@ -379,7 +379,7 @@ class LinuxVideoPlayerState : VideoPlayerState { try { val width = LinuxNativeBridge.nGetFrameWidth(ptr) val height = LinuxNativeBridge.nGetFrameHeight(ptr) - val duration = LinuxNativeBridge.nGetVideoDuration(ptr).toLong() + val duration = (LinuxNativeBridge.nGetVideoDuration(ptr) * 1000).toLong() val frameRate = LinuxNativeBridge.nGetFrameRate(ptr) val newAspectRatio = if (width > 0 && height > 0) { diff --git a/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/mac/MacVideoPlayerState.kt b/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/mac/MacVideoPlayerState.kt index 896b4164..c2b9c318 100644 --- a/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/mac/MacVideoPlayerState.kt +++ b/mediaplayer/src/jvmMain/kotlin/io/github/kdroidfilter/composemediaplayer/mac/MacVideoPlayerState.kt @@ -448,7 +448,7 @@ class MacVideoPlayerState : VideoPlayerState { try { val width = MacNativeBridge.nGetFrameWidth(ptr) val height = MacNativeBridge.nGetFrameHeight(ptr) - val duration = MacNativeBridge.nGetVideoDuration(ptr).toLong() + val duration = (MacNativeBridge.nGetVideoDuration(ptr) * 1000).toLong() val frameRate = MacNativeBridge.nGetVideoFrameRate(ptr) // Calculate aspect ratio