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

Unified Diff: media/blink/webmediaplayer_impl.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/blink/webmediaplayer_impl.cc
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 814a93267dab762d04e201e7a55375ecb9d4180d..b9af114bb315f657b4d297efd62c5b3475153d12 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -370,6 +370,49 @@ void WebMediaPlayerImpl::setVolume(double volume) {
pipeline_.SetVolume(volume);
}
+void WebMediaPlayerImpl::FinishSetAudioOutputRequest(
+ blink::WebSetAudioOutputDeviceRequest *request,
+ int result) {
+ DCHECK(main_task_runner_->BelongsToCurrentThread());
+ DVLOG(1) << __PRETTY_FUNCTION__;
+ request->finish(result);
+ delete request;
+}
+
+void WebMediaPlayerImpl::PrepareFinishSetAudioOutputRequest(
+ WebMediaPlayerImpl* media_player,
+ const scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ blink::WebSetAudioOutputDeviceRequest *request,
+ int result) {
+ DCHECK(!task_runner->BelongsToCurrentThread());
+ DVLOG(1) << __PRETTY_FUNCTION__;
+ // TODO(guidou): Change base::Unretained to a weak pointer
miu 2015/06/03 21:01:02 This TODO needs to be resolved before committing.
+ task_runner->PostTask(
+ FROM_HERE, base::Bind(&WebMediaPlayerImpl::FinishSetAudioOutputRequest,
+ base::Unretained(media_player),
+ request,
+ result));
+}
+
+void WebMediaPlayerImpl::setAudioOutputDevice(
+ const blink::WebSetAudioOutputDeviceRequest& request) {
+ DCHECK(main_task_runner_->BelongsToCurrentThread());
+ std::string device_id_str(request.deviceID().utf8());
+ GURL security_origin(request.securityOrigin().toString().utf8());
+ DVLOG(1) << __FUNCTION__ << "(" << device_id_str << ", "
+ << security_origin << ")";
+
+ blink::WebSetAudioOutputDeviceRequest *request_ptr =
+ new blink::WebSetAudioOutputDeviceRequest(request);
+ pipeline_.SwitchAudioOutputDevice(
+ device_id_str,
+ security_origin,
+ base::Bind(&WebMediaPlayerImpl::PrepareFinishSetAudioOutputRequest,
+ base::Unretained(this),
+ main_task_runner_,
+ request_ptr));
+}
+
#define STATIC_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \
static_assert(static_cast<int>(WebMediaPlayer::webkit_name) == \
static_cast<int>(BufferedDataSource::chromium_name), \

Powered by Google App Engine
This is Rietveld 408576698