Index: content/renderer/media/media_stream_audio_track.cc |
diff --git a/content/renderer/media/media_stream_audio_track.cc b/content/renderer/media/media_stream_audio_track.cc |
index cb64f8af18db392cdee6789560a9c5e0659857c3..788854d042b544a11cfd300357e654490057245e 100644 |
--- a/content/renderer/media/media_stream_audio_track.cc |
+++ b/content/renderer/media/media_stream_audio_track.cc |
@@ -118,6 +118,18 @@ void MediaStreamAudioTrack::Stop() { |
} |
void MediaStreamAudioTrack::OnSetFormat(const media::AudioParameters& params) { |
+ base::OnceCallback<void()> temp_callback; |
+ // Call the callback if present, but don't hold a lock while doing so. |
+ { |
+ base::AutoLock guard(format_set_guard_); |
+ format_is_set_ = true; |
+ if (!format_set_callback_.is_null()) { |
+ temp_callback = std::move(format_set_callback_); |
+ } |
+ } |
+ if (!temp_callback.is_null()) { |
+ std::move(temp_callback).Run(); |
+ } |
deliverer_.OnSetFormat(params); |
} |
@@ -141,10 +153,14 @@ void MediaStreamAudioTrack::OnData(const media::AudioBus& audio_bus, |
} |
} |
+bool MediaStreamAudioTrack::format_is_set() { |
+ base::AutoLock guard(format_set_guard_); |
+ return format_is_set_; |
+} |
+ |
void MediaStreamAudioTrack::getSettings( |
blink::WebMediaStreamTrack::Settings& settings) { |
- // TODO(hta): Extract the real value. |
- settings.deviceId = blink::WebString("audio device ID"); |
+ DCHECK(format_is_set()); |
} |
} // namespace content |