Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2533)

Unified Diff: content/renderer/media/media_stream_audio_source.cc

Issue 2416123002: Stop media stream source when audio capture error occurs. (Closed)
Patch Set: Rebase. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_audio_source.cc
diff --git a/content/renderer/media/media_stream_audio_source.cc b/content/renderer/media/media_stream_audio_source.cc
index 8db50426ebc4d8b9427ea4bf3cd37dad80ceac5c..c601348cc2606834b9d7a30a55e57ad39f9b69c9 100644
--- a/content/renderer/media/media_stream_audio_source.cc
+++ b/content/renderer/media/media_stream_audio_source.cc
@@ -5,6 +5,8 @@
#include "content/renderer/media/media_stream_audio_source.h"
#include "base/bind.h"
+#include "base/single_thread_task_runner.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "content/renderer/media/media_stream_audio_track.h"
#include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
#include "third_party/WebKit/public/platform/WebString.h"
@@ -14,13 +16,14 @@ namespace content {
MediaStreamAudioSource::MediaStreamAudioSource(bool is_local_source)
: is_local_source_(is_local_source),
is_stopped_(false),
+ task_runner_(base::ThreadTaskRunnerHandle::Get()),
weak_factory_(this) {
DVLOG(1) << "MediaStreamAudioSource@" << this << "::MediaStreamAudioSource("
<< (is_local_source_ ? "local" : "remote") << " source)";
}
MediaStreamAudioSource::~MediaStreamAudioSource() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
DVLOG(1) << "MediaStreamAudioSource@" << this << " is being destroyed.";
}
@@ -36,7 +39,7 @@ MediaStreamAudioSource* MediaStreamAudioSource::From(
bool MediaStreamAudioSource::ConnectToTrack(
const blink::WebMediaStreamTrack& blink_track) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
DCHECK(!blink_track.isNull());
// Sanity-check that there is not already a MediaStreamAudioTrack instance
@@ -88,19 +91,19 @@ void* MediaStreamAudioSource::GetClassIdentifier() const {
std::unique_ptr<MediaStreamAudioTrack>
MediaStreamAudioSource::CreateMediaStreamAudioTrack(const std::string& id) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
return std::unique_ptr<MediaStreamAudioTrack>(
new MediaStreamAudioTrack(is_local_source()));
}
bool MediaStreamAudioSource::EnsureSourceIsStarted() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
DVLOG(1) << "MediaStreamAudioSource@" << this << "::EnsureSourceIsStarted()";
return true;
}
void MediaStreamAudioSource::EnsureSourceIsStopped() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
DVLOG(1) << "MediaStreamAudioSource@" << this << "::EnsureSourceIsStopped()";
}
@@ -118,13 +121,13 @@ void MediaStreamAudioSource::DeliverDataToTracks(
}
void MediaStreamAudioSource::DoStopSource() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
EnsureSourceIsStopped();
is_stopped_ = true;
}
void MediaStreamAudioSource::StopAudioDeliveryTo(MediaStreamAudioTrack* track) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(task_runner_->RunsTasksOnCurrentThread());
const bool did_remove_last_track = deliverer_.RemoveConsumer(track);
DVLOG(1) << "Removed MediaStreamAudioTrack@" << track
@@ -136,4 +139,12 @@ void MediaStreamAudioSource::StopAudioDeliveryTo(MediaStreamAudioTrack* track) {
MediaStreamSource::StopSource();
}
+void MediaStreamAudioSource::StopSourceOnError(const std::string& why) {
+ VLOG(1) << why;
+
+ // Stop source when error occurs.
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(&MediaStreamSource::StopSource, GetWeakPtr()));
+}
+
} // namespace content
« no previous file with comments | « content/renderer/media/media_stream_audio_source.h ('k') | content/renderer/media/media_stream_audio_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698