| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2015 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 package org.webrtc; | 10 package org.webrtc; |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 private void createCapturerAndRender(String name) throws InterruptedException
{ | 395 private void createCapturerAndRender(String name) throws InterruptedException
{ |
| 396 if (name == null) { | 396 if (name == null) { |
| 397 Logging.w(TAG, "Skipping video capturer test because device name is null."
); | 397 Logging.w(TAG, "Skipping video capturer test because device name is null."
); |
| 398 return; | 398 return; |
| 399 } | 399 } |
| 400 | 400 |
| 401 final CapturerInstance capturerInstance = createCapturer(name, false /* init
ialize */); | 401 final CapturerInstance capturerInstance = createCapturer(name, false /* init
ialize */); |
| 402 final VideoTrackWithRenderer videoTrackWithRenderer = | 402 final VideoTrackWithRenderer videoTrackWithRenderer = |
| 403 createVideoTrackWithRenderer(capturerInstance.capturer); | 403 createVideoTrackWithRenderer(capturerInstance.capturer); |
| 404 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); | 404 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); |
| 405 disposeCapturer(capturerInstance); |
| 405 disposeVideoTrackWithRenderer(videoTrackWithRenderer); | 406 disposeVideoTrackWithRenderer(videoTrackWithRenderer); |
| 406 disposeCapturer(capturerInstance); | |
| 407 } | 407 } |
| 408 | 408 |
| 409 // Test methods | 409 // Test methods |
| 410 public void createCapturerAndDispose() { | 410 public void createCapturerAndDispose() { |
| 411 disposeCapturer(createCapturer(true /* initialize */)); | 411 disposeCapturer(createCapturer(true /* initialize */)); |
| 412 } | 412 } |
| 413 | 413 |
| 414 public void createNonExistingCamera() { | 414 public void createNonExistingCamera() { |
| 415 try { | 415 try { |
| 416 disposeCapturer(createCapturer("non-existing camera", false /* initialize
*/)); | 416 disposeCapturer(createCapturer("non-existing camera", false /* initialize
*/)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 barrier.countDown(); | 459 barrier.countDown(); |
| 460 } | 460 } |
| 461 }); | 461 }); |
| 462 // Wait until the camera has been switched. | 462 // Wait until the camera has been switched. |
| 463 barrier.await(); | 463 barrier.await(); |
| 464 | 464 |
| 465 // Check result. | 465 // Check result. |
| 466 assertTrue(cameraSwitchSuccessful[0]); | 466 assertTrue(cameraSwitchSuccessful[0]); |
| 467 // Ensure that frames are received. | 467 // Ensure that frames are received. |
| 468 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); | 468 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); |
| 469 disposeCapturer(capturerInstance); |
| 469 disposeVideoTrackWithRenderer(videoTrackWithRenderer); | 470 disposeVideoTrackWithRenderer(videoTrackWithRenderer); |
| 470 disposeCapturer(capturerInstance); | |
| 471 } | 471 } |
| 472 | 472 |
| 473 public void cameraEventsInvoked() throws InterruptedException { | 473 public void cameraEventsInvoked() throws InterruptedException { |
| 474 final CapturerInstance capturerInstance = createCapturer(true /* initialize
*/); | 474 final CapturerInstance capturerInstance = createCapturer(true /* initialize
*/); |
| 475 startCapture(capturerInstance); | 475 startCapture(capturerInstance); |
| 476 // Make sure camera is started and first frame is received and then stop it. | 476 // Make sure camera is started and first frame is received and then stop it. |
| 477 assertTrue(capturerInstance.observer.waitForCapturerToStart()); | 477 assertTrue(capturerInstance.observer.waitForCapturerToStart()); |
| 478 capturerInstance.observer.waitForNextCapturedFrame(); | 478 capturerInstance.observer.waitForNextCapturedFrame(); |
| 479 capturerInstance.capturer.stopCapture(); | 479 capturerInstance.capturer.stopCapture(); |
| 480 disposeCapturer(capturerInstance); | 480 disposeCapturer(capturerInstance); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 507 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); | 507 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); |
| 508 assertEquals(MediaSource.State.LIVE, videoTrackWithRenderer.source.state()); | 508 assertEquals(MediaSource.State.LIVE, videoTrackWithRenderer.source.state()); |
| 509 | 509 |
| 510 videoTrackWithRenderer.source.stop(); | 510 videoTrackWithRenderer.source.stop(); |
| 511 assertEquals(MediaSource.State.ENDED, videoTrackWithRenderer.source.state())
; | 511 assertEquals(MediaSource.State.ENDED, videoTrackWithRenderer.source.state())
; |
| 512 | 512 |
| 513 videoTrackWithRenderer.source.restart(); | 513 videoTrackWithRenderer.source.restart(); |
| 514 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); | 514 assertTrue(videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender
() > 0); |
| 515 assertEquals(MediaSource.State.LIVE, videoTrackWithRenderer.source.state()); | 515 assertEquals(MediaSource.State.LIVE, videoTrackWithRenderer.source.state()); |
| 516 | 516 |
| 517 disposeCapturer(capturerInstance); |
| 517 disposeVideoTrackWithRenderer(videoTrackWithRenderer); | 518 disposeVideoTrackWithRenderer(videoTrackWithRenderer); |
| 518 disposeCapturer(capturerInstance); | |
| 519 } | 519 } |
| 520 | 520 |
| 521 public void startStopWithDifferentResolutions() throws InterruptedException { | 521 public void startStopWithDifferentResolutions() throws InterruptedException { |
| 522 final CapturerInstance capturerInstance = createCapturer(true /* initialize
*/); | 522 final CapturerInstance capturerInstance = createCapturer(true /* initialize
*/); |
| 523 | 523 |
| 524 for(int i = 0; i < 3 ; ++i) { | 524 for(int i = 0; i < 3 ; ++i) { |
| 525 startCapture(capturerInstance, i); | 525 startCapture(capturerInstance, i); |
| 526 assertTrue(capturerInstance.observer.waitForCapturerToStart()); | 526 assertTrue(capturerInstance.observer.waitForCapturerToStart()); |
| 527 capturerInstance.observer.waitForNextCapturedFrame(); | 527 capturerInstance.observer.waitForNextCapturedFrame(); |
| 528 | 528 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 throws InterruptedException { | 578 throws InterruptedException { |
| 579 final CapturerInstance capturerInstance = createCapturer(false /* initialize
*/); | 579 final CapturerInstance capturerInstance = createCapturer(false /* initialize
*/); |
| 580 final VideoTrackWithRenderer videoTrackWithRenderer = | 580 final VideoTrackWithRenderer videoTrackWithRenderer = |
| 581 createVideoTrackWithFakeAsyncRenderer(capturerInstance.capturer); | 581 createVideoTrackWithFakeAsyncRenderer(capturerInstance.capturer); |
| 582 // Wait for at least one frame that has not been returned. | 582 // Wait for at least one frame that has not been returned. |
| 583 assertFalse(videoTrackWithRenderer.fakeAsyncRenderer.waitForPendingFrames().
isEmpty()); | 583 assertFalse(videoTrackWithRenderer.fakeAsyncRenderer.waitForPendingFrames().
isEmpty()); |
| 584 | 584 |
| 585 capturerInstance.capturer.stopCapture(); | 585 capturerInstance.capturer.stopCapture(); |
| 586 | 586 |
| 587 // Dispose everything. | 587 // Dispose everything. |
| 588 disposeCapturer(capturerInstance); |
| 588 disposeVideoTrackWithRenderer(videoTrackWithRenderer); | 589 disposeVideoTrackWithRenderer(videoTrackWithRenderer); |
| 589 disposeCapturer(capturerInstance); | |
| 590 | 590 |
| 591 // Return the frame(s), on a different thread out of spite. | 591 // Return the frame(s), on a different thread out of spite. |
| 592 final List<I420Frame> pendingFrames = | 592 final List<I420Frame> pendingFrames = |
| 593 videoTrackWithRenderer.fakeAsyncRenderer.waitForPendingFrames(); | 593 videoTrackWithRenderer.fakeAsyncRenderer.waitForPendingFrames(); |
| 594 final Thread returnThread = new Thread(new Runnable() { | 594 final Thread returnThread = new Thread(new Runnable() { |
| 595 @Override | 595 @Override |
| 596 public void run() { | 596 public void run() { |
| 597 for (I420Frame frame : pendingFrames) { | 597 for (I420Frame frame : pendingFrames) { |
| 598 VideoRenderer.renderFrameDone(frame); | 598 VideoRenderer.renderFrameDone(frame); |
| 599 } | 599 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 int numberOfInspectedFrames = 0; | 636 int numberOfInspectedFrames = 0; |
| 637 | 637 |
| 638 do { | 638 do { |
| 639 videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender(); | 639 videoTrackWithRenderer.rendererCallbacks.waitForNextFrameToRender(); |
| 640 ++numberOfInspectedFrames; | 640 ++numberOfInspectedFrames; |
| 641 | 641 |
| 642 gotExpectedResolution = (videoTrackWithRenderer.rendererCallbacks.frameWid
th() == scaledWidth | 642 gotExpectedResolution = (videoTrackWithRenderer.rendererCallbacks.frameWid
th() == scaledWidth |
| 643 && videoTrackWithRenderer.rendererCallbacks.frameHeight() == scaledHe
ight); | 643 && videoTrackWithRenderer.rendererCallbacks.frameHeight() == scaledHe
ight); |
| 644 } while (!gotExpectedResolution && numberOfInspectedFrames < 30); | 644 } while (!gotExpectedResolution && numberOfInspectedFrames < 30); |
| 645 | 645 |
| 646 disposeCapturer(capturerInstance); |
| 646 disposeVideoTrackWithRenderer(videoTrackWithRenderer); | 647 disposeVideoTrackWithRenderer(videoTrackWithRenderer); |
| 647 disposeCapturer(capturerInstance); | |
| 648 | 648 |
| 649 assertTrue(gotExpectedResolution); | 649 assertTrue(gotExpectedResolution); |
| 650 } | 650 } |
| 651 | 651 |
| 652 public void startWhileCameraIsAlreadyOpen() throws InterruptedException { | 652 public void startWhileCameraIsAlreadyOpen() throws InterruptedException { |
| 653 final String cameraName = testObjectFactory.getNameOfBackFacingDevice(); | 653 final String cameraName = testObjectFactory.getNameOfBackFacingDevice(); |
| 654 // At this point camera is not actually opened. | 654 // At this point camera is not actually opened. |
| 655 final CapturerInstance capturerInstance = createCapturer(cameraName, true /*
initialize */); | 655 final CapturerInstance capturerInstance = createCapturer(cameraName, true /*
initialize */); |
| 656 | 656 |
| 657 final Object competingCamera = testObjectFactory.rawOpenCamera(cameraName); | 657 final Object competingCamera = testObjectFactory.rawOpenCamera(cameraName); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 702 final Object competingCamera = testObjectFactory.rawOpenCamera(cameraName); | 702 final Object competingCamera = testObjectFactory.rawOpenCamera(cameraName); |
| 703 | 703 |
| 704 startCapture(capturerInstance); | 704 startCapture(capturerInstance); |
| 705 | 705 |
| 706 capturerInstance.capturer.stopCapture(); | 706 capturerInstance.capturer.stopCapture(); |
| 707 disposeCapturer(capturerInstance); | 707 disposeCapturer(capturerInstance); |
| 708 | 708 |
| 709 testObjectFactory.rawCloseCamera(competingCamera); | 709 testObjectFactory.rawCloseCamera(competingCamera); |
| 710 } | 710 } |
| 711 } | 711 } |
| OLD | NEW |