зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1006641: add telemetry for AudioStream open times r=jib
This commit is contained in:
Родитель
a02f87eea0
Коммит
7683f60604
|
@ -13,6 +13,7 @@
|
||||||
#include "mozilla/Mutex.h"
|
#include "mozilla/Mutex.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include "mozilla/Preferences.h"
|
#include "mozilla/Preferences.h"
|
||||||
|
#include "mozilla/Telemetry.h"
|
||||||
#include "soundtouch/SoundTouch.h"
|
#include "soundtouch/SoundTouch.h"
|
||||||
#include "Latency.h"
|
#include "Latency.h"
|
||||||
|
|
||||||
|
@ -72,6 +73,16 @@ bool AudioStream::sCubebLatencyPrefSet;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*static*/ bool AudioStream::GetFirstStream()
|
||||||
|
{
|
||||||
|
static bool sFirstStream = true;
|
||||||
|
|
||||||
|
StaticMutexAutoLock lock(sMutex);
|
||||||
|
bool result = sFirstStream;
|
||||||
|
sFirstStream = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/*static*/ double AudioStream::GetVolumeScale()
|
/*static*/ double AudioStream::GetVolumeScale()
|
||||||
{
|
{
|
||||||
StaticMutexAutoLock lock(sMutex);
|
StaticMutexAutoLock lock(sMutex);
|
||||||
|
@ -384,6 +395,9 @@ AudioStream::Init(int32_t aNumChannels, int32_t aRate,
|
||||||
const dom::AudioChannel aAudioChannel,
|
const dom::AudioChannel aAudioChannel,
|
||||||
LatencyRequest aLatencyRequest)
|
LatencyRequest aLatencyRequest)
|
||||||
{
|
{
|
||||||
|
mStartTime = TimeStamp::Now();
|
||||||
|
mIsFirst = GetFirstStream();
|
||||||
|
|
||||||
if (!GetCubebContext() || aNumChannels < 0 || aRate < 0) {
|
if (!GetCubebContext() || aNumChannels < 0 || aRate < 0) {
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -494,6 +508,14 @@ AudioStream::OpenCubeb(cubeb_stream_params &aParams,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mStartTime.IsNull()) {
|
||||||
|
TimeDuration timeDelta = TimeStamp::Now() - mStartTime;
|
||||||
|
LOG(("AudioStream creation time %sfirst: %u ms", mIsFirst ? "" : "not ",
|
||||||
|
(uint32_t) timeDelta.ToMilliseconds()));
|
||||||
|
Telemetry::Accumulate(mIsFirst ? Telemetry::AUDIOSTREAM_FIRST_OPEN_MS :
|
||||||
|
Telemetry::AUDIOSTREAM_LATER_OPEN_MS, timeDelta.ToMilliseconds());
|
||||||
|
}
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -307,6 +307,7 @@ private:
|
||||||
|
|
||||||
static void PrefChanged(const char* aPref, void* aClosure);
|
static void PrefChanged(const char* aPref, void* aClosure);
|
||||||
static double GetVolumeScale();
|
static double GetVolumeScale();
|
||||||
|
static bool GetFirstStream();
|
||||||
static cubeb* GetCubebContext();
|
static cubeb* GetCubebContext();
|
||||||
static cubeb* GetCubebContextUnlocked();
|
static cubeb* GetCubebContextUnlocked();
|
||||||
static uint32_t GetCubebLatency();
|
static uint32_t GetCubebLatency();
|
||||||
|
@ -423,6 +424,7 @@ private:
|
||||||
|
|
||||||
StreamState mState;
|
StreamState mState;
|
||||||
bool mNeedsStart; // needed in case Start() is called before cubeb is open
|
bool mNeedsStart; // needed in case Start() is called before cubeb is open
|
||||||
|
bool mIsFirst;
|
||||||
|
|
||||||
// This mutex protects the static members below.
|
// This mutex protects the static members below.
|
||||||
static StaticMutex sMutex;
|
static StaticMutex sMutex;
|
||||||
|
|
|
@ -50,6 +50,20 @@
|
||||||
"kind": "boolean",
|
"kind": "boolean",
|
||||||
"description": "Application reputation query count (both local and remote)"
|
"description": "Application reputation query count (both local and remote)"
|
||||||
},
|
},
|
||||||
|
"AUDIOSTREAM_FIRST_OPEN_MS": {
|
||||||
|
"expires_in_version": "never",
|
||||||
|
"kind": "exponential",
|
||||||
|
"high": "10000",
|
||||||
|
"n_buckets": "50",
|
||||||
|
"description": "The length of time (in milliseconds) for the first open of AudioStream."
|
||||||
|
},
|
||||||
|
"AUDIOSTREAM_LATER_OPEN_MS": {
|
||||||
|
"expires_in_version": "never",
|
||||||
|
"kind": "exponential",
|
||||||
|
"high": "10000",
|
||||||
|
"n_buckets": "50",
|
||||||
|
"description": "The length of time (in milliseconds) for the subsequent opens of AudioStream."
|
||||||
|
},
|
||||||
"BACKGROUNDFILESAVER_THREAD_COUNT": {
|
"BACKGROUNDFILESAVER_THREAD_COUNT": {
|
||||||
"expires_in_version": "never",
|
"expires_in_version": "never",
|
||||||
"kind": "enumerated",
|
"kind": "enumerated",
|
||||||
|
|
Загрузка…
Ссылка в новой задаче