Search in sources :

Example 6 with Clock

use of com.google.android.exoplayer2.util.Clock in project ExoPlayer by google.

the class RtspPlaybackTest method prepare_withSupportedTrack_playsTrackUntilEnded.

@Test
public void prepare_withSupportedTrack_playsTrackUntilEnded() throws Exception {
    ResponseProvider responseProvider = new ResponseProvider(clock, ImmutableList.of(aacRtpPacketStreamDump, mp4aLatmRtpPacketStreamDump), fakeRtpDataChannel);
    try (RtspServer rtspServer = new RtspServer(responseProvider)) {
        ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
        PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory);
        player.prepare();
        player.play();
        TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED);
        player.release();
        // Only setup the supported track (aac).
        assertThat(responseProvider.getDumpsForSetUpTracks()).containsExactly(aacRtpPacketStreamDump);
        DumpFileAsserts.assertOutput(applicationContext, playbackOutput, "playbackdumps/rtsp/aac.dump");
    }
}
Also used : PlaybackOutput(com.google.android.exoplayer2.robolectric.PlaybackOutput) ExoPlayer(com.google.android.exoplayer2.ExoPlayer) Test(org.junit.Test)

Example 7 with Clock

use of com.google.android.exoplayer2.util.Clock in project ExoPlayer by google.

the class RtspPlaybackTest method prepare_noSupportedTrack_throwsPreparationError.

@Test
public void prepare_noSupportedTrack_throwsPreparationError() throws Exception {
    try (RtspServer rtspServer = new RtspServer(new ResponseProvider(clock, ImmutableList.of(mp4aLatmRtpPacketStreamDump), fakeRtpDataChannel))) {
        ExoPlayer player = createExoPlayer(rtspServer.startAndGetPortNumber(), rtpDataChannelFactory);
        AtomicReference<Throwable> playbackError = new AtomicReference<>();
        player.prepare();
        player.addListener(new Listener() {

            @Override
            public void onPlayerError(PlaybackException error) {
                playbackError.set(error);
            }
        });
        RobolectricUtil.runMainLooperUntil(() -> playbackError.get() != null);
        player.release();
        assertThat(playbackError.get()).hasCauseThat().hasMessageThat().contains("No playable track.");
    }
}
Also used : PlaybackException(com.google.android.exoplayer2.PlaybackException) Listener(com.google.android.exoplayer2.Player.Listener) AtomicReference(java.util.concurrent.atomic.AtomicReference) ExoPlayer(com.google.android.exoplayer2.ExoPlayer) Test(org.junit.Test)

Example 8 with Clock

use of com.google.android.exoplayer2.util.Clock in project ExoPlayer by google.

the class RobolectricUtilTest method runMainLooperUntil_withConditionAlreadyTrue_returnsImmediately.

@Test
public void runMainLooperUntil_withConditionAlreadyTrue_returnsImmediately() throws Exception {
    Clock mockClock = mock(Clock.class);
    RobolectricUtil.runMainLooperUntil(() -> true, /* timeoutMs= */
    0, mockClock);
    verify(mockClock, atMost(1)).currentTimeMillis();
}
Also used : Clock(com.google.android.exoplayer2.util.Clock) Test(org.junit.Test)

Example 9 with Clock

use of com.google.android.exoplayer2.util.Clock in project ExoPlayer by google.

the class MetadataRetrieverTest method retrieveMetadata_heicStillPhoto_outputsEmptyMetadata.

@Test
public void retrieveMetadata_heicStillPhoto_outputsEmptyMetadata() throws Exception {
    MediaItem mediaItem = MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample_still_photo.heic"));
    ListenableFuture<TrackGroupArray> trackGroupsFuture = retrieveMetadata(context, mediaItem, clock);
    ShadowLooper.idleMainLooper();
    TrackGroupArray trackGroups = trackGroupsFuture.get(TEST_TIMEOUT_SEC, TimeUnit.SECONDS);
    assertThat(trackGroups.length).isEqualTo(1);
    assertThat(trackGroups.get(0).length).isEqualTo(1);
    assertThat(trackGroups.get(0).getFormat(0).metadata).isNull();
}
Also used : TrackGroupArray(com.google.android.exoplayer2.source.TrackGroupArray) Test(org.junit.Test)

Example 10 with Clock

use of com.google.android.exoplayer2.util.Clock in project ExoPlayer by google.

the class MetadataRetrieverTest method retrieveMetadata_multipleMediaItems_outputsExpectedMetadata.

@Test
public void retrieveMetadata_multipleMediaItems_outputsExpectedMetadata() throws Exception {
    MediaItem mediaItem1 = MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample.mp4"));
    MediaItem mediaItem2 = MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp3/bear-id3.mp3"));
    ListenableFuture<TrackGroupArray> trackGroupsFuture1 = retrieveMetadata(context, mediaItem1, clock);
    ListenableFuture<TrackGroupArray> trackGroupsFuture2 = retrieveMetadata(context, mediaItem2, clock);
    ShadowLooper.idleMainLooper();
    TrackGroupArray trackGroups1 = trackGroupsFuture1.get(TEST_TIMEOUT_SEC, TimeUnit.SECONDS);
    TrackGroupArray trackGroups2 = trackGroupsFuture2.get(TEST_TIMEOUT_SEC, TimeUnit.SECONDS);
    // First track group.
    assertThat(trackGroups1.length).isEqualTo(2);
    // First track group - Video group.
    assertThat(trackGroups1.get(0).length).isEqualTo(1);
    assertThat(trackGroups1.get(0).getFormat(0).sampleMimeType).isEqualTo(MimeTypes.VIDEO_H264);
    // First track group - Audio group.
    assertThat(trackGroups1.get(1).length).isEqualTo(1);
    assertThat(trackGroups1.get(1).getFormat(0).sampleMimeType).isEqualTo(MimeTypes.AUDIO_AAC);
    // Second track group.
    assertThat(trackGroups2.length).isEqualTo(1);
    // Second track group - Audio group.
    assertThat(trackGroups2.get(0).length).isEqualTo(1);
    assertThat(trackGroups2.get(0).getFormat(0).sampleMimeType).isEqualTo(MimeTypes.AUDIO_MPEG);
}
Also used : TrackGroupArray(com.google.android.exoplayer2.source.TrackGroupArray) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)16 ExoPlayer (com.google.android.exoplayer2.ExoPlayer)5 TrackGroupArray (com.google.android.exoplayer2.source.TrackGroupArray)5 FakeClock (com.google.android.exoplayer2.testutil.FakeClock)4 FakeMediaClockRenderer (com.google.android.exoplayer2.testutil.FakeMediaClockRenderer)4 Clock (com.google.android.exoplayer2.util.Clock)4 Listener (com.google.android.exoplayer2.Player.Listener)3 MediaSource (com.google.android.exoplayer2.source.MediaSource)2 FakeMediaSource (com.google.android.exoplayer2.testutil.FakeMediaSource)2 TestExoPlayerBuilder (com.google.android.exoplayer2.testutil.TestExoPlayerBuilder)2 MediaClock (com.google.android.exoplayer2.util.MediaClock)2 StandaloneMediaClock (com.google.android.exoplayer2.util.StandaloneMediaClock)2 ArrayList (java.util.ArrayList)2 Before (org.junit.Before)2 HandlerThread (android.os.HandlerThread)1 Nullable (androidx.annotation.Nullable)1 VisibleForTesting (androidx.annotation.VisibleForTesting)1 AndroidJUnit4 (androidx.test.ext.junit.runners.AndroidJUnit4)1 DefaultLoadControl (com.google.android.exoplayer2.DefaultLoadControl)1 Format (com.google.android.exoplayer2.Format)1