Skip to content

Commit

Permalink
Refactor method CmcdLog.createInstance to accept bufferedDurationUs
Browse files Browse the repository at this point in the history
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
  • Loading branch information
rohitjoins authored and marcbaechinger committed Jun 19, 2023
1 parent 18bc893 commit be9b057
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -65,8 +64,7 @@ public static CmcdLog createInstance(
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 =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,7 @@ public int getRequestedMaximumThroughputKbps(int throughputKbps) {
.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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -374,8 +374,7 @@ public void getNextChunk(
CmcdLog cmcdLog =
cmcdConfiguration == null
? null
: CmcdLog.createInstance(
cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs);
: CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs);

RepresentationHolder representationHolder =
updateSelectedBaseUrl(trackSelection.getSelectedIndex());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -483,8 +483,7 @@ public void getNextChunk(
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,7 @@ public final void getNextChunk(
CmcdLog cmcdLog =
cmcdConfiguration == null
? null
: CmcdLog.createInstance(
cmcdConfiguration, trackSelection, playbackPositionUs, loadPositionUs);
;
: CmcdLog.createInstance(cmcdConfiguration, trackSelection, bufferedDurationUs);

out.chunk =
newMediaChunk(
Expand Down

0 comments on commit be9b057

Please sign in to comment.