From d9f3d56bb656e5baf7a9321ac60419c2514cdcbf Mon Sep 17 00:00:00 2001 From: sakal Date: Thu, 9 Jun 2016 00:56:19 -0700 Subject: [PATCH] Use a video renderer instead of a capture observer in VideoCapturerAndroidTest. In org.webrtc.VideoCapturerAndroidTest#startWhileCameraIsAlreadyOpenAndCloseCamera, use a video renderer instead of a capture observer. The video renderer automatically returns the texture buffers, which resolves the bug. There shouldn't be any changes to the effectiveness of the test. BUG=webrtc:5982 Review-Url: https://codereview.webrtc.org/2042283004 Cr-Commit-Position: refs/heads/master@{#13085} --- .../webrtc/VideoCapturerAndroidTestFixtures.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTestFixtures.java b/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTestFixtures.java index 6c4a6ea96f..4c96b8cff0 100644 --- a/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTestFixtures.java +++ b/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTestFixtures.java @@ -426,26 +426,24 @@ public class VideoCapturerAndroidTestFixtures { static public void startWhileCameraIsAlreadyOpenAndCloseCamera( VideoCapturerAndroid capturer, Context appContext) throws InterruptedException { + final PeerConnectionFactory factory = new PeerConnectionFactory(null /* options */); final List formats = capturer.getSupportedFormats(); final CameraEnumerationAndroid.CaptureFormat format = formats.get(0); android.hardware.Camera camera = android.hardware.Camera.open(capturer.getCurrentCameraId()); final SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create( "SurfaceTextureHelper test" /* threadName */, null /* sharedContext */); - final FakeCapturerObserver observer = new FakeCapturerObserver(); - capturer.startCapture(format.width, format.height, format.framerate.max, - surfaceTextureHelper, appContext, observer); + final VideoSource source = factory.createVideoSource(capturer, new MediaConstraints()); + final VideoTrack track = factory.createVideoTrack("dummy", source); + final RendererCallbacks callbacks = new RendererCallbacks(); + track.addRenderer(new VideoRenderer(callbacks)); waitUntilIdle(capturer); camera.release(); // Make sure camera is started and first frame is received and then stop it. - assertTrue(observer.WaitForCapturerToStart()); - observer.WaitForNextCapturedFrame(); + callbacks.WaitForNextFrameToRender(); capturer.stopCapture(); - if (capturer.isCapturingToTexture()) { - surfaceTextureHelper.returnTextureFrame(); - } release(capturer); surfaceTextureHelper.dispose(); }