From c7b023222c57d495426c4f985de7a4b634b5599d Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Sun, 3 May 2026 11:12:02 +0200 Subject: [PATCH] fix(exoplayer): apply subtitle sync to ASS subtitles close #936 --- .../main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt b/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt index 21e9bc9b..b208bc2f 100644 --- a/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt +++ b/android/app/src/main/kotlin/com/edde746/plezy/exoplayer/ExoPlayerCore.kt @@ -555,7 +555,8 @@ class ExoPlayerCore(private val activity: Activity) : Player.Listener { exoPlayer!!.addListener(this) exoPlayer!!.addAnalyticsListener(decoderHangListener) exoPlayer!!.setVideoFrameMetadataListener { presentationTimeUs, releaseTimeNs, _, _ -> - assSubtitleSurfaceView?.requestRender(presentationTimeUs, releaseTimeNs) + // ASS bypasses Media3's text renderer, so apply sub-delay before libass renders. + assSubtitleSurfaceView?.requestRender(presentationTimeUs - subtitleDelayUs.get(), releaseTimeNs) val count = fpsTimestampCount if (count < FPS_SAMPLE_COUNT) { fpsTimestamps[count] = presentationTimeUs