Java 类com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifest 实例源码

项目:K-Sonic    文件:SsMediaSource.java   
private SsMediaSource(SsManifest manifest, Uri manifestUri,
    DataSource.Factory manifestDataSourceFactory, SsManifestParser manifestParser,
    SsChunkSource.Factory chunkSourceFactory, int minLoadableRetryCount,
    long livePresentationDelayMs, Handler eventHandler,
    AdaptiveMediaSourceEventListener eventListener) {
  Assertions.checkState(manifest == null || !manifest.isLive);
  this.manifest = manifest;
  this.manifestUri = manifestUri == null ? null
      : Util.toLowerInvariant(manifestUri.getLastPathSegment()).equals("manifest") ? manifestUri
          : Uri.withAppendedPath(manifestUri, "Manifest");
  this.manifestDataSourceFactory = manifestDataSourceFactory;
  this.manifestParser = manifestParser;
  this.chunkSourceFactory = chunkSourceFactory;
  this.minLoadableRetryCount = minLoadableRetryCount;
  this.livePresentationDelayMs = livePresentationDelayMs;
  this.eventDispatcher = new EventDispatcher(eventHandler, eventListener);
  mediaPeriods = new ArrayList<>();
}
项目:K-Sonic    文件:DefaultSsChunkSource.java   
/**
 * @param manifestLoaderErrorThrower Throws errors affecting loading of manifests.
 * @param manifest The initial manifest.
 * @param elementIndex The index of the stream element in the manifest.
 * @param trackSelection The track selection.
 * @param dataSource A {@link DataSource} suitable for loading the media data.
 * @param trackEncryptionBoxes Track encryption boxes for the stream.
 */
public DefaultSsChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, SsManifest manifest,
    int elementIndex, TrackSelection trackSelection, DataSource dataSource,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.manifest = manifest;
  this.elementIndex = elementIndex;
  this.trackSelection = trackSelection;
  this.dataSource = dataSource;

  StreamElement streamElement = manifest.streamElements[elementIndex];

  extractorWrappers = new ChunkExtractorWrapper[trackSelection.length()];
  for (int i = 0; i < extractorWrappers.length; i++) {
    int manifestTrackIndex = trackSelection.getIndexInTrackGroup(i);
    Format format = streamElement.formats[manifestTrackIndex];
    int nalUnitLengthFieldLength = streamElement.type == C.TRACK_TYPE_VIDEO ? 4 : 0;
    Track track = new Track(manifestTrackIndex, streamElement.type, streamElement.timescale,
        C.TIME_UNSET, manifest.durationUs, format, Track.TRANSFORMATION_NONE,
        trackEncryptionBoxes, nalUnitLengthFieldLength, null, null);
    FragmentedMp4Extractor extractor = new FragmentedMp4Extractor(
        FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
        | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, null, track);
    extractorWrappers[i] = new ChunkExtractorWrapper(extractor, format);
  }
}
项目:K-Sonic    文件:DefaultSsChunkSource.java   
@Override
public void updateManifest(SsManifest newManifest) {
  StreamElement currentElement = manifest.streamElements[elementIndex];
  int currentElementChunkCount = currentElement.chunkCount;
  StreamElement newElement = newManifest.streamElements[elementIndex];
  if (currentElementChunkCount == 0 || newElement.chunkCount == 0) {
    // There's no overlap between the old and new elements because at least one is empty.
    currentManifestChunkOffset += currentElementChunkCount;
  } else {
    long currentElementEndTimeUs = currentElement.getStartTimeUs(currentElementChunkCount - 1)
        + currentElement.getChunkDurationUs(currentElementChunkCount - 1);
    long newElementStartTimeUs = newElement.getStartTimeUs(0);
    if (currentElementEndTimeUs <= newElementStartTimeUs) {
      // There's no overlap between the old and new elements.
      currentManifestChunkOffset += currentElementChunkCount;
    } else {
      // The new element overlaps with the old one.
      currentManifestChunkOffset += currentElement.getChunkIndex(newElementStartTimeUs);
    }
  }
  manifest = newManifest;
}
项目:K-Sonic    文件:SsMediaPeriod.java   
public SsMediaPeriod(SsManifest manifest, SsChunkSource.Factory chunkSourceFactory,
    int minLoadableRetryCount, EventDispatcher eventDispatcher,
    LoaderErrorThrower manifestLoaderErrorThrower, Allocator allocator) {
  this.chunkSourceFactory = chunkSourceFactory;
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.minLoadableRetryCount = minLoadableRetryCount;
  this.eventDispatcher = eventDispatcher;
  this.allocator = allocator;

  trackGroups = buildTrackGroups(manifest);
  ProtectionElement protectionElement = manifest.protectionElement;
  if (protectionElement != null) {
    byte[] keyId = getProtectionElementKeyId(protectionElement.data);
    trackEncryptionBoxes = new TrackEncryptionBox[] {
        new TrackEncryptionBox(true, INITIALIZATION_VECTOR_SIZE, keyId)};
  } else {
    trackEncryptionBoxes = null;
  }
  this.manifest = manifest;
  sampleStreams = newSampleStreamArray(0);
  sequenceableLoader = new CompositeSequenceableLoader(sampleStreams);
}
项目:videoPickPlayer    文件:DefaultSsChunkSource.java   
/**
 * @param manifestLoaderErrorThrower Throws errors affecting loading of manifests.
 * @param manifest The initial manifest.
 * @param elementIndex The index of the stream element in the manifest.
 * @param trackSelection The track selection.
 * @param dataSource A {@link DataSource} suitable for loading the media data.
 * @param trackEncryptionBoxes Track encryption boxes for the stream.
 */
public DefaultSsChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, SsManifest manifest,
    int elementIndex, TrackSelection trackSelection, DataSource dataSource,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.manifest = manifest;
  this.elementIndex = elementIndex;
  this.trackSelection = trackSelection;
  this.dataSource = dataSource;

  StreamElement streamElement = manifest.streamElements[elementIndex];

  extractorWrappers = new ChunkExtractorWrapper[trackSelection.length()];
  for (int i = 0; i < extractorWrappers.length; i++) {
    int manifestTrackIndex = trackSelection.getIndexInTrackGroup(i);
    Format format = streamElement.formats[manifestTrackIndex];
    int nalUnitLengthFieldLength = streamElement.type == C.TRACK_TYPE_VIDEO ? 4 : 0;
    Track track = new Track(manifestTrackIndex, streamElement.type, streamElement.timescale,
        C.TIME_UNSET, manifest.durationUs, format, Track.TRANSFORMATION_NONE,
        trackEncryptionBoxes, nalUnitLengthFieldLength, null, null);
    FragmentedMp4Extractor extractor = new FragmentedMp4Extractor(
        FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
        | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, track, null);
    extractorWrappers[i] = new ChunkExtractorWrapper(extractor, format, false, false);
  }
}
项目:videoPickPlayer    文件:DefaultSsChunkSource.java   
@Override
public void updateManifest(SsManifest newManifest) {
  StreamElement currentElement = manifest.streamElements[elementIndex];
  int currentElementChunkCount = currentElement.chunkCount;
  StreamElement newElement = newManifest.streamElements[elementIndex];
  if (currentElementChunkCount == 0 || newElement.chunkCount == 0) {
    // There's no overlap between the old and new elements because at least one is empty.
    currentManifestChunkOffset += currentElementChunkCount;
  } else {
    long currentElementEndTimeUs = currentElement.getStartTimeUs(currentElementChunkCount - 1)
        + currentElement.getChunkDurationUs(currentElementChunkCount - 1);
    long newElementStartTimeUs = newElement.getStartTimeUs(0);
    if (currentElementEndTimeUs <= newElementStartTimeUs) {
      // There's no overlap between the old and new elements.
      currentManifestChunkOffset += currentElementChunkCount;
    } else {
      // The new element overlaps with the old one.
      currentManifestChunkOffset += currentElement.getChunkIndex(newElementStartTimeUs);
    }
  }
  manifest = newManifest;
}
项目:videoPickPlayer    文件:SsMediaPeriod.java   
public SsMediaPeriod(SsManifest manifest, SsChunkSource.Factory chunkSourceFactory,
    int minLoadableRetryCount, EventDispatcher eventDispatcher,
    LoaderErrorThrower manifestLoaderErrorThrower, Allocator allocator) {
  this.chunkSourceFactory = chunkSourceFactory;
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.minLoadableRetryCount = minLoadableRetryCount;
  this.eventDispatcher = eventDispatcher;
  this.allocator = allocator;

  trackGroups = buildTrackGroups(manifest);
  ProtectionElement protectionElement = manifest.protectionElement;
  if (protectionElement != null) {
    byte[] keyId = getProtectionElementKeyId(protectionElement.data);
    trackEncryptionBoxes = new TrackEncryptionBox[] {
        new TrackEncryptionBox(true, INITIALIZATION_VECTOR_SIZE, keyId)};
  } else {
    trackEncryptionBoxes = null;
  }
  this.manifest = manifest;
  sampleStreams = newSampleStreamArray(0);
  sequenceableLoader = new CompositeSequenceableLoader(sampleStreams);
}
项目:transistor    文件:SsMediaSource.java   
/**
 * Returns a new {@link SsMediaSource} using the current parameters and the specified sideloaded
 * manifest.
 *
 * @param manifest The manifest. {@link SsManifest#isLive} must be false.
 * @param eventHandler A handler for events.
 * @param eventListener A listener of events.
 * @return The new {@link SsMediaSource}.
 * @throws IllegalArgumentException If {@link SsManifest#isLive} is true.
 */
