| 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 #undef STATIC_ASSERT_MATCHING_ENUM | 96 #undef STATIC_ASSERT_MATCHING_ENUM |
| 97 | 97 |
| 98 #define BIND_TO_RENDER_LOOP(function) \ | 98 #define BIND_TO_RENDER_LOOP(function) \ |
| 99 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ | 99 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ |
| 100 BindToCurrentLoop(base::Bind(function, AsWeakPtr()))) | 100 BindToCurrentLoop(base::Bind(function, AsWeakPtr()))) |
| 101 | 101 |
| 102 #define BIND_TO_RENDER_LOOP1(function, arg1) \ | 102 #define BIND_TO_RENDER_LOOP1(function, arg1) \ |
| 103 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ | 103 (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ |
| 104 BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) | 104 BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) |
| 105 | 105 |
| 106 static void LogMediaSourceError(const scoped_refptr<MediaLog>& media_log, | 106 static void AddLogEntry(const scoped_refptr<MediaLog>& media_log, |
| 107 const std::string& error) { | 107 MediaLog::MediaLogLevel level, |
| 108 media_log->AddEvent(media_log->CreateMediaSourceErrorEvent(error)); | 108 const std::string& message) { |
| 109 media_log->AddEvent(media_log->CreateLogEvent(level, message)); |
| 109 } | 110 } |
| 110 | 111 |
| 111 static blink::WebEncryptedMediaInitDataType ConvertInitDataType( | 112 static blink::WebEncryptedMediaInitDataType ConvertInitDataType( |
| 112 const std::string& init_data_type) { | 113 const std::string& init_data_type) { |
| 113 if (init_data_type == "cenc") | 114 if (init_data_type == "cenc") |
| 114 return blink::WebEncryptedMediaInitDataType::Cenc; | 115 return blink::WebEncryptedMediaInitDataType::Cenc; |
| 115 if (init_data_type == "keyids") | 116 if (init_data_type == "keyids") |
| 116 return blink::WebEncryptedMediaInitDataType::Keyids; | 117 return blink::WebEncryptedMediaInitDataType::Keyids; |
| 117 if (init_data_type == "webm") | 118 if (init_data_type == "webm") |
| 118 return blink::WebEncryptedMediaInitDataType::Webm; | 119 return blink::WebEncryptedMediaInitDataType::Webm; |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 data_source_->OnBufferingHaveEnough(); | 830 data_source_->OnBufferingHaveEnough(); |
| 830 | 831 |
| 831 // Blink expects a timeChanged() in response to a seek(). | 832 // Blink expects a timeChanged() in response to a seek(). |
| 832 if (should_notify_time_changed_) | 833 if (should_notify_time_changed_) |
| 833 client_->timeChanged(); | 834 client_->timeChanged(); |
| 834 } | 835 } |
| 835 | 836 |
| 836 void WebMediaPlayerImpl::OnDemuxerOpened() { | 837 void WebMediaPlayerImpl::OnDemuxerOpened() { |
| 837 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 838 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 838 client_->mediaSourceOpened(new WebMediaSourceImpl( | 839 client_->mediaSourceOpened(new WebMediaSourceImpl( |
| 839 chunk_demuxer_, base::Bind(&LogMediaSourceError, media_log_))); | 840 chunk_demuxer_, base::Bind(&AddLogEntry, media_log_))); |
| 840 } | 841 } |
| 841 | 842 |
| 842 void WebMediaPlayerImpl::OnAddTextTrack( | 843 void WebMediaPlayerImpl::OnAddTextTrack( |
| 843 const TextTrackConfig& config, | 844 const TextTrackConfig& config, |
| 844 const AddTextTrackDoneCB& done_cb) { | 845 const AddTextTrackDoneCB& done_cb) { |
| 845 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 846 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 846 | 847 |
| 847 const WebInbandTextTrackImpl::Kind web_kind = | 848 const WebInbandTextTrackImpl::Kind web_kind = |
| 848 static_cast<WebInbandTextTrackImpl::Kind>(config.kind()); | 849 static_cast<WebInbandTextTrackImpl::Kind>(config.kind()); |
| 849 const blink::WebString web_label = | 850 const blink::WebString web_label = |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 899 if (load_type_ != LoadTypeMediaSource) { | 900 if (load_type_ != LoadTypeMediaSource) { |
| 900 DCHECK(!chunk_demuxer_); | 901 DCHECK(!chunk_demuxer_); |
| 901 DCHECK(data_source_); | 902 DCHECK(data_source_); |
| 902 | 903 |
| 903 demuxer_.reset(new FFmpegDemuxer(media_task_runner_, data_source_.get(), | 904 demuxer_.reset(new FFmpegDemuxer(media_task_runner_, data_source_.get(), |
| 904 encrypted_media_init_data_cb, media_log_)); | 905 encrypted_media_init_data_cb, media_log_)); |
| 905 } else { | 906 } else { |
| 906 DCHECK(!chunk_demuxer_); | 907 DCHECK(!chunk_demuxer_); |
| 907 DCHECK(!data_source_); | 908 DCHECK(!data_source_); |
| 908 | 909 |
| 909 mse_log_cb = base::Bind(&LogMediaSourceError, media_log_); | 910 mse_log_cb = base::Bind(&AddLogEntry, media_log_); |
| 910 | 911 |
| 911 chunk_demuxer_ = new ChunkDemuxer( | 912 chunk_demuxer_ = new ChunkDemuxer( |
| 912 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDemuxerOpened), | 913 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDemuxerOpened), |
| 913 encrypted_media_init_data_cb, mse_log_cb, media_log_, true); | 914 encrypted_media_init_data_cb, mse_log_cb, media_log_, true); |
| 914 demuxer_.reset(chunk_demuxer_); | 915 demuxer_.reset(chunk_demuxer_); |
| 915 } | 916 } |
| 916 | 917 |
| 917 // ... and we're ready to go! | 918 // ... and we're ready to go! |
| 918 seeking_ = true; | 919 seeking_ = true; |
| 919 | 920 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 | 1040 |
| 1040 // pause() may be called after playback has ended and the HTMLMediaElement | 1041 // pause() may be called after playback has ended and the HTMLMediaElement |
| 1041 // requires that currentTime() == duration() after ending. We want to ensure | 1042 // requires that currentTime() == duration() after ending. We want to ensure |
| 1042 // |paused_time_| matches currentTime() in this case or a future seek() may | 1043 // |paused_time_| matches currentTime() in this case or a future seek() may |
| 1043 // incorrectly discard what it thinks is a seek to the existing time. | 1044 // incorrectly discard what it thinks is a seek to the existing time. |
| 1044 paused_time_ = | 1045 paused_time_ = |
| 1045 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime(); | 1046 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime(); |
| 1046 } | 1047 } |
| 1047 | 1048 |
| 1048 } // namespace media | 1049 } // namespace media |
| OLD | NEW |