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 |