finally block ensures release() is called even if exceptions occur
This commit is contained in:
+11
-5
@@ -338,9 +338,10 @@ class VideoCompressionHelper {
|
|||||||
private fun getVideoInfo(
|
private fun getVideoInfo(
|
||||||
uri: Uri,
|
uri: Uri,
|
||||||
context: Context,
|
context: Context,
|
||||||
): VideoInfo? =
|
): VideoInfo? {
|
||||||
try {
|
var retriever: MediaMetadataRetriever? = null
|
||||||
val retriever = MediaMetadataRetriever()
|
return try {
|
||||||
|
retriever = MediaMetadataRetriever()
|
||||||
retriever.setDataSource(context, uri)
|
retriever.setDataSource(context, uri)
|
||||||
val width = retriever.prepareVideoWidth()
|
val width = retriever.prepareVideoWidth()
|
||||||
val height = retriever.prepareVideoHeight()
|
val height = retriever.prepareVideoHeight()
|
||||||
@@ -350,8 +351,6 @@ class VideoCompressionHelper {
|
|||||||
val framerateString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CAPTURE_FRAMERATE)
|
val framerateString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CAPTURE_FRAMERATE)
|
||||||
val framerate = framerateString?.toFloatOrNull() ?: 30.0f
|
val framerate = framerateString?.toFloatOrNull() ?: 30.0f
|
||||||
|
|
||||||
retriever.release()
|
|
||||||
|
|
||||||
if (width != null && height != null && width > 0 && height > 0) {
|
if (width != null && height != null && width > 0 && height > 0) {
|
||||||
// Account for rotation
|
// Account for rotation
|
||||||
val resolution =
|
val resolution =
|
||||||
@@ -367,5 +366,12 @@ class VideoCompressionHelper {
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.w("VideoCompressionHelper", "Failed to get video resolution: ${e.message}")
|
Log.w("VideoCompressionHelper", "Failed to get video resolution: ${e.message}")
|
||||||
null
|
null
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
retriever?.release()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.w("VideoCompressionHelper", "Failed to release MediaMetadataRetriever: ${e.message}")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user