Bug 1127646 - Report MSE Join Latency and MTBR in telemetry - r=cpearce,bsmedberg

This commit is contained in:
Chris Double
2015-02-24 16:11:43 +13:00
parent efe7bddb93
commit b71e91c554
4 changed files with 99 additions and 1 deletions

View File

@@ -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;
}