Make max compressed video size remote configurable.

This commit is contained in:
Cody Henthorne
2026-03-19 15:18:17 -04:00
committed by Michelle Tang
parent 69cad04875
commit 3620db3a92
2 changed files with 17 additions and 3 deletions

View File

@@ -6,13 +6,15 @@ import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.signal.core.util.Util;
import org.thoughtcrime.securesms.dependencies.AppDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.util.RemoteConfig;
import org.thoughtcrime.securesms.util.LocaleRemoteConfig;
import org.signal.core.util.Util;
import org.thoughtcrime.securesms.util.RemoteConfig;
import org.thoughtcrime.securesms.video.TranscodingPreset;
import org.thoughtcrime.securesms.video.videoconverter.utils.DeviceCapabilities;
import org.whispersystems.signalservice.api.crypto.AttachmentCipherStreamUtil;
import org.whispersystems.signalservice.internal.crypto.PaddingInputStream;
import java.util.Arrays;
@@ -65,7 +67,10 @@ public class PushMediaConstraints extends MediaConstraints {
@Override
public long getCompressedVideoMaxSize(Context context) {
return getMaxAttachmentSize();
long maxCipherTextSize = RemoteConfig.videoTranscodeTargetSizeBytes();
long maxPaddedSize = AttachmentCipherStreamUtil.getPlaintextLength(maxCipherTextSize);
return Math.min(PaddingInputStream.getMaxUnpaddedSize(maxPaddedSize), getMaxAttachmentSize());
}
@Override

View File

@@ -929,6 +929,15 @@ object RemoteConfig {
hotSwappable = true
)
/** Maximum size a video transcode should target in bytes */
@JvmStatic
@get:JvmName("videoTranscodeTargetSizeBytes")
val videoTranscodeTargetSizeBytes: Long by remoteLong(
key = "global.videoAttachments.transcodeTargetBytes",
defaultValue = 100.mebiBytes.inWholeBytes,
hotSwappable = true
)
/** Maximum input size when opening a video to send in bytes */
@JvmStatic
@get:JvmName("maxSourceTranscodeVideoSizeBytes")