当前位置: 首页>>代码示例>>Java>>正文


Java C.TIME_END_OF_SOURCE属性代码示例

本文整理汇总了Java中com.google.android.exoplayer2.C.TIME_END_OF_SOURCE属性的典型用法代码示例。如果您正苦于以下问题:Java C.TIME_END_OF_SOURCE属性的具体用法?Java C.TIME_END_OF_SOURCE怎么用?Java C.TIME_END_OF_SOURCE使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在com.google.android.exoplayer2.C的用法示例。


在下文中一共展示了C.TIME_END_OF_SOURCE属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: onPositionDiscontinuity

@Override
public void onPositionDiscontinuity(@Player.DiscontinuityReason int reason) {
  if (adsManager == null) {
    return;
  }
  if (!playingAd && !player.isPlayingAd()) {
    checkForContentComplete();
    if (sentContentComplete) {
      for (int i = 0; i < adPlaybackState.adGroupCount; i++) {
        if (adPlaybackState.adGroupTimesUs[i] != C.TIME_END_OF_SOURCE) {
          adPlaybackState.playedAdGroup(i);
        }
      }
      updateAdPlaybackState();
    } else {
      long positionMs = player.getCurrentPosition();
      timeline.getPeriod(0, period);
      if (period.getAdGroupIndexForPositionUs(C.msToUs(positionMs)) != C.INDEX_UNSET) {
        sentPendingContentPositionMs = false;
        pendingContentPositionMs = positionMs;
      }
    }
  } else {
    updateImaStateForPlayerState();
  }
}
 
开发者ID:yangchaojiang,项目名称:yjPlay,代码行数:26,代码来源:ImaAdsLoader.java

示例2: updateImaStateForPlayerState

private void updateImaStateForPlayerState() {
  boolean wasPlayingAd = playingAd;
  playingAd = player.isPlayingAd();
  if (!sentContentComplete) {
    boolean adFinished = (wasPlayingAd && !playingAd)
        || playingAdIndexInAdGroup != player.getCurrentAdIndexInAdGroup();
    if (adFinished) {
      // IMA is waiting for the ad playback to finish so invoke the callback now.
      // Either CONTENT_RESUME_REQUESTED will be passed next, or playAd will be called again.
      for (int i = 0; i < adCallbacks.size(); i++) {
        adCallbacks.get(i).onEnded();
      }
    }
    if (!wasPlayingAd && playingAd) {
      int adGroupIndex = player.getCurrentAdGroupIndex();
      // IMA hasn't sent CONTENT_PAUSE_REQUESTED yet, so fake the content position.
      fakeContentProgressElapsedRealtimeMs = SystemClock.elapsedRealtime();
      fakeContentProgressOffsetMs = C.usToMs(adPlaybackState.adGroupTimesUs[adGroupIndex]);
      if (fakeContentProgressOffsetMs == C.TIME_END_OF_SOURCE) {
        fakeContentProgressOffsetMs = contentDurationMs;
      }
    }
  }
  playingAdIndexInAdGroup = playingAd ? player.getCurrentAdIndexInAdGroup() : C.INDEX_UNSET;
}
 
开发者ID:yangchaojiang,项目名称:yjPlay,代码行数:25,代码来源:ImaAdsLoader.java

示例3: getBufferedPositionUs

