Chromium Code Reviews| 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 <sstream> | |
| 10 #include <string> | 11 #include <string> |
| 11 #include <utility> | 12 #include <utility> |
| 12 | 13 |
| 13 #include "base/bind.h" | 14 #include "base/bind.h" |
| 14 #include "base/bind_helpers.h" | 15 #include "base/bind_helpers.h" |
| 15 #include "base/callback.h" | 16 #include "base/callback.h" |
| 16 #include "base/callback_helpers.h" | 17 #include "base/callback_helpers.h" |
| 17 #include "base/command_line.h" | 18 #include "base/command_line.h" |
| 18 #include "base/debug/alias.h" | 19 #include "base/debug/alias.h" |
| 19 #include "base/debug/crash_logging.h" | 20 #include "base/debug/crash_logging.h" |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 | 553 |
| 553 return pipeline_metadata_.has_video; | 554 return pipeline_metadata_.has_video; |
| 554 } | 555 } |
| 555 | 556 |
| 556 bool WebMediaPlayerImpl::hasAudio() const { | 557 bool WebMediaPlayerImpl::hasAudio() const { |
| 557 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 558 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 558 | 559 |
| 559 return pipeline_metadata_.has_audio; | 560 return pipeline_metadata_.has_audio; |
| 560 } | 561 } |
| 561 | 562 |
| 563 void WebMediaPlayerImpl::enabledAudioTracksChanged( | |
| 564 const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) { | |
| 565 DCHECK(main_task_runner_->BelongsToCurrentThread()); | |
| 566 CHECK(demuxer_.get()); | |
| 567 | |
| 568 std::vector<const DemuxerStream*> enabledAudioStreams; | |
| 569 std::stringstream trackIdsStr; | |
| 570 for (const auto& trackId : enabledTrackIds) { | |
| 571 const DemuxerStream* s = demuxer_->GetDemuxerStreamByTrackId(trackId); | |
| 572 DCHECK(s); | |
|
wolenetz
2016/04/08 23:32:31
nit: I prefer CHECK here. Perhaps also DCHECK that
servolk
2016/04/08 23:47:20
Done.
| |
| 573 enabledAudioStreams.push_back(s); | |
| 574 trackIdsStr << trackId << " "; | |
| 575 } | |
| 576 MEDIA_LOG(INFO, media_log_) | |
| 577 << "WebMediaPlayerImpl::enabledAudioTracksChanged enabledTrackIds=" | |
| 578 << trackIdsStr.str(); | |
| 579 pipeline_.OnEnabledAudioStreamsChanged(enabledAudioStreams); | |
| 580 } | |
| 581 | |
| 582 void WebMediaPlayerImpl::selectedVideoTrackChanged( | |
| 583 blink::WebMediaPlayer::TrackId* selectedTrackId) { | |
| 584 DCHECK(main_task_runner_->BelongsToCurrentThread()); | |
| 585 CHECK(demuxer_.get()); | |
| 586 | |
| 587 const DemuxerStream* selectedVideoStream = nullptr; | |
| 588 if (selectedTrackId) { | |
| 589 selectedVideoStream = demuxer_->GetDemuxerStreamByTrackId(*selectedTrackId); | |
| 590 DCHECK(selectedVideoStream); | |
|
wolenetz
2016/04/08 23:32:31
nit ditto CHECK. Perhaps also DCHECK that selected
servolk
2016/04/08 23:47:20
Done.
| |
| 591 MEDIA_LOG(INFO, media_log_) | |
| 592 << "WebMediaPlayerImpl::selectedVideoTrackChanged selectedTrackId=" | |
| 593 << *selectedTrackId << " selectedVideoStream=" << selectedVideoStream; | |
| 594 } else { | |
| 595 MEDIA_LOG(INFO, media_log_) << "WebMediaPlayerImpl::" | |
| 596 "selectedVideoTrackChanged " | |
| 597 "selectedTrackId=none"; | |
| 598 } | |
| 599 pipeline_.OnSelectedVideoStreamChanged(selectedVideoStream); | |
| 600 } | |
| 601 | |
| 562 blink::WebSize WebMediaPlayerImpl::naturalSize() const { | 602 blink::WebSize WebMediaPlayerImpl::naturalSize() const { |
| 563 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 603 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 564 | 604 |
| 565 return blink::WebSize(pipeline_metadata_.natural_size); | 605 return blink::WebSize(pipeline_metadata_.natural_size); |
| 566 } | 606 } |
| 567 | 607 |
| 568 bool WebMediaPlayerImpl::paused() const { | 608 bool WebMediaPlayerImpl::paused() const { |
| 569 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 609 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 570 | 610 |
| 571 #if defined(OS_ANDROID) // WMPI_CAST | 611 #if defined(OS_ANDROID) // WMPI_CAST |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 815 } | 855 } |
| 816 | 856 |
| 817 void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( | 857 void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
| 818 scoped_ptr<MediaTracks> tracks) { | 858 scoped_ptr<MediaTracks> tracks) { |
| 819 // For MSE/chunk_demuxer case the media track updates are handled by | 859 // For MSE/chunk_demuxer case the media track updates are handled by |
| 820 // WebSourceBufferImpl. | 860 // WebSourceBufferImpl. |
| 821 DCHECK(demuxer_.get()); | 861 DCHECK(demuxer_.get()); |
| 822 DCHECK(!chunk_demuxer_); | 862 DCHECK(!chunk_demuxer_); |
| 823 | 863 |
| 824 // Report the media track information to blink. | 864 // Report the media track information to blink. |
| 865 std::vector<blink::WebMediaPlayer::TrackId> blinkTrackIds; | |
| 825 for (const auto& track : tracks->tracks()) { | 866 for (const auto& track : tracks->tracks()) { |
| 826 if (track->type() == MediaTrack::Audio) { | 867 if (track->type() == MediaTrack::Audio) { |
| 827 auto track_id = client_->addAudioTrack( | 868 auto track_id = client_->addAudioTrack( |
| 828 blink::WebString::fromUTF8(track->id()), | 869 blink::WebString::fromUTF8(track->id()), |
| 829 blink::WebMediaPlayerClient::AudioTrackKindMain, | 870 blink::WebMediaPlayerClient::AudioTrackKindMain, |
| 830 blink::WebString::fromUTF8(track->label()), | 871 blink::WebString::fromUTF8(track->label()), |
| 831 blink::WebString::fromUTF8(track->language()), | 872 blink::WebString::fromUTF8(track->language()), |
| 832 /*enabled*/ true); | 873 /*enabled*/ true); |
| 833 (void)track_id; | 874 blinkTrackIds.push_back(track_id); |
| 834 } else if (track->type() == MediaTrack::Video) { | 875 } else if (track->type() == MediaTrack::Video) { |
| 835 auto track_id = client_->addVideoTrack( | 876 auto track_id = client_->addVideoTrack( |
| 836 blink::WebString::fromUTF8(track->id()), | 877 blink::WebString::fromUTF8(track->id()), |
| 837 blink::WebMediaPlayerClient::VideoTrackKindMain, | 878 blink::WebMediaPlayerClient::VideoTrackKindMain, |
| 838 blink::WebString::fromUTF8(track->label()), | 879 blink::WebString::fromUTF8(track->label()), |
| 839 blink::WebString::fromUTF8(track->language()), | 880 blink::WebString::fromUTF8(track->language()), |
| 840 /*selected*/ true); | 881 /*selected*/ true); |
| 841 (void)track_id; | 882 blinkTrackIds.push_back(track_id); |
| 842 } else { | 883 } else { |
| 843 // Text tracks are not supported through this code path yet. | 884 // Text tracks are not supported through this code path yet. |
| 844 NOTREACHED(); | 885 NOTREACHED(); |
| 845 } | 886 } |
| 846 } | 887 } |
| 888 | |
| 889 demuxer_->OnTrackIdsAssigned(*tracks.get(), blinkTrackIds); | |
| 847 } | 890 } |
| 848 | 891 |
| 849 void WebMediaPlayerImpl::OnWaitingForDecryptionKey() { | 892 void WebMediaPlayerImpl::OnWaitingForDecryptionKey() { |
| 850 encrypted_client_->didBlockPlaybackWaitingForKey(); | 893 encrypted_client_->didBlockPlaybackWaitingForKey(); |
| 851 | 894 |
| 852 // TODO(jrummell): didResumePlaybackBlockedForKey() should only be called | 895 // TODO(jrummell): didResumePlaybackBlockedForKey() should only be called |
| 853 // when a key has been successfully added (e.g. OnSessionKeysChange() with | 896 // when a key has been successfully added (e.g. OnSessionKeysChange() with |
| 854 // |has_additional_usable_key| = true). http://crbug.com/461903 | 897 // |has_additional_usable_key| = true). http://crbug.com/461903 |
| 855 encrypted_client_->didResumePlaybackBlockedForKey(); | 898 encrypted_client_->didResumePlaybackBlockedForKey(); |
| 856 } | 899 } |
| (...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1587 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 1630 << ", Video: " << stats.video_memory_usage << ", DataSource: " |
| 1588 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 1631 << (data_source_ ? data_source_->GetMemoryUsage() : 0) |
| 1589 << ", Demuxer: " << demuxer_memory_usage; | 1632 << ", Demuxer: " << demuxer_memory_usage; |
| 1590 | 1633 |
| 1591 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 1634 const int64_t delta = current_memory_usage - last_reported_memory_usage_; |
| 1592 last_reported_memory_usage_ = current_memory_usage; | 1635 last_reported_memory_usage_ = current_memory_usage; |
| 1593 adjust_allocated_memory_cb_.Run(delta); | 1636 adjust_allocated_memory_cb_.Run(delta); |
| 1594 } | 1637 } |
| 1595 | 1638 |
| 1596 } // namespace media | 1639 } // namespace media |
| OLD | NEW |