diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/CmcdLog.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/CmcdLog.java index 6849801d0d..823c0a3867 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/CmcdLog.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/upstream/CmcdLog.java @@ -42,14 +42,13 @@ public final class CmcdLog { * * @param cmcdConfiguration The {@link CmcdConfiguration} for this chunk source. * @param trackSelection The {@linkplain ExoTrackSelection track selection}. - * @param playbackPositionUs The current playback position in microseconds. - * @param loadPositionUs The current load position in microseconds. + * @param bufferedDurationUs The duration of media currently buffered from the current playback + * position, in microseconds. */ public static CmcdLog createInstance( CmcdConfiguration cmcdConfiguration, ExoTrackSelection trackSelection, - long playbackPositionUs, - long loadPositionUs) { + long bufferedDurationUs) { ImmutableMap<@CmcdConfiguration.HeaderKey String, String> customData = cmcdConfiguration.requestConfig.getCustomData(); int bitrateKbps = trackSelection.getSelectedFormat().bitrate / 1000; @@ -65,8 +64,7 @@ public final class CmcdLog { new CmcdLog.CmcdRequest.Builder() .setCustomData(customData.get(CmcdConfiguration.KEY_CMCD_REQUEST)); if (cmcdConfiguration.isBufferLengthLoggingAllowed()) { - cmcdRequest.setBufferLengthMs( - loadPositionUs == C.TIME_UNSET ? 0 : (loadPositionUs - playbackPositionUs) / 1000); + cmcdRequest.setBufferLengthMs(bufferedDurationUs / 1000); } CmcdLog.CmcdSession.Builder cmcdSession = diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/upstream/CmcdLogTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/upstream/CmcdLogTest.java index d327c2f96f..ae5f559d8b 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/upstream/CmcdLogTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/upstream/CmcdLogTest.java @@ -60,10 +60,7 @@ public class CmcdLogTest { .thenReturn(new Format.Builder().setPeakBitrate(840_000).build()); CmcdLog cmcdLog = CmcdLog.createInstance( - cmcdConfiguration, - trackSelection, - /* playbackPositionUs= */ 1_000_000, - /* loadPositionUs= */ 2_760_000); + cmcdConfiguration, trackSelection, /* bufferedDurationUs= */ 1_760_000); ImmutableMap<@CmcdConfiguration.HeaderKey String, String> requestHeaders = cmcdLog.getHttpRequestHeaders(); diff --git a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DefaultDashChunkSource.java b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DefaultDashChunkSource.java index 2b573b4495..6d1d877778 100644 --- a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DefaultDashChunkSource.java +++ b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DefaultDashChunkSource.java @@ -374,8 +374,7 @@ public class DefaultDashChunkSource implements DashChunkSource { CmcdLog cmcdLog = cmcdConfiguration == null ? null - : CmcdLog.createInstance( - cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs); + : CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs); RepresentationHolder representationHolder = updateSelectedBaseUrl(trackSelection.getSelectedIndex()); diff --git a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsChunkSource.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsChunkSource.java index 6ea2000839..56d74f8785 100644 --- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsChunkSource.java +++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsChunkSource.java @@ -483,8 +483,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; CmcdLog cmcdLog = cmcdConfiguration == null ? null - : CmcdLog.createInstance( - cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs); + : CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs); // Check if the media segment or its initialization segment are fully encrypted. @Nullable diff --git a/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/DefaultSsChunkSource.java b/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/DefaultSsChunkSource.java index ab07b1e1c1..ceeb2fbfb0 100644 --- a/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/DefaultSsChunkSource.java +++ b/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/DefaultSsChunkSource.java @@ -284,9 +284,7 @@ public class DefaultSsChunkSource implements SsChunkSource { CmcdLog cmcdLog = cmcdConfiguration == null ? null - : CmcdLog.createInstance( - cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs); - ; + : CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs); out.chunk = newMediaChunk(