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

Side by Side Diff: media/blink/webmediaplayer_impl.cc

Issue 1580493004: Plumb audio focus support for spitzer clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delegate_hookup
Patch Set: Fix crash, plumb. Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/blink/webmediaplayer_impl.h" 5 #include "media/blink/webmediaplayer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <string> 10 #include <string>
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 } 197 }
198 198
199 // TODO(xhwang): When we use an external Renderer, many methods won't work, 199 // TODO(xhwang): When we use an external Renderer, many methods won't work,
200 // e.g. GetCurrentFrameFromCompositor(). See http://crbug.com/434861 200 // e.g. GetCurrentFrameFromCompositor(). See http://crbug.com/434861
201 201
202 // Use the null sink if no sink was provided. 202 // Use the null sink if no sink was provided.
203 audio_source_provider_ = new WebAudioSourceProviderImpl( 203 audio_source_provider_ = new WebAudioSourceProviderImpl(
204 params.audio_renderer_sink().get() 204 params.audio_renderer_sink().get()
205 ? params.audio_renderer_sink() 205 ? params.audio_renderer_sink()
206 : new NullAudioSink(media_task_runner_)); 206 : new NullAudioSink(media_task_runner_));
207 #if defined(OS_ANDROID)
208 audio_source_provider_->enable_audio_focus();
209 #endif
207 } 210 }
208 211
209 WebMediaPlayerImpl::~WebMediaPlayerImpl() { 212 WebMediaPlayerImpl::~WebMediaPlayerImpl() {
210 client_->setWebLayer(NULL); 213 client_->setWebLayer(NULL);
211 214
212 DCHECK(main_task_runner_->BelongsToCurrentThread()); 215 DCHECK(main_task_runner_->BelongsToCurrentThread());
213 216
214 if (delegate_) { 217 if (delegate_)
215 delegate_->RemoveObserver(this);
216 delegate_->PlayerGone(this); 218 delegate_->PlayerGone(this);
217 }
218 219
219 // Abort any pending IO so stopping the pipeline doesn't get blocked. 220 // Abort any pending IO so stopping the pipeline doesn't get blocked.
220 if (data_source_) 221 if (data_source_)
221 data_source_->Abort(); 222 data_source_->Abort();
222 if (chunk_demuxer_) { 223 if (chunk_demuxer_) {
223 chunk_demuxer_->Shutdown(); 224 chunk_demuxer_->Shutdown();
224 chunk_demuxer_ = NULL; 225 chunk_demuxer_ = NULL;
225 } 226 }
226 227
227 renderer_factory_.reset(); 228 renderer_factory_.reset();
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 1028
1028 scoped_ptr<WebInbandTextTrackImpl> web_inband_text_track( 1029 scoped_ptr<WebInbandTextTrackImpl> web_inband_text_track(
1029 new WebInbandTextTrackImpl(web_kind, web_label, web_language, web_id)); 1030 new WebInbandTextTrackImpl(web_kind, web_label, web_language, web_id));
1030 1031
1031 scoped_ptr<TextTrack> text_track(new TextTrackImpl( 1032 scoped_ptr<TextTrack> text_track(new TextTrackImpl(
1032 main_task_runner_, client_, std::move(web_inband_text_track))); 1033 main_task_runner_, client_, std::move(web_inband_text_track)));
1033 1034
1034 done_cb.Run(std::move(text_track)); 1035 done_cb.Run(std::move(text_track));
1035 } 1036 }
1036 1037
1038 blink::WebMediaPlayer* WebMediaPlayerImpl::GetPlayer() {
1039 return this;
1040 }
1041
1037 void WebMediaPlayerImpl::OnHidden() { 1042 void WebMediaPlayerImpl::OnHidden() {
1038 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1043 DCHECK(main_task_runner_->BelongsToCurrentThread());
1039 1044
1040 #if !defined(OS_ANDROID) 1045 #if !defined(OS_ANDROID)
1041 // Suspend/Resume is enabled by default on Android. 1046 // Suspend/Resume is enabled by default on Android.
1042 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 1047 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
1043 switches::kEnableMediaSuspend)) { 1048 switches::kEnableMediaSuspend)) {
1044 return; 1049 return;
1045 } 1050 }
1046 #endif // !defined(OS_ANDROID) 1051 #endif // !defined(OS_ANDROID)
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1105 } 1110 }
1106 1111
1107 // We may not be suspended if we were not yet subscribed or the pipeline was 1112 // We may not be suspended if we were not yet subscribed or the pipeline was
1108 // not yet started when OnHidden() fired. 1113 // not yet started when OnHidden() fired.
1109 if (!suspended_) 1114 if (!suspended_)
1110 return; 1115 return;
1111 1116
1112 Resume(); 1117 Resume();
1113 } 1118 }
1114 1119
1120 void WebMediaPlayerImpl::OnPlay() {
1121 // TODO(dalecurtis): All clients use the same code for OnPlay/OnPause... which
1122 // suggests there's some cleanup worth doing.
1123 play();
1124 client_->playbackStateChanged();
1125 }
1126
1127 void WebMediaPlayerImpl::OnPause() {
1128 pause();
1129 client_->playbackStateChanged();
1130 }
1131
1115 void WebMediaPlayerImpl::Resume() { 1132 void WebMediaPlayerImpl::Resume() {
1116 DCHECK(main_task_runner_->BelongsToCurrentThread()); 1133 DCHECK(main_task_runner_->BelongsToCurrentThread());
1117 CHECK(suspended_); 1134 CHECK(suspended_);
1118 CHECK(!resuming_); 1135 CHECK(!resuming_);
1119 1136
1120 // If there was a time change pending when we suspended (which can happen when 1137 // If there was a time change pending when we suspended (which can happen when
1121 // we suspend immediately after a seek), surface it after resuming. 1138 // we suspend immediately after a seek), surface it after resuming.
1122 bool time_changed = pending_time_change_; 1139 bool time_changed = pending_time_change_;
1123 pending_time_change_ = false; 1140 pending_time_change_ = false;
1124 1141
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 << ", Video: " << stats.video_memory_usage << ", DataSource: " 1390 << ", Video: " << stats.video_memory_usage << ", DataSource: "
1374 << (data_source_ ? data_source_->GetMemoryUsage() : 0) 1391 << (data_source_ ? data_source_->GetMemoryUsage() : 0)
1375 << ", Demuxer: " << demuxer_memory_usage; 1392 << ", Demuxer: " << demuxer_memory_usage;
1376 1393
1377 const int64_t delta = current_memory_usage - last_reported_memory_usage_; 1394 const int64_t delta = current_memory_usage - last_reported_memory_usage_;
1378 last_reported_memory_usage_ = current_memory_usage; 1395 last_reported_memory_usage_ = current_memory_usage;
1379 adjust_allocated_memory_cb_.Run(delta); 1396 adjust_allocated_memory_cb_.Run(delta);
1380 } 1397 }
1381 1398
1382 } // namespace media 1399 } // namespace media
OLDNEW
« content/browser/media/media_web_contents_observer.cc ('K') | « media/blink/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698