From db9160a6c239196c23fdba96eb08549a726fc4c9 Mon Sep 17 00:00:00 2001 From: davotoula Date: Tue, 23 Sep 2025 09:19:10 +0200 Subject: [PATCH] finally block ensures release() is called even if exceptions occur --- .../service/uploads/VideoCompressionHelper.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt index 3153797b5..94ac64348 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt @@ -338,9 +338,10 @@ class VideoCompressionHelper { private fun getVideoInfo( uri: Uri, context: Context, - ): VideoInfo? = - try { - val retriever = MediaMetadataRetriever() + ): VideoInfo? { + var retriever: MediaMetadataRetriever? = null + return try { + retriever = MediaMetadataRetriever() retriever.setDataSource(context, uri) val width = retriever.prepareVideoWidth() val height = retriever.prepareVideoHeight() @@ -350,8 +351,6 @@ class VideoCompressionHelper { val framerateString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CAPTURE_FRAMERATE) val framerate = framerateString?.toFloatOrNull() ?: 30.0f - retriever.release() - if (width != null && height != null && width > 0 && height > 0) { // Account for rotation val resolution = @@ -367,5 +366,12 @@ class VideoCompressionHelper { } catch (e: Exception) { Log.w("VideoCompressionHelper", "Failed to get video resolution: ${e.message}") null + } finally { + try { + retriever?.release() + } catch (e: Exception) { + Log.w("VideoCompressionHelper", "Failed to release MediaMetadataRetriever: ${e.message}") + } } + } }