Bug 1127646 - Report MSE Join Latency and MTBR in telemetry - r=cpearce,bsmedberg
This commit is contained in:
@@ -1219,6 +1219,9 @@ nsresult HTMLMediaElement::LoadResource()
|
||||
mMediaSource = source.forget();
|
||||
nsRefPtr<MediaResource> resource =
|
||||
MediaSourceDecoder::CreateResource(mMediaSource->GetPrincipal());
|
||||
if (IsAutoplayEnabled()) {
|
||||
mJoinLatency.Start();
|
||||
}
|
||||
return FinishDecoderSetup(decoder, resource, nullptr, nullptr);
|
||||
}
|
||||
|
||||
@@ -2585,6 +2588,17 @@ HTMLMediaElement::ReportMSETelemetry()
|
||||
|
||||
Telemetry::Accumulate(Telemetry::VIDEO_MSE_UNLOAD_STATE, state);
|
||||
LOG(PR_LOG_DEBUG, ("%p VIDEO_MSE_UNLOAD_STATE = %d", this, state));
|
||||
|
||||
Telemetry::Accumulate(Telemetry::VIDEO_MSE_PLAY_TIME_MS, SECONDS_TO_MS(mPlayTime.Total()));
|
||||
LOG(PR_LOG_DEBUG, ("%p VIDEO_MSE_PLAY_TIME_MS = %f", this, mPlayTime.Total()));
|
||||
|
||||
Telemetry::Accumulate(Telemetry::VIDEO_MSE_BUFFERING_COUNT, mRebufferTime.Count());
|
||||
LOG(PR_LOG_DEBUG, ("%p VIDEO_MSE_BUFFERING_COUNT = %d", this, mRebufferTime.Count()));
|
||||
|
||||
double latency = mJoinLatency.Count() ? mJoinLatency.Total() / mJoinLatency.Count() : 0.0;
|
||||
Telemetry::Accumulate(Telemetry::VIDEO_MSE_JOIN_LATENCY_MS, SECONDS_TO_MS(latency));
|
||||
LOG(PR_LOG_DEBUG, ("%p VIDEO_MSE_JOIN_LATENCY = %f (%d ms) count=%d\n",
|
||||
this, latency, SECONDS_TO_MS(latency), mJoinLatency.Count()));
|
||||
}
|
||||
|
||||
void HTMLMediaElement::UnbindFromTree(bool aDeep,
|
||||
@@ -3664,6 +3678,23 @@ nsresult HTMLMediaElement::DispatchAsyncEvent(const nsAString& aName)
|
||||
|
||||
nsCOMPtr<nsIRunnable> event = new nsAsyncEventRunner(aName, this);
|
||||
NS_DispatchToMainThread(event);
|
||||
|
||||
// Only collect rebuffer and stall rate stats for MSE video.
|
||||
if (!mMediaSource) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if ((aName.EqualsLiteral("play") || aName.EqualsLiteral("playing"))) {
|
||||
mPlayTime.Start();
|
||||
mRebufferTime.Pause();
|
||||
mJoinLatency.Pause();
|
||||
} else if (aName.EqualsLiteral("waiting")) {
|
||||
mPlayTime.Pause();
|
||||
mRebufferTime.Start();
|
||||
} else if (aName.EqualsLiteral("pause")) {
|
||||
mPlayTime.Pause();
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user