Chromium Code Reviews| 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()); |