From 809718ed2559f6baa7ee14097e97207b1762bd4e Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Fri, 10 Apr 2026 21:53:42 +0200 Subject: [PATCH] Extract method to create VideoConstraints As more constraints are added, this avoids polluting the `streamCapture()` method. PR #6766 --- .../scrcpy/video/SurfaceEncoder.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/com/genymobile/scrcpy/video/SurfaceEncoder.java b/server/src/main/java/com/genymobile/scrcpy/video/SurfaceEncoder.java index c124423f..a9304187 100644 --- a/server/src/main/java/com/genymobile/scrcpy/video/SurfaceEncoder.java +++ b/server/src/main/java/com/genymobile/scrcpy/video/SurfaceEncoder.java @@ -56,20 +56,26 @@ public class SurfaceEncoder implements AsyncProcessor { this.minSizeAlignment = options.getMinSizeAlignment(); } - private void streamCapture() throws IOException, ConfigurationException { - Codec codec = streamer.getCodec(); - MediaCodec mediaCodec = createMediaCodec(codec, encoderName); - MediaFormat format = createFormat(codec.getMimeType(), videoBitRate, maxFps, codecOptions); - - MediaCodecInfo.VideoCapabilities caps = mediaCodec.getCodecInfo().getCapabilitiesForType(codec.getMimeType()) - .getVideoCapabilities(); - int alignment = caps != null ? Math.max(caps.getWidthAlignment(), caps.getHeightAlignment()) : 8; + private static VideoConstraints createVideoConstraints(int maxSize, int minSizeAlignment, MediaCodecInfo.VideoCapabilities caps) { + assert caps != null; + int alignment = Math.max(caps.getWidthAlignment(), caps.getHeightAlignment()); Ln.d("Video codec size alignment requirement: " + alignment + "px"); if (alignment < minSizeAlignment) { alignment = minSizeAlignment; Ln.d("Actual video size alignment: " + alignment + "px"); } - VideoConstraints constraints = new VideoConstraints(maxSize, alignment); + + return new VideoConstraints(maxSize, alignment); + } + + private void streamCapture() throws IOException, ConfigurationException { + Codec codec = streamer.getCodec(); + MediaCodec mediaCodec = createMediaCodec(codec, encoderName); + MediaFormat format = createFormat(codec.getMimeType(), videoBitRate, maxFps, codecOptions); + + MediaCodecInfo.VideoCapabilities caps = mediaCodec.getCodecInfo().getCapabilitiesForType(codec.getMimeType()).getVideoCapabilities(); + assert caps != null; // caps cannot be null for a video codec + VideoConstraints constraints = createVideoConstraints(maxSize, minSizeAlignment, caps); capture.init(reset, constraints);