Search in sources :

Example 36 with Allocator

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

the class AdsMediaSource method createPeriod.

@Override
public MediaPeriod createPeriod(MediaPeriodId id, Allocator allocator, long startPositionUs) {
    AdPlaybackState adPlaybackState = checkNotNull(this.adPlaybackState);
    if (adPlaybackState.adGroupCount > 0 && id.isAd()) {
        int adGroupIndex = id.adGroupIndex;
        int adIndexInAdGroup = id.adIndexInAdGroup;
        if (adMediaSourceHolders[adGroupIndex].length <= adIndexInAdGroup) {
            int adCount = adIndexInAdGroup + 1;
            adMediaSourceHolders[adGroupIndex] = Arrays.copyOf(adMediaSourceHolders[adGroupIndex], adCount);
        }
        @Nullable AdMediaSourceHolder adMediaSourceHolder = adMediaSourceHolders[adGroupIndex][adIndexInAdGroup];
        if (adMediaSourceHolder == null) {
            adMediaSourceHolder = new AdMediaSourceHolder(id);
            adMediaSourceHolders[adGroupIndex][adIndexInAdGroup] = adMediaSourceHolder;
            maybeUpdateAdMediaSources();
        }
        return adMediaSourceHolder.createMediaPeriod(id, allocator, startPositionUs);
    } else {
        MaskingMediaPeriod mediaPeriod = new MaskingMediaPeriod(id, allocator, startPositionUs);
        mediaPeriod.setMediaSource(contentMediaSource);
        mediaPeriod.createPeriod(id);
        return mediaPeriod;
    }
}
Also used : MaskingMediaPeriod(com.google.android.exoplayer2.source.MaskingMediaPeriod) Nullable(androidx.annotation.Nullable)

Aggregations

FakeMediaSource (com.google.android.exoplayer2.testutil.FakeMediaSource)19 FakeTimeline (com.google.android.exoplayer2.testutil.FakeTimeline)18 MediaPeriodId (com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)17 Test (org.junit.Test)17 Allocator (com.google.android.exoplayer2.upstream.Allocator)15 Nullable (androidx.annotation.Nullable)14 FakeMediaPeriod (com.google.android.exoplayer2.testutil.FakeMediaPeriod)13 TransferListener (com.google.android.exoplayer2.upstream.TransferListener)13 DrmSessionManager (com.google.android.exoplayer2.drm.DrmSessionManager)12 TrackGroupArray (com.google.android.exoplayer2.source.TrackGroupArray)12 TestExoPlayerBuilder (com.google.android.exoplayer2.testutil.TestExoPlayerBuilder)11 DrmSessionEventListener (com.google.android.exoplayer2.drm.DrmSessionEventListener)9 ExoPlayerTestRunner (com.google.android.exoplayer2.testutil.ExoPlayerTestRunner)8 MaskingMediaSource (com.google.android.exoplayer2.source.MaskingMediaSource)7 MediaPeriod (com.google.android.exoplayer2.source.MediaPeriod)7 MediaSource (com.google.android.exoplayer2.source.MediaSource)7 SinglePeriodTimeline (com.google.android.exoplayer2.source.SinglePeriodTimeline)7 ActionSchedule (com.google.android.exoplayer2.testutil.ActionSchedule)7 TimelineWindowDefinition (com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition)7 NoUidTimeline (com.google.android.exoplayer2.testutil.NoUidTimeline)7