From ad3e6ef4cdac12d1983f4998e594a70fbe28eee8 Mon Sep 17 00:00:00 2001 From: tonihei Date: Fri, 12 Jan 2018 07:52:49 -0800 Subject: [PATCH] Add missing onLoadStarted callback to Extractor and SingleSample media period. We added the other callbacks some time ago, but didn't include onLoadStarted. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=181743764 --- .../source/ExtractorMediaPeriod.java | 19 +++++++++++++++---- .../source/MediaSourceEventListener.java | 2 +- .../source/SingleSampleMediaPeriod.java | 19 +++++++++++++++---- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java index 76d9d22648..bc84546c83 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java @@ -168,6 +168,7 @@ import java.util.Arrays; sampleQueues = new SampleQueue[0]; pendingResetPositionUs = C.TIME_UNSET; length = C.LENGTH_UNSET; + durationUs = C.TIME_UNSET; // Assume on-demand for MIN_RETRY_COUNT_DEFAULT_FOR_MEDIA, until prepared. actualMinLoadableRetryCount = minLoadableRetryCount == ExtractorMediaSource.MIN_RETRY_COUNT_DEFAULT_FOR_MEDIA @@ -436,7 +437,7 @@ import java.util.Arrays; /* trackFormat= */ null, C.SELECTION_REASON_UNKNOWN, /* trackSelectionData= */ null, - /* mediaStartTimeUs= */ 0, + /* mediaStartTimeUs= */ loadable.seekTimeUs, durationUs, elapsedRealtimeMs, loadDurationMs, @@ -456,7 +457,7 @@ import java.util.Arrays; /* trackFormat= */ null, C.SELECTION_REASON_UNKNOWN, /* trackSelectionData= */ null, - /* mediaStartTimeUs= */ 0, + /* mediaStartTimeUs= */ loadable.seekTimeUs, durationUs, elapsedRealtimeMs, loadDurationMs, @@ -483,7 +484,7 @@ import java.util.Arrays; /* trackFormat= */ null, C.SELECTION_REASON_UNKNOWN, /* trackSelectionData= */ null, - /* mediaStartTimeUs= */ 0, + /* mediaStartTimeUs= */ loadable.seekTimeUs, durationUs, elapsedRealtimeMs, loadDurationMs, @@ -595,7 +596,17 @@ import java.util.Arrays; pendingResetPositionUs = C.TIME_UNSET; } extractedSamplesCountAtStartOfLoad = getExtractedSamplesCount(); - loader.startLoading(loadable, this, actualMinLoadableRetryCount); + long elapsedRealtimeMs = loader.startLoading(loadable, this, actualMinLoadableRetryCount); + eventDispatcher.loadStarted( + loadable.dataSpec, + C.DATA_TYPE_MEDIA, + C.TRACK_TYPE_UNKNOWN, + /* trackFormat= */ null, + C.SELECTION_REASON_UNKNOWN, + /* trackSelectionData= */ null, + /* mediaStartTimeUs= */ loadable.seekTimeUs, + durationUs, + elapsedRealtimeMs); } private void configureRetry(ExtractingLoadable loadable) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java index 4d500f94bd..9fc2572b55 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java @@ -44,7 +44,7 @@ public interface MediaSourceEventListener { * @param mediaStartTimeMs The start time of the media being loaded, or {@link C#TIME_UNSET} if * the load is not for media data. * @param mediaEndTimeMs The end time of the media being loaded, or {@link C#TIME_UNSET} if the - * load is not for media data. + * load is not for media data or the end time is unknown. * @param elapsedRealtimeMs The value of {@link SystemClock#elapsedRealtime} when the load began. */ void onLoadStarted( diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java index e76de60b86..cc7179ae18 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java @@ -133,10 +133,21 @@ import java.util.Arrays; if (loadingFinished || loader.isLoading()) { return false; } - loader.startLoading( - new SourceLoadable(dataSpec, dataSourceFactory.createDataSource()), - this, - minLoadableRetryCount); + long elapsedRealtimeMs = + loader.startLoading( + new SourceLoadable(dataSpec, dataSourceFactory.createDataSource()), + this, + minLoadableRetryCount); + eventDispatcher.loadStarted( + dataSpec, + C.DATA_TYPE_MEDIA, + C.TRACK_TYPE_UNKNOWN, + format, + C.SELECTION_REASON_UNKNOWN, + /* trackSelectionData= */ null, + /* mediaStartTimeUs= */ 0, + durationUs, + elapsedRealtimeMs); return true; }