public SsMediaSource createMediaSource(
    SsManifest manifest,
    @Nullable Handler eventHandler,
    @Nullable MediaSourceEventListener eventListener) {
  Assertions.checkArgument(!manifest.isLive);
  isCreateCalled = true;
  return new SsMediaSource(
      manifest,
      null,
      null,
      null,
      chunkSourceFactory,
      minLoadableRetryCount,
      livePresentationDelayMs,
      eventHandler,
      eventListener);
}
项目:transistor    文件:SsMediaSource.java   
private SsMediaSource(SsManifest manifest, Uri manifestUri,
    DataSource.Factory manifestDataSourceFactory,
    ParsingLoadable.Parser<? extends SsManifest> manifestParser,
    SsChunkSource.Factory chunkSourceFactory, int minLoadableRetryCount,
    long livePresentationDelayMs, Handler eventHandler,
    MediaSourceEventListener eventListener) {
  Assertions.checkState(manifest == null || !manifest.isLive);
  this.manifest = manifest;
  this.manifestUri = manifestUri == null ? null
      : Util.toLowerInvariant(manifestUri.getLastPathSegment()).matches("manifest(\\(.+\\))?")
          ? manifestUri : Uri.withAppendedPath(manifestUri, "Manifest");
  this.manifestDataSourceFactory = manifestDataSourceFactory;
  this.manifestParser = manifestParser;
  this.chunkSourceFactory = chunkSourceFactory;
  this.minLoadableRetryCount = minLoadableRetryCount;
  this.livePresentationDelayMs = livePresentationDelayMs;
  this.eventDispatcher = new EventDispatcher(eventHandler, eventListener);
  mediaPeriods = new ArrayList<>();
}
项目:transistor    文件:DefaultSsChunkSource.java   
/**
 * @param manifestLoaderErrorThrower Throws errors affecting loading of manifests.
 * @param manifest The initial manifest.
 * @param elementIndex The index of the stream element in the manifest.
 * @param trackSelection The track selection.
 * @param dataSource A {@link DataSource} suitable for loading the media data.
 * @param trackEncryptionBoxes Track encryption boxes for the stream.
 */
