Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1765)

Unified Diff: webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java

Issue 2861893003: Add support for media recorders in Camera1Capturer. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
diff --git a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
index b55b50b96a7a1006f980ef7ab4c19a9ca85c2881..91bb39fbb7ec1651d6c075282184c81d26cb4878 100644
--- a/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
+++ b/webrtc/sdk/android/instrumentationtests/src/org/webrtc/CameraVideoCapturerTestFixtures.java
@@ -509,20 +509,8 @@ class CameraVideoCapturerTestFixtures {
}
@TargetApi(21)
- public void updateMediaRecorder(boolean useSurfaceCapture)
- throws InterruptedException, IOException {
- final CapturerInstance capturerInstance = createCapturer(false /* initialize */);
- final VideoTrackWithRenderer videoTrackWithRenderer =
- createVideoTrackWithRenderer(capturerInstance.capturer);
- // Wait for the camera to start so we can add and remove MediaRecorder.
- assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender() > 0);
-
- final String videoOutPath = Environment.getExternalStorageDirectory().getPath()
- + "/chromium_tests_root/testmediarecorder.mp4";
- File outputFile = new File(videoOutPath);
-
- // Create MediaRecorder object
- MediaRecorder mediaRecorder = new MediaRecorder();
+ private static void prepareMediaRecorderForTests(
+ MediaRecorder mediaRecorder, File outputFile, boolean useSurfaceCapture) throws IOException {
mediaRecorder.setVideoSource(
useSurfaceCapture ? MediaRecorder.VideoSource.SURFACE : MediaRecorder.VideoSource.CAMERA);
CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
@@ -537,6 +525,28 @@ class CameraVideoCapturerTestFixtures {
mediaRecorder.setVideoEncoder(profile.videoCodec);
mediaRecorder.setOutputFile(outputFile.getPath());
mediaRecorder.prepare();
+ }
+
+ @TargetApi(21)
+ public void updateMediaRecorder(boolean useSurfaceCapture)
+ throws InterruptedException, IOException {
+ final CapturerInstance capturerInstance = createCapturer(false /* initialize */);
+ final VideoTrackWithRenderer videoTrackWithRenderer =
+ createVideoTrackWithRenderer(capturerInstance.capturer);
+ // Wait for the camera to start so we can add and remove MediaRecorder.
+ assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender() > 0);
+
+ final String videoOutPath = Environment.getExternalStorageDirectory().getPath()
+ + "/chromium_tests_root/testmediarecorder.mp4";
+ File outputFile = new File(videoOutPath);
+
+ // Create MediaRecorder object
+ MediaRecorder mediaRecorder = new MediaRecorder();
+ if (useSurfaceCapture) {
+ // When using using surface capture, media recorder has to be prepared before adding it to the
+ // camera.
+ prepareMediaRecorderForTests(mediaRecorder, outputFile, useSurfaceCapture);
+ }
// Add MediaRecorder to camera pipeline.
final boolean[] addMediaRecorderSuccessful = new boolean[1];
@@ -550,6 +560,7 @@ class CameraVideoCapturerTestFixtures {
}
@Override
public void onMediaRecorderError(String errorDescription) {
+ Logging.e(TAG, errorDescription);
addMediaRecorderSuccessful[0] = false;
addBarrier.countDown();
}
@@ -561,6 +572,11 @@ class CameraVideoCapturerTestFixtures {
assertTrue(addMediaRecorderSuccessful[0]);
// Start MediaRecorder and wait for a few frames to capture.
+ if (!useSurfaceCapture) {
+ // When using using camera capture, media recorder has to be prepared after adding it to the
+ // camera.
+ prepareMediaRecorderForTests(mediaRecorder, outputFile, useSurfaceCapture);
+ }
mediaRecorder.start();
for (int i = 0; i < 5; i++) {
assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender() > 0);

Powered by Google App Engine
This is Rietveld 408576698