| 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" | 60 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" |
| 61 #include "third_party/WebKit/public/web/WebView.h" | 61 #include "third_party/WebKit/public/web/WebView.h" |
| 62 | 62 |
| 63 using blink::WebCanvas; | 63 using blink::WebCanvas; |
| 64 using blink::WebMediaPlayer; | 64 using blink::WebMediaPlayer; |
| 65 using blink::WebRect; | 65 using blink::WebRect; |
| 66 using blink::WebSize; | 66 using blink::WebSize; |
| 67 using blink::WebString; | 67 using blink::WebString; |
| 68 using gpu::gles2::GLES2Interface; | 68 using gpu::gles2::GLES2Interface; |
| 69 | 69 |
| 70 #define STATIC_ASSERT_ENUM(a, b) \ |
| 71 static_assert(static_cast<int>(a) == static_cast<int>(b), \ |
| 72 "mismatching enums: " #a) |
| 73 |
| 70 namespace media { | 74 namespace media { |
| 71 | 75 |
| 72 namespace { | 76 namespace { |
| 73 | 77 |
| 74 // Limits the range of playback rate. | 78 // Limits the range of playback rate. |
| 75 // | 79 // |
| 76 // TODO(kylep): Revisit these. | 80 // TODO(kylep): Revisit these. |
| 77 // | 81 // |
| 78 // Vista has substantially lower performance than XP or Windows7. If you speed | 82 // Vista has substantially lower performance than XP or Windows7. If you speed |
| 79 // up a video too much, it can't keep up, and rendering stops updating except on | 83 // up a video too much, it can't keep up, and rendering stops updating except on |
| (...skipping 19 matching lines...) Expand all Loading... |
| 99 callback); | 103 callback); |
| 100 } else { | 104 } else { |
| 101 callback.Run(OUTPUT_DEVICE_STATUS_ERROR_INTERNAL); | 105 callback.Run(OUTPUT_DEVICE_STATUS_ERROR_INTERNAL); |
| 102 } | 106 } |
| 103 } | 107 } |
| 104 | 108 |
| 105 } // namespace | 109 } // namespace |
| 106 | 110 |
| 107 class BufferedDataSourceHostImpl; | 111 class BufferedDataSourceHostImpl; |
| 108 | 112 |
| 109 #define STATIC_ASSERT_MATCHING_ENUM(name, name2) \ | 113 STATIC_ASSERT_ENUM(WebMediaPlayer::CORSModeUnspecified, |
| 110 static_assert(static_cast<int>(WebMediaPlayer::CORSMode##name) == \ | 114 UrlData::CORS_UNSPECIFIED); |
| 111 static_cast<int>(UrlData::name2), \ | 115 STATIC_ASSERT_ENUM(WebMediaPlayer::CORSModeAnonymous, UrlData::CORS_ANONYMOUS); |
| 112 "mismatching enum values: " #name) | 116 STATIC_ASSERT_ENUM(WebMediaPlayer::CORSModeUseCredentials, |
| 113 STATIC_ASSERT_MATCHING_ENUM(Unspecified, CORS_UNSPECIFIED); | 117 UrlData::CORS_USE_CREDENTIALS); |
| 114 STATIC_ASSERT_MATCHING_ENUM(Anonymous, CORS_ANONYMOUS); | |
| 115 STATIC_ASSERT_MATCHING_ENUM(UseCredentials, CORS_USE_CREDENTIALS); | |
| 116 #undef STATIC_ASSERT_MATCHING_ENUM | |
| 117 | 118 |
| 118 #define BIND_TO_RENDER_LOOP(function) \ | 119 #define BIND_TO_RENDER_LOOP(function) \ |
| 119 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ | 120 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ |
| 120 BindToCurrentLoop(base::Bind(function, AsWeakPtr()))) | 121 BindToCurrentLoop(base::Bind(function, AsWeakPtr()))) |
| 121 | 122 |
| 122 #define BIND_TO_RENDER_LOOP1(function, arg1) \ | 123 #define BIND_TO_RENDER_LOOP1(function, arg1) \ |
| 123 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ | 124 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ |
| 124 BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) | 125 BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) |
| 125 | 126 |
| 126 WebMediaPlayerImpl::WebMediaPlayerImpl( | 127 WebMediaPlayerImpl::WebMediaPlayerImpl( |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 | 509 |
| 509 media::SwitchOutputDeviceCB callback = | 510 media::SwitchOutputDeviceCB callback = |
| 510 media::ConvertToSwitchOutputDeviceCB(web_callback); | 511 media::ConvertToSwitchOutputDeviceCB(web_callback); |
| 511 media_task_runner_->PostTask( | 512 media_task_runner_->PostTask( |
| 512 FROM_HERE, | 513 FROM_HERE, |
| 513 base::Bind(&SetSinkIdOnMediaThread, audio_source_provider_, | 514 base::Bind(&SetSinkIdOnMediaThread, audio_source_provider_, |
| 514 sink_id.utf8(), static_cast<url::Origin>(security_origin), | 515 sink_id.utf8(), static_cast<url::Origin>(security_origin), |
| 515 callback)); | 516 callback)); |
| 516 } | 517 } |
| 517 | 518 |
| 518 #define STATIC_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ | 519 STATIC_ASSERT_ENUM(WebMediaPlayer::PreloadNone, BufferedDataSource::NONE); |
| 519 static_assert(static_cast<int>(WebMediaPlayer::webkit_name) == \ | 520 STATIC_ASSERT_ENUM(WebMediaPlayer::PreloadMetaData, |
| 520 static_cast<int>(BufferedDataSource::chromium_name), \ | 521 BufferedDataSource::METADATA); |
| 521 "mismatching enum values: " #webkit_name) | 522 STATIC_ASSERT_ENUM(WebMediaPlayer::PreloadAuto, BufferedDataSource::AUTO); |
| 522 STATIC_ASSERT_MATCHING_ENUM(PreloadNone, NONE); | |
| 523 STATIC_ASSERT_MATCHING_ENUM(PreloadMetaData, METADATA); | |
| 524 STATIC_ASSERT_MATCHING_ENUM(PreloadAuto, AUTO); | |
| 525 #undef STATIC_ASSERT_MATCHING_ENUM | |
| 526 | 523 |
| 527 void WebMediaPlayerImpl::setPreload(WebMediaPlayer::Preload preload) { | 524 void WebMediaPlayerImpl::setPreload(WebMediaPlayer::Preload preload) { |
| 528 DVLOG(1) << __FUNCTION__ << "(" << preload << ")"; | 525 DVLOG(1) << __FUNCTION__ << "(" << preload << ")"; |
| 529 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 526 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 530 | 527 |
| 531 preload_ = static_cast<BufferedDataSource::Preload>(preload); | 528 preload_ = static_cast<BufferedDataSource::Preload>(preload); |
| 532 if (data_source_) | 529 if (data_source_) |
| 533 data_source_->SetPreload(preload_); | 530 data_source_->SetPreload(preload_); |
| 534 } | 531 } |
| 535 | 532 |
| 536 #define STATIC_ASSERT_MATCHING_ENUM(webkit_name, chromium_name) \ | 533 STATIC_ASSERT_ENUM(WebMediaPlayer::BufferingStrategy::Normal, |
| 537 static_assert(static_cast<int>(WebMediaPlayer::webkit_name) == \ | 534 BufferedDataSource::BUFFERING_STRATEGY_NORMAL); |
| 538 static_cast<int>(BufferedDataSource::chromium_name), \ | 535 STATIC_ASSERT_ENUM(WebMediaPlayer::BufferingStrategy::Aggressive, |
| 539 "mismatching enum values: " #webkit_name) | 536 BufferedDataSource::BUFFERING_STRATEGY_AGGRESSIVE); |
| 540 STATIC_ASSERT_MATCHING_ENUM(BufferingStrategy::Normal, | |
| 541 BUFFERING_STRATEGY_NORMAL); | |
| 542 STATIC_ASSERT_MATCHING_ENUM(BufferingStrategy::Aggressive, | |
| 543 BUFFERING_STRATEGY_AGGRESSIVE); | |
| 544 #undef STATIC_ASSERT_MATCHING_ENUM | |
| 545 | 537 |
| 546 void WebMediaPlayerImpl::setBufferingStrategy( | 538 void WebMediaPlayerImpl::setBufferingStrategy( |
| 547 WebMediaPlayer::BufferingStrategy buffering_strategy) { | 539 WebMediaPlayer::BufferingStrategy buffering_strategy) { |
| 548 DVLOG(1) << __FUNCTION__; | 540 DVLOG(1) << __FUNCTION__; |
| 549 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 541 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 550 | 542 |
| 551 buffering_strategy_ = | 543 buffering_strategy_ = |
| 552 static_cast<BufferedDataSource::BufferingStrategy>(buffering_strategy); | 544 static_cast<BufferedDataSource::BufferingStrategy>(buffering_strategy); |
| 553 if (data_source_) | 545 if (data_source_) |
| 554 data_source_->SetBufferingStrategy(buffering_strategy_); | 546 data_source_->SetBufferingStrategy(buffering_strategy_); |
| (...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1549 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 1541 << ", Video: " << stats.video_memory_usage << ", DataSource: " |
| 1550 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 1542 << (data_source_ ? data_source_->GetMemoryUsage() : 0) |
| 1551 << ", Demuxer: " << demuxer_memory_usage; | 1543 << ", Demuxer: " << demuxer_memory_usage; |
| 1552 | 1544 |
| 1553 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 1545 const int64_t delta = current_memory_usage - last_reported_memory_usage_; |
| 1554 last_reported_memory_usage_ = current_memory_usage; | 1546 last_reported_memory_usage_ = current_memory_usage; |
| 1555 adjust_allocated_memory_cb_.Run(delta); | 1547 adjust_allocated_memory_cb_.Run(delta); |
| 1556 } | 1548 } |
| 1557 | 1549 |
| 1558 } // namespace media | 1550 } // namespace media |
| OLD | NEW |