Commit 92628a7c authored by Hongchan Choi's avatar Hongchan Choi Committed by Commit Bot

Add new traces in Web Audio, MediaStream, and intermediate layers

This is for the detailed audio stack tracing. There have been several
audio performance issues reported from the applications that use
Web Audio and MediaSteam together. We need more information on why
the audio rendering thread or AudioWorkletThread is blocked.

Bug: 1072727
Change-Id: I56d33d6bf471938815c7aba3f8b94ad461f9c3b2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2145557
Commit-Queue: Hongchan Choi <hongchan@chromium.org>
Reviewed-by: default avatarStephen Nusko <nuskos@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarOlga Sharonova <olka@chromium.org>
Cr-Commit-Position: refs/heads/master@{#762023}
parent f92d685e
......@@ -163,6 +163,7 @@
X("webrtc") \
X("xr") \
X(TRACE_DISABLED_BY_DEFAULT("animation-worklet")) \
X(TRACE_DISABLED_BY_DEFAULT("audio")) \
X(TRACE_DISABLED_BY_DEFAULT("audio-worklet")) \
X(TRACE_DISABLED_BY_DEFAULT("blink.debug")) \
X(TRACE_DISABLED_BY_DEFAULT("blink.debug.display_lock")) \
......@@ -203,6 +204,7 @@
X(TRACE_DISABLED_BY_DEFAULT("layout_shift.debug")) \
X(TRACE_DISABLED_BY_DEFAULT("lifecycles")) \
X(TRACE_DISABLED_BY_DEFAULT("loading")) \
X(TRACE_DISABLED_BY_DEFAULT("mediastream")) \
X(TRACE_DISABLED_BY_DEFAULT("memory-infra")) \
X(TRACE_DISABLED_BY_DEFAULT("memory-infra.v8.code_stats")) \
X(TRACE_DISABLED_BY_DEFAULT("net")) \
......
......@@ -7,6 +7,7 @@
#include <algorithm>
#include "base/logging.h"
#include "base/trace_event/trace_event.h"
namespace media {
......@@ -27,6 +28,8 @@ void AudioPushFifo::Reset(int frames_per_buffer) {
}
void AudioPushFifo::Push(const AudioBus& input_bus) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("audio"), "AudioPushFifo::Push");
DCHECK_GT(frames_per_buffer_, 0);
// Fast path: No buffering required.
......
......@@ -177,6 +177,9 @@ void ConsumerWrapper::SetFormat(size_t number_of_channels, float sample_rate) {
}
void ConsumerWrapper::ConsumeAudio(AudioBus* bus, size_t number_of_frames) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("mediastream"),
"ConsumerWrapper::ConsumeAudio");
if (!bus)
return;
......
......@@ -137,6 +137,9 @@ void MediaStreamAudioTrack::OnSetFormat(const media::AudioParameters& params) {
void MediaStreamAudioTrack::OnData(const media::AudioBus& audio_bus,
base::TimeTicks reference_time) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("mediastream"),
"MediaStreamAudioTrack::OnData");
if (!received_audio_callback_) {
// Add log message with unique this pointer id to mark the audio track as
// alive at the first data callback.
......
......@@ -217,6 +217,9 @@ void MediaStreamSource::GetSettings(WebMediaStreamTrack::Settings& settings) {
void MediaStreamSource::SetAudioFormat(size_t number_of_channels,
float sample_rate) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("mediastream"),
"MediaStreamSource::SetAudioFormat");
SendLogMessage(
String::Format(
"SetAudioFormat({id=%s}, {number_of_channels=%d}, {sample_rate=%f})",
......@@ -230,6 +233,9 @@ void MediaStreamSource::SetAudioFormat(size_t number_of_channels,
}
void MediaStreamSource::ConsumeAudio(AudioBus* bus, size_t number_of_frames) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("mediastream"),
"MediaStreamSource::ConsumeAudio");
DCHECK(requires_consumer_);
MutexLocker locker(audio_consumers_lock_);
for (AudioDestinationConsumer* consumer : audio_consumers_)
......
......@@ -86,6 +86,9 @@ void WebAudioMediaStreamSource::EnsureSourceIsStopped() {
void WebAudioMediaStreamSource::ConsumeAudio(
const Vector<const float*>& audio_data,
size_t number_of_frames) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("mediastream"),
"WebAudioMediaStreamSource::ConsumeAudio");
// TODO(miu): Plumbing is needed to determine the actual capture timestamp
// of the audio, instead of just snapshotting base::TimeTicks::Now(), for
// proper audio/video sync. https://crbug.com/335335
......@@ -104,6 +107,8 @@ void WebAudioMediaStreamSource::ConsumeAudio(
void WebAudioMediaStreamSource::DeliverRebufferedAudio(
const media::AudioBus& audio_bus,
int frame_delay) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("mediastream"),
"WebAudioMediaStreamSource::DeliverRebufferedAudio");
const base::TimeTicks reference_time =
current_reference_time_ +
base::TimeDelta::FromMicroseconds(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment