Search in sources :

Example 1 with Loader

use of com.google.android.exoplayer2.upstream.Loader in project ExoPlayer by google.

the class DashMediaSource method prepareSource.

// MediaSource implementation.
@Override
public void prepareSource(ExoPlayer player, boolean isTopLevelSource, Listener listener) {
    sourceListener = listener;
    if (sideloadedManifest) {
        loaderErrorThrower = new LoaderErrorThrower.Dummy();
        processManifest(false);
    } else {
        dataSource = manifestDataSourceFactory.createDataSource();
        loader = new Loader("Loader:DashMediaSource");
        loaderErrorThrower = loader;
        handler = new Handler();
        startLoadingManifest();
    }
}
Also used : LoaderErrorThrower(com.google.android.exoplayer2.upstream.LoaderErrorThrower) Loader(com.google.android.exoplayer2.upstream.Loader) Handler(android.os.Handler)

Example 2 with Loader

use of com.google.android.exoplayer2.upstream.Loader in project ExoPlayer by google.

the class ImaServerSideAdInsertionMediaSource method prepareSourceInternal.

@Override
public void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) {
    mainHandler.post(() -> assertSingleInstanceInPlaylist(checkNotNull(player)));
    super.prepareSourceInternal(mediaTransferListener);
    if (loader == null) {
        Loader loader = new Loader("ImaServerSideAdInsertionMediaSource");
        player.addListener(componentListener);
        StreamManagerLoadable streamManagerLoadable = new StreamManagerLoadable(sdkAdsLoader, streamRequest, streamPlayer, applicationAdErrorListener, loadVideoTimeoutMs);
        loader.startLoading(streamManagerLoadable, new StreamManagerLoadableCallback(), /* defaultMinRetryCount= */
        0);
        this.loader = loader;
    }
}
Also used : Loader(com.google.android.exoplayer2.upstream.Loader)

Example 3 with Loader

use of com.google.android.exoplayer2.upstream.Loader in project ExoPlayer by google.

the class ChunkSampleStream method release.

/**
 * Releases the stream.
 *
 * <p>This method should be called when the stream is no longer required. Either this method or
 * {@link #release()} can be used to release this stream.
 *
 * @param callback An optional callback to be called on the loading thread once the loader has
 *     been released.
 */
public void release(@Nullable ReleaseCallback<T> callback) {
    this.releaseCallback = callback;
    // Discard as much as we can synchronously.
    primarySampleQueue.preRelease();
    for (SampleQueue embeddedSampleQueue : embeddedSampleQueues) {
        embeddedSampleQueue.preRelease();
    }
    loader.release(this);
}
Also used : SampleQueue(com.google.android.exoplayer2.source.SampleQueue)

Example 4 with Loader

use of com.google.android.exoplayer2.upstream.Loader in project ExoPlayer by google.

the class AdsMediaSourceTest method setUp.

