Skip to content

Commit

Permalink
Do not reset period uid when DashMediaSource is released
Browse files Browse the repository at this point in the history
When the source is prepared again after stop, the period uid
is calculated by subtracting the `firstPeriodId` from the
period uid that is passed in to `createPeriod`. When this
happens after stop, the uid from the old period uid that
is still stored and has the value of the last played uid.

Hence the `firstPeriodId` must not be reset when released.

Issue: google/ExoPlayer#10838
PiperOrigin-RevId: 539028570
(cherry picked from commit 319854d)
  • Loading branch information
marcbaechinger authored and tof-tof committed Jun 12, 2023
1 parent f1529d6 commit 1c8c563
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
3 changes: 3 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@
* Cronet Extension:
* RTMP Extension:
* DASH Extension:
* Fix a bug where re-preparing a multi-period live Dash media source
produced a `IndexOutOfBoundsException`
([#10838](https://github.com/google/ExoPlayer/issues/10838)).
* HLS Extension:
* Smooth Streaming Extension:
* RTSP Extension:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ public MediaPeriod createPeriod(MediaPeriodId id, Allocator allocator, long star
DrmSessionEventListener.EventDispatcher drmEventDispatcher = createDrmEventDispatcher(id);
DashMediaPeriod mediaPeriod =
new DashMediaPeriod(
firstPeriodId + periodIndex,
/* id= */ firstPeriodId + periodIndex,
manifest,
baseUrlExclusionList,
periodIndex,
Expand Down Expand Up @@ -573,7 +573,6 @@ protected void releaseSourceInternal() {
elapsedRealtimeOffsetMs = C.TIME_UNSET;
staleManifestReloadAttempt = 0;
expiredManifestPublishTimeUs = C.TIME_UNSET;
firstPeriodId = 0;
periodsById.clear();
baseUrlExclusionList.reset();
drmSessionManager.release();
Expand Down

0 comments on commit 1c8c563

Please sign in to comment.