mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 03:45:46 +00:00
Bug 1584522 - Change the audio callback trace logger to be more ergonomic. r=pehrsons
Differential Revision: https://phabricator.services.mozilla.com/D47430 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
d579352ba8
commit
bc71a97b2f
@ -43,8 +43,6 @@ using namespace mozilla::dom;
|
||||
using namespace mozilla::gfx;
|
||||
using namespace mozilla::media;
|
||||
|
||||
mozilla::AsyncLogger gMTGTraceLogger("MTGTracing");
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
LazyLogModule gMediaTrackGraphLog("MediaTrackGraph");
|
||||
@ -66,10 +64,6 @@ MediaTrackGraphImpl::~MediaTrackGraphImpl() {
|
||||
"thread");
|
||||
LOG(LogLevel::Debug, ("MediaTrackGraph %p destroyed", this));
|
||||
LOG(LogLevel::Debug, ("MediaTrackGraphImpl::~MediaTrackGraphImpl"));
|
||||
|
||||
#ifdef TRACING
|
||||
gMTGTraceLogger.Stop();
|
||||
#endif
|
||||
}
|
||||
|
||||
void MediaTrackGraphImpl::AddTrackGraphThread(MediaTrack* aTrack) {
|
||||
@ -2849,18 +2843,14 @@ MediaTrackGraphImpl::MediaTrackGraphImpl(GraphDriverType aDriverRequested,
|
||||
} else {
|
||||
mDriver = new SystemClockDriver(this);
|
||||
}
|
||||
|
||||
#ifdef TRACING
|
||||
// This is a noop if the logger has not been enabled.
|
||||
gMTGTraceLogger.Start();
|
||||
gMTGTraceLogger.Log("[");
|
||||
#endif
|
||||
} else {
|
||||
mDriver = new OfflineClockDriver(this, MEDIA_GRAPH_TARGET_PERIOD_MS);
|
||||
}
|
||||
|
||||
mLastMainThreadUpdate = TimeStamp::Now();
|
||||
|
||||
StartAudioCallbackTracing();
|
||||
|
||||
RegisterWeakAsyncMemoryReporter(this);
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,21 @@
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
mozilla::AsyncLogger gAudioCallbackTraceLogger("AudioCallbackTracing");
|
||||
static Atomic<bool> gTracingStarted(false);
|
||||
|
||||
void StartAudioCallbackTracing() {
|
||||
#ifdef TRACING
|
||||
if (gTracingStarted) {
|
||||
return;
|
||||
}
|
||||
// This is a noop if the logger has not been enabled.
|
||||
gAudioCallbackTraceLogger.Start();
|
||||
gAudioCallbackTraceLogger.Log("[");
|
||||
gTracingStarted = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint64_t AutoTracer::NowInUs() {
|
||||
static TimeStamp base = TimeStamp::Now();
|
||||
return (TimeStamp::Now() - base).ToMicroseconds();
|
||||
|
@ -31,6 +31,11 @@
|
||||
# define FUNCTION_SIGNATURE __PRETTY_FUNCTION__
|
||||
#endif
|
||||
|
||||
extern mozilla::AsyncLogger gAudioCallbackTraceLogger;
|
||||
|
||||
// This is no-op if tracing is not enabled, and is idempotent.
|
||||
void StartAudioCallbackTracing();
|
||||
|
||||
#ifdef TRACING
|
||||
/* TRACE is for use in the real-time audio rendering thread.
|
||||
* It would be better to always pass in the thread id. However, the thread an
|
||||
@ -42,20 +47,20 @@
|
||||
* displaying those elements in two separate lanes.
|
||||
* The other thread have "normal" tid. Hashing allows being able to get a
|
||||
* string representation that is unique and guaranteed to be portable. */
|
||||
# define TRACE_AUDIO_CALLBACK() \
|
||||
AutoTracer trace(gMTGTraceLogger, FUNCTION_SIGNATURE, getpid(), 0);
|
||||
# define TRACE_AUDIO_CALLBACK_BUDGET(aFrames, aSampleRate) \
|
||||
AutoTracer budget(gMTGTraceLogger, "Real-time budget", getpid(), 1, \
|
||||
AutoTracer::EventType::BUDGET, aFrames, aSampleRate);
|
||||
# define TRACE_AUDIO_CALLBACK_COMMENT(aFmt, ...) \
|
||||
AutoTracer trace(gMTGTraceLogger, FUNCTION_SIGNATURE, getpid(), 0, \
|
||||
AutoTracer::EventType::DURATION, aFmt, ##__VA_ARGS__);
|
||||
# define TRACE() \
|
||||
AutoTracer trace( \
|
||||
gMTGTraceLogger, FUNCTION_SIGNATURE, getpid(), \
|
||||
# define TRACE_AUDIO_CALLBACK() \
|
||||
AutoTracer trace(gAudioCallbackTraceLogger, FUNCTION_SIGNATURE, getpid(), \
|
||||
0);
|
||||
# define TRACE_AUDIO_CALLBACK_BUDGET(aFrames, aSampleRate) \
|
||||
AutoTracer budget(gAudioCallbackTraceLogger, "Real-time budget", getpid(), \
|
||||
1, AutoTracer::EventType::BUDGET, aFrames, aSampleRate);
|
||||
# define TRACE_AUDIO_CALLBACK_COMMENT(aFmt, ...) \
|
||||
AutoTracer trace(gAudioCallbackTraceLogger, FUNCTION_SIGNATURE, getpid(), \
|
||||
0, AutoTracer::EventType::DURATION, aFmt, ## __VA_ARGS__);
|
||||
# define TRACE() \
|
||||
AutoTracer trace(gAudioCallbackTraceLogger, FUNCTION_SIGNATURE, getpid(),\
|
||||
std::hash<std::thread::id>{}(std::this_thread::get_id()));
|
||||
# define TRACE_COMMENT(aFmt, ...) \
|
||||
AutoTracer trace(gMTGTraceLogger, FUNCTION_SIGNATURE, getpid(), \
|
||||
AutoTracer trace(gAudioCallbackTraceLogger, FUNCTION_SIGNATURE, getpid(), \
|
||||
std::hash<std::thread::id>{}(std::this_thread::get_id()), \
|
||||
AutoTracer::EventType::DURATION, aFmt, ##__VA_ARGS__);
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user