Combine calculation of videoBitrateInBps, resizer to use compressionRules only once

This commit is contained in:
davotoula
2025-09-25 21:58:16 +02:00
parent 6e4e432adf
commit 4fc9386393

View File

@@ -92,7 +92,7 @@ data class CompressionRule(
// Apply 1.5x multiplier for 60fps+ videos // Apply 1.5x multiplier for 60fps+ videos
val multiplier = if (framerate >= 60f) 1.5f else 1.0f val multiplier = if (framerate >= 60f) 1.5f else 1.0f
return (bitrateMbps * multiplier).toInt() * MBPS_TO_BPS_MULTIPLIER return (bitrateMbps * multiplier * MBPS_TO_BPS_MULTIPLIER).toInt()
} }
} }
@@ -145,36 +145,28 @@ object VideoCompressionHelper {
): MediaCompressorResult { ): MediaCompressorResult {
val videoInfo = getVideoInfo(uri, applicationContext) val videoInfo = getVideoInfo(uri, applicationContext)
val videoBitrateInBps = val (videoBitrateInBps, resizer) =
videoInfo?.let { info -> videoInfo?.let { info ->
val bitrateBps = val rule =
compressionRules compressionRules
.getValue(mediaQuality) .getValue(mediaQuality)
.getValue(info.resolution.getStandard()) .getValue(info.resolution.getStandard())
.getBitrateBps(info.framerate)
val bitrateBps = rule.getBitrateBps(info.framerate)
Log.d(LOG_TAG, "Bitrate: ${bitrateBps}bps for ${info.resolution.getStandard()} quality=$mediaQuality framerate=${info.framerate}fps.") Log.d(LOG_TAG, "Bitrate: ${bitrateBps}bps for ${info.resolution.getStandard()} quality=$mediaQuality framerate=${info.framerate}fps.")
bitrateBps
} ?: run {
Log.w(LOG_TAG, "Video bitrate fallback: 2Mbps (videoInfo unavailable)")
2 * MBPS_TO_BPS_MULTIPLIER
}
val resizer =
if (videoInfo != null) {
val rules =
compressionRules
.getValue(mediaQuality)
.getValue(videoInfo.resolution.getStandard())
Log.d( Log.d(
LOG_TAG, LOG_TAG,
"Resizer: ${videoInfo.resolution.width}x${videoInfo.resolution.height} -> " + "Resizer: ${info.resolution.width}x${info.resolution.height} -> " +
"${rules.width}x${rules.height} (${rules.description})", "${rule.width}x${rule.height} (${rule.description})",
) )
VideoResizer.limitSize(rules.width.toDouble(), rules.height.toDouble()) val resizer = VideoResizer.limitSize(rule.width.toDouble(), rule.height.toDouble())
} else {
Pair(bitrateBps, resizer)
} ?: run {
Log.w(LOG_TAG, "Video bitrate fallback: 2Mbps (videoInfo unavailable)")
Log.d(LOG_TAG, "Resizer: null (original resolution preserved)") Log.d(LOG_TAG, "Resizer: null (original resolution preserved)")
null Pair(2 * MBPS_TO_BPS_MULTIPLIER, null)
} }
// Get original file size safely // Get original file size safely