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