| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |