From f45381e1e54cc085cf6a98301056fffae6799998 Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Thu, 18 Feb 2016 15:47:47 +0100 Subject: [PATCH] VideoCapturerAndroid: Report onFirstFrameAvailable() for textures as well We currently only trigger onFirstFrameAvailable() for byte buffer frames. R=perkj@webrtc.org Review URL: https://codereview.webrtc.org/1701993002 . Cr-Commit-Position: refs/heads/master@{#11670} --- .../src/org/webrtc/VideoCapturerAndroidTest.java | 12 ++++++++++++ .../android/org/webrtc/VideoCapturerAndroid.java | 10 +++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java b/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java index 98b8d2b89a..2e4bd38bd9 100644 --- a/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java +++ b/webrtc/api/androidtests/src/org/webrtc/VideoCapturerAndroidTest.java @@ -152,6 +152,18 @@ public class VideoCapturerAndroidTest extends ActivityTestCase { capturer, cameraEvents, getInstrumentation().getContext()); } + @MediumTest + public void testCameraEventsUsingTextures() throws InterruptedException { + EglBase eglBase = EglBase.create(); + VideoCapturerAndroidTestFixtures.CameraEvents cameraEvents = + VideoCapturerAndroidTestFixtures.createCameraEvents(); + VideoCapturerAndroid capturer = + VideoCapturerAndroid.create("", cameraEvents, eglBase.getEglBaseContext()); + VideoCapturerAndroidTestFixtures.cameraEventsInvoked( + capturer, cameraEvents, getInstrumentation().getContext()); + eglBase.release(); + } + @MediumTest // Test what happens when attempting to call e.g. switchCamera() after camera has been stopped. public void testCameraCallsAfterStop() throws InterruptedException { diff --git a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java index feff652c46..f0536c6d92 100644 --- a/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java +++ b/webrtc/api/java/android/org/webrtc/VideoCapturerAndroid.java @@ -678,9 +678,13 @@ public class VideoCapturerAndroid implements return; } if (dropNextFrame) { - surfaceHelper.returnTextureFrame(); - dropNextFrame = false; - return; + surfaceHelper.returnTextureFrame(); + dropNextFrame = false; + return; + } + if (eventsHandler != null && !firstFrameReported) { + eventsHandler.onFirstFrameAvailable(); + firstFrameReported = true; } int rotation = getFrameOrientation();