| 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 <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 685 // TODO(xhwang): Update this UMA name. | 685 // TODO(xhwang): Update this UMA name. |
| 686 UMA_HISTOGRAM_COUNTS("Media.EME.NeedKey", 1); | 686 UMA_HISTOGRAM_COUNTS("Media.EME.NeedKey", 1); |
| 687 | 687 |
| 688 encrypted_media_support_.SetInitDataType(init_data_type); | 688 encrypted_media_support_.SetInitDataType(init_data_type); |
| 689 | 689 |
| 690 client_->encrypted(ConvertInitDataType(init_data_type), | 690 client_->encrypted(ConvertInitDataType(init_data_type), |
| 691 vector_as_array(&init_data), | 691 vector_as_array(&init_data), |
| 692 base::saturated_cast<unsigned int>(init_data.size())); | 692 base::saturated_cast<unsigned int>(init_data.size())); |
| 693 } | 693 } |
| 694 | 694 |
| 695 void WebMediaPlayerImpl::OnWaitingForDecryptionKey() { |
| 696 client_->didBlockPlaybackWaitingForKey(); |
| 697 |
| 698 // TODO(jrummell): didResumePlaybackBlockedForKey() should only be called |
| 699 // when a key has been successfully added (e.g. OnSessionKeysChange() with |
| 700 // |has_additional_usable_key| = true). http://crbug.com/461903 |
| 701 client_->didResumePlaybackBlockedForKey(); |
| 702 } |
| 703 |
| 695 void WebMediaPlayerImpl::SetCdm(CdmContext* cdm_context, | 704 void WebMediaPlayerImpl::SetCdm(CdmContext* cdm_context, |
| 696 const CdmAttachedCB& cdm_attached_cb) { | 705 const CdmAttachedCB& cdm_attached_cb) { |
| 697 pipeline_.SetCdm(cdm_context, cdm_attached_cb); | 706 pipeline_.SetCdm(cdm_context, cdm_attached_cb); |
| 698 } | 707 } |
| 699 | 708 |
| 700 void WebMediaPlayerImpl::OnCdmAttached( | 709 void WebMediaPlayerImpl::OnCdmAttached( |
| 701 blink::WebContentDecryptionModuleResult result, | 710 blink::WebContentDecryptionModuleResult result, |
| 702 bool success) { | 711 bool success) { |
| 703 if (success) { | 712 if (success) { |
| 704 result.complete(); | 713 result.complete(); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 demuxer_.get(), | 905 demuxer_.get(), |
| 897 renderer_factory_->CreateRenderer(media_task_runner_, | 906 renderer_factory_->CreateRenderer(media_task_runner_, |
| 898 audio_source_provider_.get()), | 907 audio_source_provider_.get()), |
| 899 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), | 908 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), |
| 900 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError), | 909 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError), |
| 901 BIND_TO_RENDER_LOOP1(&WebMediaPlayerImpl::OnPipelineSeeked, false), | 910 BIND_TO_RENDER_LOOP1(&WebMediaPlayerImpl::OnPipelineSeeked, false), |
| 902 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), | 911 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineMetadata), |
| 903 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), | 912 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingStateChanged), |
| 904 base::Bind(&WebMediaPlayerImpl::FrameReady, base::Unretained(this)), | 913 base::Bind(&WebMediaPlayerImpl::FrameReady, base::Unretained(this)), |
| 905 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), | 914 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDurationChanged), |
| 906 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack)); | 915 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack), |
| 916 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnWaitingForDecryptionKey)); |
| 907 } | 917 } |
| 908 | 918 |
| 909 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { | 919 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { |
| 910 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; | 920 DVLOG(1) << __FUNCTION__ << "(" << state << ")"; |
| 911 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 921 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 912 network_state_ = state; | 922 network_state_ = state; |
| 913 // Always notify to ensure client has the latest value. | 923 // Always notify to ensure client has the latest value. |
| 914 client_->networkStateChanged(); | 924 client_->networkStateChanged(); |
| 915 } | 925 } |
| 916 | 926 |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 | 1023 |
| 1014 // pause() may be called after playback has ended and the HTMLMediaElement | 1024 // pause() may be called after playback has ended and the HTMLMediaElement |
| 1015 // requires that currentTime() == duration() after ending. We want to ensure | 1025 // requires that currentTime() == duration() after ending. We want to ensure |
| 1016 // |paused_time_| matches currentTime() in this case or a future seek() may | 1026 // |paused_time_| matches currentTime() in this case or a future seek() may |
| 1017 // incorrectly discard what it thinks is a seek to the existing time. | 1027 // incorrectly discard what it thinks is a seek to the existing time. |
| 1018 paused_time_ = | 1028 paused_time_ = |
| 1019 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime(); | 1029 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime(); |
| 1020 } | 1030 } |
| 1021 | 1031 |
| 1022 } // namespace media | 1032 } // namespace media |
| OLD | NEW |