public DefaultSsChunkSource(LoaderErrorThrower manifestLoaderErrorThrower, SsManifest manifest,
    int elementIndex, TrackSelection trackSelection, DataSource dataSource,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.manifest = manifest;
  this.elementIndex = elementIndex;
  this.trackSelection = trackSelection;
  this.dataSource = dataSource;

  StreamElement streamElement = manifest.streamElements[elementIndex];

  extractorWrappers = new ChunkExtractorWrapper[trackSelection.length()];
  for (int i = 0; i < extractorWrappers.length; i++) {
    int manifestTrackIndex = trackSelection.getIndexInTrackGroup(i);
    Format format = streamElement.formats[manifestTrackIndex];
    int nalUnitLengthFieldLength = streamElement.type == C.TRACK_TYPE_VIDEO ? 4 : 0;
    Track track = new Track(manifestTrackIndex, streamElement.type, streamElement.timescale,
        C.TIME_UNSET, manifest.durationUs, format, Track.TRANSFORMATION_NONE,
        trackEncryptionBoxes, nalUnitLengthFieldLength, null, null);
    FragmentedMp4Extractor extractor = new FragmentedMp4Extractor(
        FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
        | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, null, track, null);
    extractorWrappers[i] = new ChunkExtractorWrapper(extractor, streamElement.type, format);
  }
}
项目:transistor    文件:DefaultSsChunkSource.java   
@Override
public void updateManifest(SsManifest newManifest) {
  StreamElement currentElement = manifest.streamElements[elementIndex];
  int currentElementChunkCount = currentElement.chunkCount;
  StreamElement newElement = newManifest.streamElements[elementIndex];
  if (currentElementChunkCount == 0 || newElement.chunkCount == 0) {
    // There's no overlap between the old and new elements because at least one is empty.
    currentManifestChunkOffset += currentElementChunkCount;
  } else {
    long currentElementEndTimeUs = currentElement.getStartTimeUs(currentElementChunkCount - 1)
        + currentElement.getChunkDurationUs(currentElementChunkCount - 1);
    long newElementStartTimeUs = newElement.getStartTimeUs(0);
    if (currentElementEndTimeUs <= newElementStartTimeUs) {
      // There's no overlap between the old and new elements.
      currentManifestChunkOffset += currentElementChunkCount;
    } else {
      // The new element overlaps with the old one.
      currentManifestChunkOffset += currentElement.getChunkIndex(newElementStartTimeUs);
    }
  }
  manifest = newManifest;
}
项目:transistor    文件:SsMediaPeriod.java   
public SsMediaPeriod(SsManifest manifest, SsChunkSource.Factory chunkSourceFactory,
    int minLoadableRetryCount, EventDispatcher eventDispatcher,
    LoaderErrorThrower manifestLoaderErrorThrower, Allocator allocator) {
  this.chunkSourceFactory = chunkSourceFactory;
  this.manifestLoaderErrorThrower = manifestLoaderErrorThrower;
  this.minLoadableRetryCount = minLoadableRetryCount;
  this.eventDispatcher = eventDispatcher;
  this.allocator = allocator;

  trackGroups = buildTrackGroups(manifest);
  ProtectionElement protectionElement = manifest.protectionElement;
  if (protectionElement != null) {
    byte[] keyId = getProtectionElementKeyId(protectionElement.data);
    // We assume pattern encryption does not apply.
    trackEncryptionBoxes = new TrackEncryptionBox[] {
        new TrackEncryptionBox(true, null, INITIALIZATION_VECTOR_SIZE, keyId, 0, 0, null)};
  } else {
    trackEncryptionBoxes = null;
  }
  this.manifest = manifest;
  sampleStreams = newSampleStreamArray(0);
  sequenceableLoader = new CompositeSequenceableLoader(sampleStreams);
}
项目:K-Sonic    文件:SsMediaSource.java   
@Override
public void onLoadCompleted(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs) {
  eventDispatcher.loadCompleted(loadable.dataSpec, loadable.type, elapsedRealtimeMs,
      loadDurationMs, loadable.bytesLoaded());
  manifest = loadable.getResult();
  manifestLoadStartTimestamp = elapsedRealtimeMs - loadDurationMs;
  processManifest();
  scheduleManifestRefresh();
}
项目:K-Sonic    文件:SsMediaSource.java   
@Override
public int onLoadError(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs, IOException error) {
  boolean isFatal = error instanceof ParserException;
  eventDispatcher.loadError(loadable.dataSpec, loadable.type, elapsedRealtimeMs, loadDurationMs,
      loadable.bytesLoaded(), error, isFatal);
  return isFatal ? Loader.DONT_RETRY_FATAL : Loader.RETRY;
}
项目:K-Sonic    文件:DefaultSsChunkSource.java   
@Override
public SsChunkSource createChunkSource(LoaderErrorThrower manifestLoaderErrorThrower,
    SsManifest manifest, int elementIndex, TrackSelection trackSelection,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  DataSource dataSource = dataSourceFactory.createDataSource();
  return new DefaultSsChunkSource(manifestLoaderErrorThrower, manifest, elementIndex,
      trackSelection, dataSource, trackEncryptionBoxes);
}
项目:K-Sonic    文件:SsMediaPeriod.java   
public void updateManifest(SsManifest manifest) {
  this.manifest = manifest;
  for (ChunkSampleStream<SsChunkSource> sampleStream : sampleStreams) {
    sampleStream.getChunkSource().updateManifest(manifest);
  }
  callback.onContinueLoadingRequested(this);
}
项目:K-Sonic    文件:SsMediaPeriod.java   
private static TrackGroupArray buildTrackGroups(SsManifest manifest) {
  TrackGroup[] trackGroups = new TrackGroup[manifest.streamElements.length];
  for (int i = 0; i < manifest.streamElements.length; i++) {
    trackGroups[i] = new TrackGroup(manifest.streamElements[i].formats);
  }
  return new TrackGroupArray(trackGroups);
}
项目:videoPickPlayer    文件:SsMediaSource.java   
@Override
public int onLoadError(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs, IOException error) {
  boolean isFatal = error instanceof ParserException;
  eventDispatcher.loadError(loadable.dataSpec, loadable.type, elapsedRealtimeMs, loadDurationMs,
      loadable.bytesLoaded(), error, isFatal);
  return isFatal ? Loader.DONT_RETRY_FATAL : Loader.RETRY;
}
项目:videoPickPlayer    文件:DefaultSsChunkSource.java   
@Override
public SsChunkSource createChunkSource(LoaderErrorThrower manifestLoaderErrorThrower,
    SsManifest manifest, int elementIndex, TrackSelection trackSelection,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  DataSource dataSource = dataSourceFactory.createDataSource();
  return new DefaultSsChunkSource(manifestLoaderErrorThrower, manifest, elementIndex,
      trackSelection, dataSource, trackEncryptionBoxes);
}
项目:videoPickPlayer    文件:SsMediaPeriod.java   
public void updateManifest(SsManifest manifest) {
  this.manifest = manifest;
  for (ChunkSampleStream<SsChunkSource> sampleStream : sampleStreams) {
    sampleStream.getChunkSource().updateManifest(manifest);
  }
  callback.onContinueLoadingRequested(this);
}
项目:videoPickPlayer    文件:SsMediaPeriod.java   
private static TrackGroupArray buildTrackGroups(SsManifest manifest) {
  TrackGroup[] trackGroups = new TrackGroup[manifest.streamElements.length];
  for (int i = 0; i < manifest.streamElements.length; i++) {
    trackGroups[i] = new TrackGroup(manifest.streamElements[i].formats);
  }
  return new TrackGroupArray(trackGroups);
}
项目:transistor    文件:SsMediaSource.java   
@Override
public void onLoadCompleted(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs) {
  eventDispatcher.loadCompleted(loadable.dataSpec, loadable.type, elapsedRealtimeMs,
      loadDurationMs, loadable.bytesLoaded());
  manifest = loadable.getResult();
  manifestLoadStartTimestamp = elapsedRealtimeMs - loadDurationMs;
  processManifest();
  scheduleManifestRefresh();
}
项目:transistor    文件:SsMediaSource.java   
@Override
public int onLoadError(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs, IOException error) {
  boolean isFatal = error instanceof ParserException;
  eventDispatcher.loadError(loadable.dataSpec, loadable.type, elapsedRealtimeMs, loadDurationMs,
      loadable.bytesLoaded(), error, isFatal);
  return isFatal ? Loader.DONT_RETRY_FATAL : Loader.RETRY;
}
项目:transistor    文件:DefaultSsChunkSource.java   
@Override
public SsChunkSource createChunkSource(LoaderErrorThrower manifestLoaderErrorThrower,
    SsManifest manifest, int elementIndex, TrackSelection trackSelection,
    TrackEncryptionBox[] trackEncryptionBoxes) {
  DataSource dataSource = dataSourceFactory.createDataSource();
  return new DefaultSsChunkSource(manifestLoaderErrorThrower, manifest, elementIndex,
      trackSelection, dataSource, trackEncryptionBoxes);
}
项目:transistor    文件:SsDownloader.java   
@Override
public SsManifest getManifest(DataSource dataSource, Uri uri) throws IOException {
  DataSpec dataSpec = new DataSpec(uri,
      DataSpec.FLAG_ALLOW_CACHING_UNKNOWN_LENGTH | DataSpec.FLAG_ALLOW_GZIP);
  ParsingLoadable<SsManifest> loadable = new ParsingLoadable<>(dataSource, dataSpec,
      C.DATA_TYPE_MANIFEST, new SsManifestParser());
  loadable.load();
  return loadable.getResult();
}
项目:transistor    文件:SsDownloader.java   
@Override
protected List<Segment> getAllSegments(DataSource dataSource, SsManifest manifest,
    boolean allowIndexLoadErrors) throws InterruptedException, IOException {
  ArrayList<Segment> segments = new ArrayList<>();
  for (int i = 0; i < manifest.streamElements.length; i++) {
    StreamElement streamElement = manifest.streamElements[i];
    for (int j = 0; j < streamElement.formats.length; j++) {
      segments.addAll(getSegments(dataSource, manifest, new TrackKey[] {new TrackKey(i, j)},
          allowIndexLoadErrors));
    }
  }
  return segments;
}
项目:transistor    文件:SsDownloader.java   
@Override
protected List<Segment> getSegments(DataSource dataSource, SsManifest manifest,
    TrackKey[] keys, boolean allowIndexLoadErrors) throws InterruptedException, IOException {
  ArrayList<Segment> segments = new ArrayList<>();
  for (TrackKey key : keys) {
    StreamElement streamElement = manifest.streamElements[key.streamElementIndex];
    for (int i = 0; i < streamElement.chunkCount; i++) {
      segments.add(new Segment(streamElement.getStartTimeUs(i),
          new DataSpec(streamElement.buildRequestUri(key.trackIndex, i))));
    }
  }
  return segments;
}
项目:transistor    文件:SsMediaPeriod.java   
public void updateManifest(SsManifest manifest) {
  this.manifest = manifest;
  for (ChunkSampleStream<SsChunkSource> sampleStream : sampleStreams) {
    sampleStream.getChunkSource().updateManifest(manifest);
  }
  callback.onContinueLoadingRequested(this);
}
项目:transistor    文件:SsMediaPeriod.java   
private static TrackGroupArray buildTrackGroups(SsManifest manifest) {
  TrackGroup[] trackGroups = new TrackGroup[manifest.streamElements.length];
  for (int i = 0; i < manifest.streamElements.length; i++) {
    trackGroups[i] = new TrackGroup(manifest.streamElements[i].formats);
  }
  return new TrackGroupArray(trackGroups);
}
项目:K-Sonic    文件:SsMediaSource.java   
@Override
public void onLoadCanceled(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs, boolean released) {
  eventDispatcher.loadCompleted(loadable.dataSpec, loadable.type, elapsedRealtimeMs,
      loadDurationMs, loadable.bytesLoaded());
}
项目:K-Sonic    文件:SsMediaSource.java   
private void startLoadingManifest() {
  ParsingLoadable<SsManifest> loadable = new ParsingLoadable<>(manifestDataSource,
      manifestUri, C.DATA_TYPE_MANIFEST, manifestParser);
  long elapsedRealtimeMs = manifestLoader.startLoading(loadable, this, minLoadableRetryCount);
  eventDispatcher.loadStarted(loadable.dataSpec, loadable.type, elapsedRealtimeMs);
}
项目:K-Sonic    文件:SsChunkSource.java   
SsChunkSource createChunkSource(LoaderErrorThrower manifestLoaderErrorThrower,
SsManifest manifest, int elementIndex, TrackSelection trackSelection,
TrackEncryptionBox[] trackEncryptionBoxes);
项目:videoPickPlayer    文件:SsMediaSource.java   
@Override
public void onLoadCanceled(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs, boolean released) {
  eventDispatcher.loadCompleted(loadable.dataSpec, loadable.type, elapsedRealtimeMs,
      loadDurationMs, loadable.bytesLoaded());
}
项目:videoPickPlayer    文件:SsMediaSource.java   
private void startLoadingManifest() {
  ParsingLoadable<SsManifest> loadable = new ParsingLoadable<>(manifestDataSource,
      manifestUri, C.DATA_TYPE_MANIFEST, manifestParser);
  long elapsedRealtimeMs = manifestLoader.startLoading(loadable, this, minLoadableRetryCount);
  eventDispatcher.loadStarted(loadable.dataSpec, loadable.type, elapsedRealtimeMs);
}
项目:videoPickPlayer    文件:SsChunkSource.java   
SsChunkSource createChunkSource(LoaderErrorThrower manifestLoaderErrorThrower,
SsManifest manifest, int elementIndex, TrackSelection trackSelection,
TrackEncryptionBox[] trackEncryptionBoxes);
项目:transistor    文件:SsMediaSource.java   
@Override
public void onLoadCanceled(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs,
    long loadDurationMs, boolean released) {
  eventDispatcher.loadCompleted(loadable.dataSpec, loadable.type, elapsedRealtimeMs,
      loadDurationMs, loadable.bytesLoaded());
}
项目:transistor    文件:SsMediaSource.java   
private void startLoadingManifest() {
  ParsingLoadable<SsManifest> loadable = new ParsingLoadable<>(manifestDataSource,
      manifestUri, C.DATA_TYPE_MANIFEST, manifestParser);
  long elapsedRealtimeMs = manifestLoader.startLoading(loadable, this, minLoadableRetryCount);
  eventDispatcher.loadStarted(loadable.dataSpec, loadable.type, elapsedRealtimeMs);
}
项目:transistor    文件:SsChunkSource.java   
SsChunkSource createChunkSource(LoaderErrorThrower manifestLoaderErrorThrower,
SsManifest manifest, int elementIndex, TrackSelection trackSelection,
TrackEncryptionBox[] trackEncryptionBoxes);
项目:K-Sonic    文件:SsMediaSource.java   
/**
 * Constructs an instance to play a given {@link SsManifest}, which must not be live.
 *
 * @param manifest The manifest. {@link SsManifest#isLive} must be false.
 * @param chunkSourceFactory A factory for {@link SsChunkSource} instances.
 * @param minLoadableRetryCount The minimum number of times to retry if a loading error occurs.
 * @param eventHandler A handler for events. May be null if delivery of events is not required.
 * @param eventListener A listener of events. May be null if delivery of events is not required.
 */
public SsMediaSource(SsManifest manifest, SsChunkSource.Factory chunkSourceFactory,
    int minLoadableRetryCount, Handler eventHandler,
    AdaptiveMediaSourceEventListener eventListener) {
  this(manifest, null, null, null, chunkSourceFactory, minLoadableRetryCount,
      DEFAULT_LIVE_PRESENTATION_DELAY_MS, eventHandler, eventListener);
}
项目:transistor    文件:SsMediaSource.java   
/**
 * Constructs an instance to play a given {@link SsManifest}, which must not be live.
 *
 * @param manifest The manifest. {@link SsManifest#isLive} must be false.
 * @param chunkSourceFactory A factory for {@link SsChunkSource} instances.
 * @param eventHandler A handler for events. May be null if delivery of events is not required.
 * @param eventListener A listener of events. May be null if delivery of events is not required.
 * @deprecated Use {@link Factory} instead.
 */
@Deprecated
public SsMediaSource(SsManifest manifest, SsChunkSource.Factory chunkSourceFactory,
    Handler eventHandler, MediaSourceEventListener eventListener) {
  this(manifest, chunkSourceFactory, DEFAULT_MIN_LOADABLE_RETRY_COUNT, eventHandler,
      eventListener);
}