| Index: webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java
|
| diff --git a/webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java b/webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java
|
| index 3279782def37aea339b2e9ccbdcce0df1c6b431e..8de5be0eebef48b3cea295d1903abf9c3b105e0f 100644
|
| --- a/webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java
|
| +++ b/webrtc/sdk/android/src/java/org/webrtc/Camera2Session.java
|
| @@ -21,11 +21,12 @@
|
| import android.hardware.camera2.CameraMetadata;
|
| import android.hardware.camera2.CaptureFailure;
|
| import android.hardware.camera2.CaptureRequest;
|
| +import android.media.MediaRecorder;
|
| import android.os.Handler;
|
| import android.util.Range;
|
| import android.view.Surface;
|
| import android.view.WindowManager;
|
| -import java.util.Arrays;
|
| +import java.util.ArrayList;
|
| import java.util.List;
|
| import java.util.concurrent.TimeUnit;
|
| import org.webrtc.CameraEnumerationAndroid.CaptureFormat;
|
| @@ -49,6 +50,7 @@
|
| private final Context applicationContext;
|
| private final CameraManager cameraManager;
|
| private final SurfaceTextureHelper surfaceTextureHelper;
|
| + private final Surface mediaRecorderSurface;
|
| private final String cameraId;
|
| private final int width;
|
| private final int height;
|
| @@ -123,9 +125,14 @@
|
| final SurfaceTexture surfaceTexture = surfaceTextureHelper.getSurfaceTexture();
|
| surfaceTexture.setDefaultBufferSize(captureFormat.width, captureFormat.height);
|
| surface = new Surface(surfaceTexture);
|
| + List<Surface> surfaces = new ArrayList<Surface>();
|
| + surfaces.add(surface);
|
| + if (mediaRecorderSurface != null) {
|
| + Logging.d(TAG, "Add MediaRecorder surface to capture session.");
|
| + surfaces.add(mediaRecorderSurface);
|
| + }
|
| try {
|
| - camera.createCaptureSession(
|
| - Arrays.asList(surface), new CaptureSessionCallback(), cameraThreadHandler);
|
| + camera.createCaptureSession(surfaces, new CaptureSessionCallback(), cameraThreadHandler);
|
| } catch (CameraAccessException e) {
|
| reportError("Failed to create capture session. " + e);
|
| return;
|
| @@ -175,6 +182,10 @@
|
| chooseFocusMode(captureRequestBuilder);
|
|
|
| captureRequestBuilder.addTarget(surface);
|
| + if (mediaRecorderSurface != null) {
|
| + Logging.d(TAG, "Add MediaRecorder surface to CaptureRequest.Builder");
|
| + captureRequestBuilder.addTarget(mediaRecorderSurface);
|
| + }
|
| session.setRepeatingRequest(
|
| captureRequestBuilder.build(), new CameraCaptureCallback(), cameraThreadHandler);
|
| } catch (CameraAccessException e) {
|
| @@ -280,15 +291,15 @@
|
|
|
| public static void create(CreateSessionCallback callback, Events events,
|
| Context applicationContext, CameraManager cameraManager,
|
| - SurfaceTextureHelper surfaceTextureHelper, String cameraId, int width, int height,
|
| - int framerate) {
|
| + SurfaceTextureHelper surfaceTextureHelper, MediaRecorder mediaRecorder, String cameraId,
|
| + int width, int height, int framerate) {
|
| new Camera2Session(callback, events, applicationContext, cameraManager, surfaceTextureHelper,
|
| - cameraId, width, height, framerate);
|
| + mediaRecorder, cameraId, width, height, framerate);
|
| }
|
|
|
| private Camera2Session(CreateSessionCallback callback, Events events, Context applicationContext,
|
| - CameraManager cameraManager, SurfaceTextureHelper surfaceTextureHelper, String cameraId,
|
| - int width, int height, int framerate) {
|
| + CameraManager cameraManager, SurfaceTextureHelper surfaceTextureHelper,
|
| + MediaRecorder mediaRecorder, String cameraId, int width, int height, int framerate) {
|
| Logging.d(TAG, "Create new camera2 session on camera " + cameraId);
|
|
|
| constructionTimeNs = System.nanoTime();
|
| @@ -299,6 +310,7 @@
|
| this.applicationContext = applicationContext;
|
| this.cameraManager = cameraManager;
|
| this.surfaceTextureHelper = surfaceTextureHelper;
|
| + this.mediaRecorderSurface = (mediaRecorder != null) ? mediaRecorder.getSurface() : null;
|
| this.cameraId = cameraId;
|
| this.width = width;
|
| this.height = height;
|
|
|