Skip to content

Commit

Permalink
Set targetResolution to something reasonable for camera capture.
Browse files Browse the repository at this point in the history
  • Loading branch information
greyson-signal committed Oct 21, 2019
1 parent 2f93da6 commit 0485ae6
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -229,20 +229,20 @@ void bindToLifecycleAfterViewMeasured() {
boolean isDisplayPortrait = getDisplayRotationDegrees() == 0
|| getDisplayRotationDegrees() == 180;

// Begin Signal Custom Code Block
Rational targetAspectRatio;
if (getCaptureMode() == CameraXView.CaptureMode.IMAGE) {
mImageCaptureConfigBuilder.setTargetAspectRatio(AspectRatio.RATIO_4_3);
mImageCaptureConfigBuilder.setTargetResolution(CameraXUtil.buildResolutionForRatio(1920, ASPECT_RATIO_4_3, isDisplayPortrait));
targetAspectRatio = isDisplayPortrait ? ASPECT_RATIO_3_4 : ASPECT_RATIO_4_3;
} else {
mImageCaptureConfigBuilder.setTargetAspectRatio(AspectRatio.RATIO_16_9);
mImageCaptureConfigBuilder.setTargetResolution(CameraXUtil.buildResolutionForRatio(1920, ASPECT_RATIO_16_9, isDisplayPortrait));
targetAspectRatio = isDisplayPortrait ? ASPECT_RATIO_9_16 : ASPECT_RATIO_16_9;
}

mImageCaptureConfigBuilder.setTargetRotation(getDisplaySurfaceRotation());
mImageCaptureConfigBuilder.setLensFacing(mCameraLensFacing);
// Begin Signal Custom Code Block
mImageCaptureConfigBuilder.setCaptureMode(CameraXUtil.getOptimalCaptureMode());
mImageCaptureConfigBuilder.setLensFacing(mCameraLensFacing);
// End Signal Custom Code Block

mImageCaptureConfigBuilder.setTargetRotation(getDisplaySurfaceRotation());
mImageCapture = new ImageCapture(mImageCaptureConfigBuilder.build());

// Begin Signal Custom Code Block
Expand Down
13 changes: 13 additions & 0 deletions src/org/thoughtcrime/securesms/mediasend/camerax/CameraXUtil.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package org.thoughtcrime.securesms.mediasend.camerax;

import android.annotation.TargetApi;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapRegionDecoder;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.hardware.Camera;
import android.os.Build;
import android.util.Rational;
import android.util.Size;

import androidx.annotation.NonNull;
Expand Down Expand Up @@ -75,6 +77,17 @@ public static int toCameraDirectionInt(@Nullable CameraX.LensFacing facing) {
: ImageCapture.CaptureMode.MIN_LATENCY;
}

@TargetApi(21)
public static @NonNull Size buildResolutionForRatio(int longDimension, @NonNull Rational ratio, boolean isPortrait) {
int shortDimension = longDimension * ratio.getDenominator() / ratio.getNumerator();

if (isPortrait) {
return new Size(shortDimension, longDimension);
} else {
return new Size(longDimension, shortDimension);
}
}

private static byte[] transformByteArray(@NonNull byte[] data, @Nullable Rect cropRect, int rotation, boolean flip) throws IOException {
Stopwatch stopwatch = new Stopwatch("transform");
Bitmap in;
Expand Down

0 comments on commit 0485ae6

Please sign in to comment.