commit e4c511ca47c2afdc0885dd8c8e073c25edd3c0e1
parent ec05e4f5d4d43a281a673a911195108aec9c72f0
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Fri,  1 Sep 2023 20:43:09 +0200

feat: ffmpeg logs

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/download/DownloadProcessor.kt | 7++++++-
Mapp/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt | 33++++++++++++++++++++++++---------
2 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/download/DownloadProcessor.kt b/app/src/main/kotlin/me/rhunk/snapenhance/download/DownloadProcessor.kt @@ -62,7 +62,12 @@ class DownloadProcessor ( remoteSideContext.translation.getCategory("download_processor") } - private val ffmpegProcessor by lazy { FFMpegProcessor(remoteSideContext.config.root.downloader.ffmpegOptions) } + private val ffmpegProcessor by lazy { + FFMpegProcessor( + remoteSideContext.log, + remoteSideContext.config.root.downloader.ffmpegOptions + ) + } private val gson by lazy { GsonBuilder().setPrettyPrinting().create() } private fun fallbackToast(message: Any) { diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt b/app/src/main/kotlin/me/rhunk/snapenhance/download/FFMpegProcessor.kt @@ -2,7 +2,10 @@ package me.rhunk.snapenhance.download import com.arthenica.ffmpegkit.FFmpegKit import com.arthenica.ffmpegkit.FFmpegSession +import com.arthenica.ffmpegkit.Level import kotlinx.coroutines.suspendCancellableCoroutine +import me.rhunk.snapenhance.LogLevel +import me.rhunk.snapenhance.LogManager import me.rhunk.snapenhance.Logger import me.rhunk.snapenhance.core.config.impl.DownloaderConfig import java.io.File @@ -32,8 +35,12 @@ class ArgumentList : LinkedHashMap<String, MutableList<String>>() { class FFMpegProcessor( + private val logManager: LogManager, private val ffmpegOptions: DownloaderConfig.FFMpegOptions ) { + companion object { + private const val TAG = "ffmpeg-processor" + } enum class Action { DOWNLOAD_DASH, MERGE_OVERLAY, @@ -66,15 +73,23 @@ class FFMpegProcessor( Logger.directDebug("arguments: $stringBuilder", "FFMpegProcessor") - FFmpegKit.executeAsync(stringBuilder.toString(), { session -> - it.resumeWith( - if (session.returnCode.isValueSuccess) { - Result.success(session) - } else { - Result.failure(Exception(session.output)) - } - ) - }, Executors.newSingleThreadExecutor()) + FFmpegKit.executeAsync(stringBuilder.toString(), + { session -> + it.resumeWith( + if (session.returnCode.isValueSuccess) { + Result.success(session) + } else { + Result.failure(Exception(session.output)) + } + ) + }, logFunction@{ log -> + logManager.internalLog(TAG, when (log.level) { + Level.AV_LOG_ERROR, Level.AV_LOG_FATAL -> LogLevel.ERROR + Level.AV_LOG_WARNING -> LogLevel.WARN + Level.AV_LOG_VERBOSE -> LogLevel.VERBOSE + else -> return@logFunction + }, log.message) + }, { logManager.verbose(it.toString(), "ffmpeg-stats") }, Executors.newSingleThreadExecutor()) } suspend fun execute(args: Request) {