Do not reset period uid when DashMediaSource is released
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
This commit is contained in:
parent
b55ddf12b4
commit
319854d624
@ -87,6 +87,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:
|
||||
|
@ -525,7 +525,7 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
DrmSessionEventListener.EventDispatcher drmEventDispatcher = createDrmEventDispatcher(id);
|
||||
DashMediaPeriod mediaPeriod =
|
||||
new DashMediaPeriod(
|
||||
firstPeriodId + periodIndex,
|
||||
/* id= */ firstPeriodId + periodIndex,
|
||||
manifest,
|
||||
baseUrlExclusionList,
|
||||
periodIndex,
|
||||
@ -573,7 +573,6 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
elapsedRealtimeOffsetMs = C.TIME_UNSET;
|
||||
staleManifestReloadAttempt = 0;
|
||||
expiredManifestPublishTimeUs = C.TIME_UNSET;
|
||||
firstPeriodId = 0;
|
||||
periodsById.clear();
|
||||
baseUrlExclusionList.reset();
|
||||
drmSessionManager.release();
|
||||
|
Loading…
x
Reference in New Issue
Block a user