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

Unified Diff: media/base/pipeline.cc

Issue 1122393004: Add support for switching the audio output device for HTMLMediaElements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes to MediaPlayers so that they invoke callbacks in the correct threads. First complete implem… Created 5 years, 7 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: media/base/pipeline.cc
diff --git a/media/base/pipeline.cc b/media/base/pipeline.cc
index 4a397049fc0279f9443de4480d02543ce7135cd4..f49e44dd5d4f650f2ed6537879ec30373089ae52 100644
--- a/media/base/pipeline.cc
+++ b/media/base/pipeline.cc
@@ -159,6 +159,23 @@ void Pipeline::SetVolume(float volume) {
}
}
+void Pipeline::SwitchAudioOutputDevice(
+ const std::string& device_id,
+ const GURL& security_origin,
+ const base::Callback<void(int)>& callback) {
+ DVLOG(1) << __FUNCTION__;
+ base::AutoLock auto_lock(lock_);
+ if (running_) {
+ task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&Pipeline::AudioOutputDeviceSwitchedTask,
+ weak_factory_.GetWeakPtr(),
+ device_id,
+ security_origin,
+ callback));
+ }
+}
+
TimeDelta Pipeline::GetMediaTime() const {
base::AutoLock auto_lock(lock_);
return renderer_ ? std::min(renderer_->GetMediaTime(), duration_)
@@ -572,6 +589,19 @@ void Pipeline::VolumeChangedTask(float volume) {
renderer_->SetVolume(volume);
}
+void Pipeline::AudioOutputDeviceSwitchedTask(
+ const std::string& device_id,
+ const GURL& security_origin,
+ const base::Callback<void(int)>& callback) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+ DVLOG(1) << __FUNCTION__ << "(" << device_id << ", "
+ << security_origin << ")";
+
+ // TODO(guidou): Check if there are any values of state_ for which switching
miu 2015/06/03 21:01:01 Please do this in the current CL, or submit a crbu
+ // audio output device makes no sense.
+ renderer_->SwitchAudioOutputDevice(device_id, security_origin, callback);
+}
+
void Pipeline::SeekTask(TimeDelta time, const PipelineStatusCB& seek_cb) {
DCHECK(task_runner_->BelongsToCurrentThread());
DCHECK(stop_cb_.is_null());

Powered by Google App Engine
This is Rietveld 408576698