Skip to content

Commit c0bd399

Browse files
Expose additional metrics for low latency (#387)
* Expose PLAYBACK_RATE_CHANGED to the plugin interface * Expose latency info to onPlayerInfoUpdated
1 parent 4e81a8e commit c0bd399

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

.releasinator.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
"displayPattern": "$.$.$",
66
"enforceUserFacingLabel": false,
77
"projectType": "npm-like"
8-
}
8+
}

src/playbackstrategy/msestrategy.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ function MSEStrategy(
8585
},
8686
playbackBitrate: undefined,
8787
bufferLength: undefined,
88+
latency: undefined,
8889
fragmentInfo: {
8990
requestTime: undefined,
9091
numDownloaded: undefined,
@@ -115,6 +116,7 @@ function MSEStrategy(
115116
QUOTA_EXCEEDED: "quotaExceeded",
116117
TEXT_TRACKS_ADDED: "allTextTracksAdded",
117118
CURRENT_TRACK_CHANGED: "currentTrackChanged",
119+
PLAYBACK_RATE_CHANGED: "playbackRateChanged",
118120
}
119121

120122
function onLoadedMetaData() {
@@ -344,6 +346,7 @@ function MSEStrategy(
344346
Plugins.interface.onPlayerInfoUpdated({
345347
bufferLength: playerMetadata.bufferLength,
346348
playbackBitrate: playerMetadata.playbackBitrate,
349+
latency: playerMetadata.latency,
347350
})
348351
}
349352

@@ -480,11 +483,13 @@ function MSEStrategy(
480483
dashMetrics = mediaPlayer.getDashMetrics()
481484

482485
if (dashMetrics) {
486+
playerMetadata.latency = mediaPlayer.getCurrentLiveLatency()
483487
playerMetadata.bufferLength = dashMetrics.getCurrentBufferLevel(event.mediaType)
484488
DebugTool.staticMetric("buffer-length", playerMetadata.bufferLength)
485489
Plugins.interface.onPlayerInfoUpdated({
486490
bufferLength: playerMetadata.bufferLength,
487491
playbackBitrate: playerMetadata.playbackBitrate,
492+
latency: playerMetadata.latency,
488493
})
489494
}
490495
}
@@ -692,6 +697,11 @@ function MSEStrategy(
692697
mediaPlayer.on(DashJSEvents.TEXT_TRACKS_ADDED, handleTextTracks)
693698
mediaPlayer.on(DashJSEvents.MANIFEST_LOADING_FINISHED, manifestLoadingFinished)
694699
mediaPlayer.on(DashJSEvents.CURRENT_TRACK_CHANGED, onCurrentTrackChanged)
700+
mediaPlayer.on(DashJSEvents.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged)
701+
}
702+
703+
function onPlaybackRateChanged(event) {
704+
Plugins.interface.onPlaybackRateChanged(event)
695705
}
696706

697707
function handleTextTracks() {
@@ -880,7 +890,7 @@ function MSEStrategy(
880890
mediaPlayer.off(DashJSEvents.GAP_JUMP_TO_END, onGapJump)
881891
mediaPlayer.off(DashJSEvents.QUOTA_EXCEEDED, onQuotaExceeded)
882892
mediaPlayer.off(DashJSEvents.CURRENT_TRACK_CHANGED, onCurrentTrackChanged)
883-
893+
mediaPlayer.off(DashJSEvents.PLAYBACK_RATE_CHANGED, onPlaybackRateChanged)
884894
mediaPlayer = undefined
885895
}
886896

src/playbackstrategy/msestrategy.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,7 @@ describe("Media Source Extensions Playback Strategy", () => {
646646

647647
expect(Plugins.interface.onPlayerInfoUpdated).toHaveBeenCalledWith({
648648
playbackBitrate: undefined,
649+
latency: undefined,
649650
bufferLength: 15,
650651
})
651652
})

src/plugins.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,6 @@ export default {
5050
onSubtitlesDynamicLoadError: (evt) => callOnAllPlugins("onSubtitlesDynamicLoadError", evt),
5151
onFragmentContentLengthMismatch: (evt) => callOnAllPlugins("onFragmentContentLengthMismatch", evt),
5252
onQuotaExceeded: (evt) => callOnAllPlugins("onQuotaExceeded", evt),
53+
onPlaybackRateChanged: (evt) => callOnAllPlugins("onPlaybackRateChanged", evt),
5354
},
5455
}

0 commit comments

Comments
 (0)