From 5491fd23073224c77f8ebb2f411ffdda6ecc1996 Mon Sep 17 00:00:00 2001 From: j3553a Date: Fri, 9 Jan 2026 15:51:45 -0700 Subject: [PATCH 1/2] Initial test on changing cache values. --- .../java/io/github/peerless2012/ass/media/AssHandler.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt b/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt index 9fdee03..a97cb4a 100644 --- a/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt +++ b/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt @@ -260,10 +260,12 @@ class AssHandler(val renderType: AssRenderType) : Listener { } } val totalMemoryBytes = Runtime.getRuntime().maxMemory() - val cacheSize = ((totalMemoryBytes / (1024 * 1024)) / 4).toInt() + val glyphSize = 10000 + val cacheSize = 128 //((totalMemoryBytes / (1024 * 1024)) / 4).toInt() Log.i("AssHandler", "Ass cacheSize: ${cacheSize}MB") + Log.i("AssHandler", "Ass glyphSize: ${glyphSize}") // https://github.com/peerless2012/libass-android/issues/48#issuecomment-3086561167 - render.setCacheLimit(1024, cacheSize) + render.setCacheLimit(glyphSize, cacheSize) } renderCallback?.invoke(render) } From f3ec0f9233add09a50adf27c51e846b59009ce52 Mon Sep 17 00:00:00 2001 From: Jesse Arstein Date: Fri, 9 Jan 2026 17:26:09 -0700 Subject: [PATCH 2/2] Make glyph and cache sizes configurable. --- .../github/peerless2012/ass/media/AssHandler.kt | 15 +++++++-------- .../peerless2012/ass/media/AssHandlerConfig.kt | 6 ++++++ 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandlerConfig.kt diff --git a/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt b/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt index a97cb4a..55ae668 100644 --- a/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt +++ b/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandler.kt @@ -28,7 +28,10 @@ import io.github.peerless2012.ass.media.type.AssRenderType * @param renderType The subtitle render type. */ @OptIn(UnstableApi::class) -class AssHandler(val renderType: AssRenderType) : Listener { +class AssHandler( + val renderType: AssRenderType, + val config: AssHandlerConfig = AssHandlerConfig() + ) : Listener { /** The ASS instance used for creating tracks and renderers. This is lazy to avoid loading * libass if the played media does not have ASS tracks. */ @@ -259,13 +262,9 @@ class AssHandler(val renderType: AssRenderType) : Listener { render.setFrameSize(videoSize.width, videoSize.height) } } - val totalMemoryBytes = Runtime.getRuntime().maxMemory() - val glyphSize = 10000 - val cacheSize = 128 //((totalMemoryBytes / (1024 * 1024)) / 4).toInt() - Log.i("AssHandler", "Ass cacheSize: ${cacheSize}MB") - Log.i("AssHandler", "Ass glyphSize: ${glyphSize}") - // https://github.com/peerless2012/libass-android/issues/48#issuecomment-3086561167 - render.setCacheLimit(glyphSize, cacheSize) + Log.i("AssHandler", "Ass cacheSize: ${config.cacheSize}MB") + Log.i("AssHandler", "Ass glyphSize: ${config.glyphSize}") + render.setCacheLimit(config.glyphSize, config.cacheSize) } renderCallback?.invoke(render) } diff --git a/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandlerConfig.kt b/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandlerConfig.kt new file mode 100644 index 0000000..fba80ae --- /dev/null +++ b/lib_ass_media/src/main/java/io/github/peerless2012/ass/media/AssHandlerConfig.kt @@ -0,0 +1,6 @@ +package io.github.peerless2012.ass.media + +data class AssHandlerConfig( + val glyphSize: Int = 1024, + val cacheSize: Int = 128){ +} \ No newline at end of file