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

Unified Diff: webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java

Issue 1732533002: Add an option to soft reset HW decoder. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Address comments Created 4 years, 10 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/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java
diff --git a/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java b/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java
index e5fd9526afa37ebe1064a40c1208fd2fcaf7bad5..08f5b91d231a24227e519750ad2f761d60f4a98f 100644
--- a/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java
+++ b/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java
@@ -40,6 +40,7 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
private static final int WAIT_TIMEOUT = 7000;
private static final int CAMERA_SWITCH_ATTEMPTS = 3;
private static final int VIDEO_RESTART_ATTEMPTS = 3;
+ private static final int CAPTURE_FORMAT_CHANGE_ATTEMPTS = 3;
private static final int VIDEO_RESTART_TIMEOUT = 500;
private static final int EXPECTED_VIDEO_FRAMES = 10;
private static final String VIDEO_CODEC_VP8 = "VP8";
@@ -49,6 +50,12 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
private static final String LOCAL_RENDERER_NAME = "Local renderer";
private static final String REMOTE_RENDERER_NAME = "Remote renderer";
+ private static final int MAX_VIDEO_FPS = 30;
+ private static final int WIDTH_VGA = 640;
+ private static final int HEIGHT_VGA = 480;
+ private static final int WIDTH_QVGA = 320;
+ private static final int HEIGHT_QVGA = 240;
+
// The peer connection client is assumed to be thread safe in itself; the
// reference is written by the test thread and read by worker threads.
private volatile PeerConnectionClient pcClient;
@@ -551,4 +558,55 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
assertTrue(waitForPeerConnectionClosed(WAIT_TIMEOUT));
Log.d(TAG, "testVideoSourceRestart done.");
}
+
+ // Checks if capture format can be changed on fly and decoder can be reset properly.
+ public void testCaptureFormatChange() throws InterruptedException {
+ Log.d(TAG, "testCaptureFormatChange");
+ loopback = true;
+
+ MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME);
+ MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME);
+
+ pcClient = createPeerConnectionClient(
+ localRenderer, remoteRenderer, createParametersForVideoCall(VIDEO_CODEC_VP8, false), null);
+
+ // Wait for local SDP, rename it to answer and set as remote SDP.
+ assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT));
+ SessionDescription remoteSdp = new SessionDescription(
+ SessionDescription.Type.fromCanonicalForm("answer"),
+ localSdp.description);
+ pcClient.setRemoteDescription(remoteSdp);
+
+ // Wait for ICE connection.
+ assertTrue("ICE connection failure.", waitForIceConnected(ICE_CONNECTION_WAIT_TIMEOUT));
+
+ // Check that local and remote video frames were rendered.
+ assertTrue("Local video frames were not rendered before camera resolution change.",
+ localRenderer.waitForFramesRendered(WAIT_TIMEOUT));
+ assertTrue("Remote video frames were not rendered before camera resolution change.",
+ remoteRenderer.waitForFramesRendered(WAIT_TIMEOUT));
+
+ // Change capture output format a few times.
+ for (int i = 0; i < 2 * CAPTURE_FORMAT_CHANGE_ATTEMPTS; i++) {
+ if (i % 2 == 0) {
+ pcClient.changeCaptureFormat(WIDTH_VGA, HEIGHT_VGA, MAX_VIDEO_FPS);
+ } else {
+ pcClient.changeCaptureFormat(WIDTH_QVGA, HEIGHT_QVGA, MAX_VIDEO_FPS);
+ }
+
+ // Reset video renders and check that local and remote video frames
+ // were rendered after capture format change.
+ localRenderer.reset(EXPECTED_VIDEO_FRAMES);
+ remoteRenderer.reset(EXPECTED_VIDEO_FRAMES);
+ assertTrue("Local video frames were not rendered after capture format change.",
+ localRenderer.waitForFramesRendered(WAIT_TIMEOUT));
+ assertTrue("Remote video frames were not rendered after capture format change.",
+ remoteRenderer.waitForFramesRendered(WAIT_TIMEOUT));
+ }
+
+ pcClient.close();
+ assertTrue(waitForPeerConnectionClosed(WAIT_TIMEOUT));
+ Log.d(TAG, "testCaptureFormatChange done.");
+ }
+
}

Powered by Google App Engine
This is Rietveld 408576698