From c69537988525af51ae035043104d729877f69d60 Mon Sep 17 00:00:00 2001 From: Koen J Date: Wed, 29 Apr 2026 16:53:24 +0200 Subject: [PATCH] Fix for casting downloaded videos (UMP, requires redownloading). --- .../models/sources/JSDashManifestRawSource.kt | 17 +++++++++++++++++ .../platformplayer/downloads/VideoDownload.kt | 3 +++ 2 files changed, 20 insertions(+) diff --git a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/sources/JSDashManifestRawSource.kt b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/sources/JSDashManifestRawSource.kt index 0e6eaff1..490566de 100644 --- a/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/sources/JSDashManifestRawSource.kt +++ b/app/src/main/java/com/futo/platformplayer/api/media/platforms/js/models/sources/JSDashManifestRawSource.kt @@ -79,6 +79,7 @@ open class JSDashManifestRawSource( _obj.getOrDefault(cfg, "canMerge", ctx, false) ?: false override var streamMetaData: StreamMetaData? = null + var audioStreamMetaData: StreamMetaData? = null private var _pregenerate: V8Deferred? = null fun pregenerateAsync(scope: CoroutineScope): V8Deferred? { @@ -125,6 +126,14 @@ open class JSDashManifestRawSource( streamMetaData = StreamMetaData(initStart, initEnd, indexStart, indexEnd); } + val audioInitStart = _obj.getOrDefault(_config, "audioInitStart", "JSDashManifestRawSource", null) ?: 0; + val audioInitEnd = _obj.getOrDefault(_config, "audioInitEnd", "JSDashManifestRawSource", null) ?: 0; + val audioIndexStart = _obj.getOrDefault(_config, "audioIndexStart", "JSDashManifestRawSource", null) ?: 0; + val audioIndexEnd = _obj.getOrDefault(_config, "audioIndexEnd", "JSDashManifestRawSource", null) ?: 0; + if(audioInitEnd > 0 && audioIndexStart > 0 && audioIndexEnd > 0) { + audioStreamMetaData = StreamMetaData(audioInitStart, audioInitEnd, audioIndexStart, audioIndexEnd); + } + return@busy result.convert { it.value }; @@ -162,6 +171,14 @@ open class JSDashManifestRawSource( if(initEnd > 0 && indexStart > 0 && indexEnd > 0) { streamMetaData = StreamMetaData(initStart, initEnd, indexStart, indexEnd); } + + val audioInitStart = _obj.getOrDefault(_config, "audioInitStart", "JSDashManifestRawSource", null) ?: 0; + val audioInitEnd = _obj.getOrDefault(_config, "audioInitEnd", "JSDashManifestRawSource", null) ?: 0; + val audioIndexStart = _obj.getOrDefault(_config, "audioIndexStart", "JSDashManifestRawSource", null) ?: 0; + val audioIndexEnd = _obj.getOrDefault(_config, "audioIndexEnd", "JSDashManifestRawSource", null) ?: 0; + if(audioInitEnd > 0 && audioIndexStart > 0 && audioIndexEnd > 0) { + audioStreamMetaData = StreamMetaData(audioInitStart, audioInitEnd, audioIndexStart, audioIndexEnd); + } } } return result; diff --git a/app/src/main/java/com/futo/platformplayer/downloads/VideoDownload.kt b/app/src/main/java/com/futo/platformplayer/downloads/VideoDownload.kt index 5ddf10e9..02657cb9 100644 --- a/app/src/main/java/com/futo/platformplayer/downloads/VideoDownload.kt +++ b/app/src/main/java/com/futo/platformplayer/downloads/VideoDownload.kt @@ -1462,6 +1462,9 @@ class VideoDownload { if(localAudioSource != null && audioSourceToUse != null && audioSourceToUse is IStreamMetaDataSource) localAudioSource.streamMetaData = (audioSourceToUse as IStreamMetaDataSource).streamMetaData; + if(localAudioSource != null && localAudioSource.streamMetaData == null && videoSourceToUse is JSDashManifestRawSource) + localAudioSource.streamMetaData = (videoSourceToUse as JSDashManifestRawSource).audioStreamMetaData; + if(existing != null) { existing.videoSerialized = videoDetails!!; if(localVideoSource != null) {