Skip to content

Commit f35c59b

Browse files
rohitjoinstonihei
authored andcommitted
Ensure chunk duration is set in CmcdData for HLS media
Previously, encrypted media segments did not have the chunk duration set, causing an assertion failure during `CmcdData` creation. With this change, the chunk duration is always set, while `CmcdData` ensures it is applied only for media chunks. Issue: #2312 PiperOrigin-RevId: 745196718 (cherry picked from commit 9182b41)
1 parent 82d7c62 commit f35c59b

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

RELEASENOTES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@
7777
* Cronet extension:
7878
* RTMP extension:
7979
* HLS extension:
80+
* Fix issue where chunk duration wasn't set in `CmcdData` for HLS media,
81+
causing an assertion failure when processing encrypted media segments
82+
([#2312](https://github.com/androidx/media/issues/2312)).
8083
* DASH extension:
8184
* Smooth Streaming extension:
8285
* RTSP extension:

libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsChunkSource.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,8 @@ public void getNextChunk(
517517
.setPlaybackRate(loadingInfo.playbackSpeed)
518518
.setIsLive(!playlist.hasEndTag)
519519
.setDidRebuffer(loadingInfo.rebufferedSince(lastChunkRequestRealtimeMs))
520-
.setIsBufferEmpty(queue.isEmpty());
520+
.setIsBufferEmpty(queue.isEmpty())
521+
.setChunkDurationUs(segmentBaseHolder.segmentBase.durationUs);
521522
long nextMediaSequence =
522523
segmentBaseHolder.partIndex == C.INDEX_UNSET
523524
? segmentBaseHolder.mediaSequence + 1

libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaChunk.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,7 @@ public static HlsMediaChunk createInstance(
112112
.setFlags(segmentBaseHolder.isPreload ? FLAG_MIGHT_NOT_USE_FULL_NETWORK_SPEED : 0)
113113
.build();
114114
if (cmcdDataFactory != null) {
115-
CmcdData cmcdData =
116-
cmcdDataFactory.setChunkDurationUs(mediaSegment.durationUs).createCmcdData();
115+
CmcdData cmcdData = cmcdDataFactory.createCmcdData();
117116
dataSpec = cmcdData.addToDataSpec(dataSpec);
118117
}
119118

0 commit comments

Comments
 (0)