public long getBufferedPositionUs() {
  if (loadingFinished) {
    return C.TIME_END_OF_SOURCE;
  } else if (isPendingReset()) {
    return pendingResetPositionUs;
  } else {
    long bufferedPositionUs = lastSeekPositionUs;
    HlsMediaChunk lastMediaChunk = mediaChunks.getLast();
    HlsMediaChunk lastCompletedMediaChunk = lastMediaChunk.isLoadCompleted() ? lastMediaChunk
        : mediaChunks.size() > 1 ? mediaChunks.get(mediaChunks.size() - 2) : null;
    if (lastCompletedMediaChunk != null) {
      bufferedPositionUs = Math.max(bufferedPositionUs, lastCompletedMediaChunk.endTimeUs);
    }
    int sampleQueueCount = sampleQueues.size();
    for (int i = 0; i < sampleQueueCount; i++) {
      bufferedPositionUs = Math.max(bufferedPositionUs,
          sampleQueues.valueAt(i).getLargestQueuedTimestampUs());
    }
    return bufferedPositionUs;
  }
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:21,代码来源:HlsSampleStreamWrapper.java

示例4: ClippingTimeline

/**
 * Creates a new clipping timeline that wraps the specified timeline.
 *
 * @param timeline The timeline to clip.
 * @param startUs The number of microseconds to clip from the start of {@code timeline}.
 * @param endUs The end position in microseconds for the clipped timeline relative to the start
 *     of {@code timeline}, or {@link C#TIME_END_OF_SOURCE} to clip no samples from the end.
 */
public ClippingTimeline(Timeline timeline, long startUs, long endUs) {
  Assertions.checkArgument(timeline.getWindowCount() == 1);
  Assertions.checkArgument(timeline.getPeriodCount() == 1);
  Window window = timeline.getWindow(0, new Window(), false);
  Assertions.checkArgument(!window.isDynamic);
  long resolvedEndUs = endUs == C.TIME_END_OF_SOURCE ? window.durationUs : endUs;
  if (window.durationUs != C.TIME_UNSET) {
    Assertions.checkArgument(startUs == 0 || window.isSeekable);
    Assertions.checkArgument(resolvedEndUs <= window.durationUs);
    Assertions.checkArgument(startUs <= resolvedEndUs);
  }
  Period period = timeline.getPeriod(0, new Period());
  Assertions.checkArgument(period.getPositionInWindowUs() == 0);
  this.timeline = timeline;
  this.startUs = startUs;
  this.endUs = resolvedEndUs;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:25,代码来源:ClippingMediaSource.java

示例5: readData

@Override
public int readData(FormatHolder formatHolder, DecoderInputBuffer buffer,
    boolean requireFormat) {
  if (pendingDiscontinuity) {
    return C.RESULT_NOTHING_READ;
  }
  if (sentEos) {
    buffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM);
    return C.RESULT_BUFFER_READ;
  }
  int result = stream.readData(formatHolder, buffer, requireFormat);
  // TODO: Clear gapless playback metadata if a format was read (if applicable).
  if (endUs != C.TIME_END_OF_SOURCE && ((result == C.RESULT_BUFFER_READ
      && buffer.timeUs >= endUs) || (result == C.RESULT_NOTHING_READ
      && mediaPeriod.getBufferedPositionUs() == C.TIME_END_OF_SOURCE))) {
    buffer.clear();
    buffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM);
    sentEos = true;
    return C.RESULT_BUFFER_READ;
  }
  if (result == C.RESULT_BUFFER_READ && !buffer.isEndOfStream()) {
    buffer.timeUs -= startUs;
  }
  return result;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:25,代码来源:ClippingMediaPeriod.java

示例6: getBufferedPositionUs

@Override
public long getBufferedPositionUs() {
  if (loadingFinished) {
    return C.TIME_END_OF_SOURCE;
  } else if (isPendingReset()) {
    return pendingResetPositionUs;
  }
  long largestQueuedTimestampUs;
  if (haveAudioVideoTracks) {
    // Ignore non-AV tracks, which may be sparse or poorly interleaved.
    largestQueuedTimestampUs = Long.MAX_VALUE;
    int trackCount = sampleQueues.size();
    for (int i = 0; i < trackCount; i++) {
      if (trackIsAudioVideoFlags[i]) {
        largestQueuedTimestampUs = Math.min(largestQueuedTimestampUs,
            sampleQueues.valueAt(i).getLargestQueuedTimestampUs());
      }
    }
  } else {
    largestQueuedTimestampUs = getLargestQueuedTimestampUs();
  }
  return largestQueuedTimestampUs == Long.MIN_VALUE ? lastSeekPositionUs
      : largestQueuedTimestampUs;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:24,代码来源:ExtractorMediaPeriod.java

示例7: getBufferedPositionUs

/**
 * Returns an estimate of the position up to which data is buffered.
 *
 * @return An estimate of the absolute position in microseconds up to which data is buffered, or
 *     {@link C#TIME_END_OF_SOURCE} if the track is fully buffered.
 */
public long getBufferedPositionUs() {
  if (loadingFinished) {
    return C.TIME_END_OF_SOURCE;
  } else if (isPendingReset()) {
    return pendingResetPositionUs;
  } else {
    long bufferedPositionUs = lastSeekPositionUs;
    BaseMediaChunk lastMediaChunk = mediaChunks.getLast();
    BaseMediaChunk lastCompletedMediaChunk = lastMediaChunk.isLoadCompleted() ? lastMediaChunk
        : mediaChunks.size() > 1 ? mediaChunks.get(mediaChunks.size() - 2) : null;
    if (lastCompletedMediaChunk != null) {
      bufferedPositionUs = Math.max(bufferedPositionUs, lastCompletedMediaChunk.endTimeUs);
    }
    return Math.max(bufferedPositionUs, primarySampleQueue.getLargestQueuedTimestampUs());
  }
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:22,代码来源:ChunkSampleStream.java

示例8: continueLoading

@Override
public boolean continueLoading(long positionUs) {
  boolean madeProgress = false;
  boolean madeProgressThisIteration;
  do {
    madeProgressThisIteration = false;
    long nextLoadPositionUs = getNextLoadPositionUs();
    if (nextLoadPositionUs == C.TIME_END_OF_SOURCE) {
      break;
    }
    for (SequenceableLoader loader : loaders) {
      if (loader.getNextLoadPositionUs() == nextLoadPositionUs) {
        madeProgressThisIteration |= loader.continueLoading(positionUs);
      }
    }
    madeProgress |= madeProgressThisIteration;
  } while (madeProgressThisIteration);
  return madeProgress;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:19,代码来源:CompositeSequenceableLoader.java

示例9: getAdGroupTimesUs

private static long[] getAdGroupTimesUs(List<Float> cuePoints) {
  if (cuePoints.isEmpty()) {
    // If no cue points are specified, there is a preroll ad.
    return new long[] {0};
  }

  int count = cuePoints.size();
  long[] adGroupTimesUs = new long[count];
  for (int i = 0; i < count; i++) {
    double cuePoint = cuePoints.get(i);
    adGroupTimesUs[i] =
        cuePoint == -1.0 ? C.TIME_END_OF_SOURCE : (long) (C.MICROS_PER_SECOND * cuePoint);
  }
  return adGroupTimesUs;
}
 
开发者ID:yangchaojiang,项目名称:yjPlay,代码行数:15,代码来源:ImaAdsLoader.java

示例10: getBufferedPositionUs

@Override
public long getBufferedPositionUs() {
  long bufferedPositionUs = Long.MAX_VALUE;
  for (HlsSampleStreamWrapper sampleStreamWrapper : enabledSampleStreamWrappers) {
    long rendererBufferedPositionUs = sampleStreamWrapper.getBufferedPositionUs();
    if (rendererBufferedPositionUs != C.TIME_END_OF_SOURCE) {
      bufferedPositionUs = Math.min(bufferedPositionUs, rendererBufferedPositionUs);
    }
  }
  return bufferedPositionUs == Long.MAX_VALUE ? C.TIME_END_OF_SOURCE : bufferedPositionUs;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:11,代码来源:HlsMediaPeriod.java

示例11: getNextLoadPositionUs

@Override
public long getNextLoadPositionUs() {
  if (isPendingReset()) {
    return pendingResetPositionUs;
  } else {
    return loadingFinished ? C.TIME_END_OF_SOURCE : mediaChunks.getLast().endTimeUs;
  }
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:8,代码来源:HlsSampleStreamWrapper.java

示例12: onSourceInfoRefreshed

@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
  clippingTimeline = new ClippingTimeline(timeline, startUs, endUs);
  sourceListener.onSourceInfoRefreshed(clippingTimeline, manifest);
  long startUs = clippingTimeline.startUs;
  long endUs = clippingTimeline.endUs == C.TIME_UNSET ? C.TIME_END_OF_SOURCE
      : clippingTimeline.endUs;
  int count = mediaPeriods.size();
  for (int i = 0; i < count; i++) {
    mediaPeriods.get(i).setClipping(startUs, endUs);
  }
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:12,代码来源:ClippingMediaSource.java

示例13: getBufferedPositionUs

@Override
public long getBufferedPositionUs() {
  long bufferedPositionUs = mediaPeriod.getBufferedPositionUs();
  if (bufferedPositionUs == C.TIME_END_OF_SOURCE
      || (endUs != C.TIME_END_OF_SOURCE && bufferedPositionUs >= endUs)) {
    return C.TIME_END_OF_SOURCE;
  }
  return Math.max(0, bufferedPositionUs - startUs);
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:9,代码来源:ClippingMediaPeriod.java

示例14: getNextLoadPositionUs

@Override
public long getNextLoadPositionUs() {
  long nextLoadPositionUs = mediaPeriod.getNextLoadPositionUs();
  if (nextLoadPositionUs == C.TIME_END_OF_SOURCE
      || (endUs != C.TIME_END_OF_SOURCE && nextLoadPositionUs >= endUs)) {
    return C.TIME_END_OF_SOURCE;
  }
  return nextLoadPositionUs - startUs;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:9,代码来源:ClippingMediaPeriod.java

示例15: getNextLoadPositionUs

@Override
public long getNextLoadPositionUs() {
  long nextLoadPositionUs = Long.MAX_VALUE;
  for (SequenceableLoader loader : loaders) {
    long loaderNextLoadPositionUs = loader.getNextLoadPositionUs();
    if (loaderNextLoadPositionUs != C.TIME_END_OF_SOURCE) {
      nextLoadPositionUs = Math.min(nextLoadPositionUs, loaderNextLoadPositionUs);
    }
  }
  return nextLoadPositionUs == Long.MAX_VALUE ? C.TIME_END_OF_SOURCE : nextLoadPositionUs;
}
 
开发者ID:sanjaysingh1990,项目名称:Exoplayer2Radio,代码行数:11,代码来源:CompositeSequenceableLoader.java


注:本文中的com.google.android.exoplayer2.C.TIME_END_OF_SOURCE属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。