@Before
public void setUp() {
    // Set up content and ad media sources, passing a null timeline so tests can simulate setting it
    // later.
    contentMediaSource = new FakeMediaSource(/* timeline= */
    null);
    prerollAdMediaSource = new FakeMediaSource(/* timeline= */
    null);
    MediaSource.Factory adMediaSourceFactory = mock(MediaSource.Factory.class);
    when(adMediaSourceFactory.createMediaSource(any(MediaItem.class))).thenReturn(prerollAdMediaSource);
    // Prepare the AdsMediaSource and capture its ads loader listener.
    AdsLoader mockAdsLoader = mock(AdsLoader.class);
    AdViewProvider mockAdViewProvider = mock(AdViewProvider.class);
    ArgumentCaptor<EventListener> eventListenerArgumentCaptor = ArgumentCaptor.forClass(AdsLoader.EventListener.class);
    adsMediaSource = new AdsMediaSource(contentMediaSource, TEST_ADS_DATA_SPEC, TEST_ADS_ID, adMediaSourceFactory, mockAdsLoader, mockAdViewProvider);
    adsMediaSource.prepareSource(mockMediaSourceCaller, /* mediaTransferListener= */
    null, PlayerId.UNSET);
    shadowOf(Looper.getMainLooper()).idle();
    verify(mockAdsLoader).start(eq(adsMediaSource), eq(TEST_ADS_DATA_SPEC), eq(TEST_ADS_ID), eq(mockAdViewProvider), eventListenerArgumentCaptor.capture());
    // Simulate loading a preroll ad.
    AdsLoader.EventListener adsLoaderEventListener = eventListenerArgumentCaptor.getValue();
    adsLoaderEventListener.onAdPlaybackState(AD_PLAYBACK_STATE);
    shadowOf(Looper.getMainLooper()).idle();
}
Also used : FakeMediaSource(com.google.android.exoplayer2.testutil.FakeMediaSource) MediaSource(com.google.android.exoplayer2.source.MediaSource) FakeMediaSource(com.google.android.exoplayer2.testutil.FakeMediaSource) MediaItem(com.google.android.exoplayer2.MediaItem) AdViewProvider(com.google.android.exoplayer2.ui.AdViewProvider) EventListener(com.google.android.exoplayer2.source.ads.AdsLoader.EventListener) EventListener(com.google.android.exoplayer2.source.ads.AdsLoader.EventListener) Before(org.junit.Before)

Example 5 with Loader

use of com.google.android.exoplayer2.upstream.Loader in project ExoPlayer by google.

the class SsMediaSource method prepareSourceInternal.

@Override
protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) {
    this.mediaTransferListener = mediaTransferListener;
    drmSessionManager.prepare();
    drmSessionManager.setPlayer(/* playbackLooper= */
    Looper.myLooper(), getPlayerId());
    if (sideloadedManifest) {
        manifestLoaderErrorThrower = new LoaderErrorThrower.Dummy();
        processManifest();
    } else {
        manifestDataSource = manifestDataSourceFactory.createDataSource();
        manifestLoader = new Loader("SsMediaSource");
        manifestLoaderErrorThrower = manifestLoader;
        manifestRefreshHandler = Util.createHandlerForCurrentLooper();
        startLoadingManifest();
    }
}
Also used : LoaderErrorThrower(com.google.android.exoplayer2.upstream.LoaderErrorThrower) SequenceableLoader(com.google.android.exoplayer2.source.SequenceableLoader) Loader(com.google.android.exoplayer2.upstream.Loader)

Aggregations

Loader (com.google.android.exoplayer2.upstream.Loader)7 LoaderErrorThrower (com.google.android.exoplayer2.upstream.LoaderErrorThrower)3 Handler (android.os.Handler)2 MediaSource (com.google.android.exoplayer2.source.MediaSource)2 FakeMediaSource (com.google.android.exoplayer2.testutil.FakeMediaSource)2 Before (org.junit.Before)2 Context (android.content.Context)1 Intent (android.content.Intent)1 SurfaceTexture (android.graphics.SurfaceTexture)1 AudioManager (android.media.AudioManager)1 Uri (android.net.Uri)1 Looper (android.os.Looper)1 Surface (android.view.Surface)1 Nullable (androidx.annotation.Nullable)1 ApplicationProvider (androidx.test.core.app.ApplicationProvider)1 AndroidJUnit4 (androidx.test.ext.junit.runners.AndroidJUnit4)1 MediaItem (com.google.android.exoplayer2.MediaItem)1 COMMAND_ADJUST_DEVICE_VOLUME (com.google.android.exoplayer2.Player.COMMAND_ADJUST_DEVICE_VOLUME)1 COMMAND_CHANGE_MEDIA_ITEMS (com.google.android.exoplayer2.Player.COMMAND_CHANGE_MEDIA_ITEMS)1 COMMAND_GET_AUDIO_ATTRIBUTES (com.google.android.exoplayer2.Player.COMMAND_GET_AUDIO_ATTRIBUTES)1