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 <string> | 10 #include <string> | 
| (...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 570 | 570 | 
| 571 return pipeline_metadata_.has_video; | 571 return pipeline_metadata_.has_video; | 
| 572 } | 572 } | 
| 573 | 573 | 
| 574 bool WebMediaPlayerImpl::hasAudio() const { | 574 bool WebMediaPlayerImpl::hasAudio() const { | 
| 575 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 575 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 
| 576 | 576 | 
| 577 return pipeline_metadata_.has_audio; | 577 return pipeline_metadata_.has_audio; | 
| 578 } | 578 } | 
| 579 | 579 | 
| 580 void WebMediaPlayerImpl::enabledAudioTracksChanged( | |
| 581 const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) { | |
| 582 DCHECK(main_task_runner_->BelongsToCurrentThread()); | |
| 583 CHECK(demuxer_.get()); | |
| 584 | |
| 585 // TODO(servolk): Implement disabling/enabling audio streams. | |
| 586 } | |
| 587 | |
| 588 void WebMediaPlayerImpl::selectedVideoTrackChanged( | |
| 589 blink::WebMediaPlayer::TrackId* selectedTrackId) { | |
| 590 DCHECK(main_task_runner_->BelongsToCurrentThread()); | |
| 591 CHECK(demuxer_.get()); | |
| 592 | |
| 593 // TODO(servolk): Implement disabling/enabling video stream. | |
| 594 } | |
| 595 | |
| 580 blink::WebSize WebMediaPlayerImpl::naturalSize() const { | 596 blink::WebSize WebMediaPlayerImpl::naturalSize() const { | 
| 581 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 597 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 
| 582 | 598 | 
| 583 return blink::WebSize(pipeline_metadata_.natural_size); | 599 return blink::WebSize(pipeline_metadata_.natural_size); | 
| 584 } | 600 } | 
| 585 | 601 | 
| 586 bool WebMediaPlayerImpl::paused() const { | 602 bool WebMediaPlayerImpl::paused() const { | 
| 587 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 603 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 
| 588 | 604 | 
| 589 #if defined(OS_ANDROID) // WMPI_CAST | 605 #if defined(OS_ANDROID) // WMPI_CAST | 
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 834 } | 850 } | 
| 835 | 851 | 
| 836 void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( | 852 void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( | 
| 837 std::unique_ptr<MediaTracks> tracks) { | 853 std::unique_ptr<MediaTracks> tracks) { | 
| 838 // For MSE/chunk_demuxer case the media track updates are handled by | 854 // For MSE/chunk_demuxer case the media track updates are handled by | 
| 839 // WebSourceBufferImpl. | 855 // WebSourceBufferImpl. | 
| 840 DCHECK(demuxer_.get()); | 856 DCHECK(demuxer_.get()); | 
| 841 DCHECK(!chunk_demuxer_); | 857 DCHECK(!chunk_demuxer_); | 
| 842 | 858 | 
| 843 // Report the media track information to blink. | 859 // Report the media track information to blink. | 
| 860 std::vector<blink::WebMediaPlayer::TrackId> blinkTrackIds; | |
| 844 for (const auto& track : tracks->tracks()) { | 861 for (const auto& track : tracks->tracks()) { | 
| 845 if (track->type() == MediaTrack::Audio) { | 862 if (track->type() == MediaTrack::Audio) { | 
| 846 auto track_id = client_->addAudioTrack( | 863 auto track_id = client_->addAudioTrack( | 
| 847 blink::WebString::fromUTF8(track->id()), | 864 blink::WebString::fromUTF8(track->id()), | 
| 848 blink::WebMediaPlayerClient::AudioTrackKindMain, | 865 blink::WebMediaPlayerClient::AudioTrackKindMain, | 
| 849 blink::WebString::fromUTF8(track->label()), | 866 blink::WebString::fromUTF8(track->label()), | 
| 850 blink::WebString::fromUTF8(track->language()), | 867 blink::WebString::fromUTF8(track->language()), | 
| 851 /*enabled*/ true); | 868 /*enabled*/ true); | 
| 852 (void)track_id; | 869 blinkTrackIds.push_back(track_id); | 
| 853 } else if (track->type() == MediaTrack::Video) { | 870 } else if (track->type() == MediaTrack::Video) { | 
| 854 auto track_id = client_->addVideoTrack( | 871 auto track_id = client_->addVideoTrack( | 
| 855 blink::WebString::fromUTF8(track->id()), | 872 blink::WebString::fromUTF8(track->id()), | 
| 856 blink::WebMediaPlayerClient::VideoTrackKindMain, | 873 blink::WebMediaPlayerClient::VideoTrackKindMain, | 
| 857 blink::WebString::fromUTF8(track->label()), | 874 blink::WebString::fromUTF8(track->label()), | 
| 858 blink::WebString::fromUTF8(track->language()), | 875 blink::WebString::fromUTF8(track->language()), | 
| 859 /*selected*/ true); | 876 /*selected*/ true); | 
| 860 (void)track_id; | 877 blinkTrackIds.push_back(track_id); | 
| 861 } else { | 878 } else { | 
| 862 // Text tracks are not supported through this code path yet. | 879 // Text tracks are not supported through this code path yet. | 
| 863 NOTREACHED(); | 880 NOTREACHED(); | 
| 864 } | 881 } | 
| 865 } | 882 } | 
| 883 | |
| 884 demuxer_->OnTrackIdsAssigned(*tracks.get(), blinkTrackIds); | |
| 
 
xhwang
2016/06/03 18:52:45
It looks really odd that we create the track in ch
 
servolk
2016/06/03 20:06:45
Thanks, good point. Blink has had separate bytestr
 
chcunningham
2016/06/03 20:42:49
I'm also looking for away to let Chromium decide t
 
servolk
2016/06/03 20:57:10
Yes, multiple bytestream track ids might map to th
 
servolk
2016/06/03 23:35:36
Well, completely removing WebMediaPlayer::TrackId
 
servolk
2016/06/06 17:42:56
Update: I though about it some more over the weeke
 
 | |
| 866 } | 885 } | 
| 867 | 886 | 
| 868 void WebMediaPlayerImpl::SetCdm(const CdmAttachedCB& cdm_attached_cb, | 887 void WebMediaPlayerImpl::SetCdm(const CdmAttachedCB& cdm_attached_cb, | 
| 869 CdmContext* cdm_context) { | 888 CdmContext* cdm_context) { | 
| 870 if (!cdm_context) { | 889 if (!cdm_context) { | 
| 871 cdm_attached_cb.Run(false); | 890 cdm_attached_cb.Run(false); | 
| 872 return; | 891 return; | 
| 873 } | 892 } | 
| 874 | 893 | 
| 875 // If CDM initialization succeeded, tell the pipeline about it. | 894 // If CDM initialization succeeded, tell the pipeline about it. | 
| (...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1610 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 1629 << ", Video: " << stats.video_memory_usage << ", DataSource: " | 
| 1611 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 1630 << (data_source_ ? data_source_->GetMemoryUsage() : 0) | 
| 1612 << ", Demuxer: " << demuxer_memory_usage; | 1631 << ", Demuxer: " << demuxer_memory_usage; | 
| 1613 | 1632 | 
| 1614 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 1633 const int64_t delta = current_memory_usage - last_reported_memory_usage_; | 
| 1615 last_reported_memory_usage_ = current_memory_usage; | 1634 last_reported_memory_usage_ = current_memory_usage; | 
| 1616 adjust_allocated_memory_cb_.Run(delta); | 1635 adjust_allocated_memory_cb_.Run(delta); | 
| 1617 } | 1636 } | 
| 1618 | 1637 | 
| 1619 } // namespace media | 1638 } // namespace media | 
| OLD | NEW |