From 3d238d52d9831395c67a1791f891201c0769da63 Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Tue, 26 Oct 2021 13:02:38 +0200 Subject: [PATCH] Fix broken video compression Library issue: https://github.com/natario1/Transcoder/issues/154 Change-Id: I4491e7e3fc541922ddc0fd3e407d608cd46a23f0 --- .../internal/session/content/UploadContentWorker.kt | 3 +++ .../sdk/internal/session/content/VideoCompressor.kt | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt index 0c5a90ca60..f1b60f5ecf 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt @@ -188,6 +188,9 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter } }) .let { videoCompressionResult -> + if (videoCompressionResult is VideoCompressionResult.CompressionFailed) { + videoCompressionResult.failure.printStackTrace() + } when (videoCompressionResult) { is VideoCompressionResult.Success -> { val compressedFile = videoCompressionResult.compressedFile diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/VideoCompressor.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/VideoCompressor.kt index 05aaf4e9f1..e119a2234c 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/VideoCompressor.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/VideoCompressor.kt @@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.content import com.otaliastudios.transcoder.Transcoder import com.otaliastudios.transcoder.TranscoderListener +import com.otaliastudios.transcoder.source.FilePathDataSource import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.withContext @@ -43,7 +44,16 @@ internal class VideoCompressor @Inject constructor( var result: Int = -1 var failure: Throwable? = null Transcoder.into(destinationFile.path) - .addDataSource(videoFile.path) + .addDataSource(object: FilePathDataSource(videoFile.path) { + // https://github.com/natario1/Transcoder/issues/154 + @Suppress("SENSELESS_COMPARISON") // Source is annotated as @NonNull, but can actually be null... + override fun isInitialized(): Boolean { + if (source == null) { + return false + } + return super.isInitialized() + } + }) .setListener(object : TranscoderListener { override fun onTranscodeProgress(progress: Double) { Timber.d("Compressing: $progress%")