Commit b16238a3 by rohks Committed by Tianyi Feng

Refactor method `CmcdLog.createInstance` to accept `bufferedDurationUs`

Instead of providing `playbackDurationUs` and `loadPositionUs` individually, which are used to calculate the buffer duration for CMCD logging, we can directly pass the pre-calculated `bufferedDurationUs` available in the `getNextChunk` method of the chunk source classes.

Issue: google/ExoPlayer#8699

#minor-release

PiperOrigin-RevId: 540630112
(cherry picked from commit 4d1119ab24384621877f4e7854dca1fa6db964a3)
parent fd060619
...@@ -46,14 +46,13 @@ public final class CmcdLog { ...@@ -46,14 +46,13 @@ public final class CmcdLog {
* *
* @param cmcdConfiguration The {@link CmcdConfiguration} for this chunk source. * @param cmcdConfiguration The {@link CmcdConfiguration} for this chunk source.
* @param trackSelection The {@linkplain ExoTrackSelection track selection}. * @param trackSelection The {@linkplain ExoTrackSelection track selection}.
* @param playbackPositionUs The current playback position in microseconds. * @param bufferedDurationUs The duration of media currently buffered from the current playback
* @param loadPositionUs The current load position in microseconds. * position, in microseconds.
*/ */
public static CmcdLog createInstance( public static CmcdLog createInstance(
CmcdConfiguration cmcdConfiguration, CmcdConfiguration cmcdConfiguration,
ExoTrackSelection trackSelection, ExoTrackSelection trackSelection,
long playbackPositionUs, long bufferedDurationUs) {
long loadPositionUs) {
ImmutableMap<@CmcdConfiguration.HeaderKey String, String> customData = ImmutableMap<@CmcdConfiguration.HeaderKey String, String> customData =
cmcdConfiguration.requestConfig.getCustomData(); cmcdConfiguration.requestConfig.getCustomData();
int bitrateKbps = trackSelection.getSelectedFormat().bitrate / 1000; int bitrateKbps = trackSelection.getSelectedFormat().bitrate / 1000;
...@@ -69,8 +68,7 @@ public final class CmcdLog { ...@@ -69,8 +68,7 @@ public final class CmcdLog {
new CmcdLog.CmcdRequest.Builder() new CmcdLog.CmcdRequest.Builder()
.setCustomData(customData.get(CmcdConfiguration.KEY_CMCD_REQUEST)); .setCustomData(customData.get(CmcdConfiguration.KEY_CMCD_REQUEST));
if (cmcdConfiguration.isBufferLengthLoggingAllowed()) { if (cmcdConfiguration.isBufferLengthLoggingAllowed()) {
cmcdRequest.setBufferLengthMs( cmcdRequest.setBufferLengthMs(bufferedDurationUs / 1000);
loadPositionUs == C.TIME_UNSET ? 0 : (loadPositionUs - playbackPositionUs) / 1000);
} }
CmcdLog.CmcdSession.Builder cmcdSession = CmcdLog.CmcdSession.Builder cmcdSession =
......
...@@ -60,10 +60,7 @@ public class CmcdLogTest { ...@@ -60,10 +60,7 @@ public class CmcdLogTest {
.thenReturn(new Format.Builder().setPeakBitrate(840_000).build()); .thenReturn(new Format.Builder().setPeakBitrate(840_000).build());
CmcdLog cmcdLog = CmcdLog cmcdLog =
CmcdLog.createInstance( CmcdLog.createInstance(
cmcdConfiguration, cmcdConfiguration, trackSelection, /* bufferedDurationUs= */ 1_760_000);
trackSelection,
/* playbackPositionUs= */ 1_000_000,
/* loadPositionUs= */ 2_760_000);
ImmutableMap<@CmcdConfiguration.HeaderKey String, String> requestHeaders = ImmutableMap<@CmcdConfiguration.HeaderKey String, String> requestHeaders =
cmcdLog.getHttpRequestHeaders(); cmcdLog.getHttpRequestHeaders();
......
...@@ -380,8 +380,7 @@ public class DefaultDashChunkSource implements DashChunkSource { ...@@ -380,8 +380,7 @@ public class DefaultDashChunkSource implements DashChunkSource {
CmcdLog cmcdLog = CmcdLog cmcdLog =
cmcdConfiguration == null cmcdConfiguration == null
? null ? null
: CmcdLog.createInstance( : CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs);
cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs);
RepresentationHolder representationHolder = RepresentationHolder representationHolder =
updateSelectedBaseUrl(trackSelection.getSelectedIndex()); updateSelectedBaseUrl(trackSelection.getSelectedIndex());
......
...@@ -491,8 +491,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -491,8 +491,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
CmcdLog cmcdLog = CmcdLog cmcdLog =
cmcdConfiguration == null cmcdConfiguration == null
? null ? null
: CmcdLog.createInstance( : CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs);
cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs);
// Check if the media segment or its initialization segment are fully encrypted. // Check if the media segment or its initialization segment are fully encrypted.
@Nullable @Nullable
......
...@@ -290,9 +290,7 @@ public class DefaultSsChunkSource implements SsChunkSource { ...@@ -290,9 +290,7 @@ public class DefaultSsChunkSource implements SsChunkSource {
CmcdLog cmcdLog = CmcdLog cmcdLog =
cmcdConfiguration == null cmcdConfiguration == null
? null ? null
: CmcdLog.createInstance( : CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs);
cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs);
;
out.chunk = out.chunk =
newMediaChunk( newMediaChunk(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment