Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: media/blink/webmediaplayer_impl.cc

Issue 1922333002: Implement mapping blink track id to demuxer streams (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR feedback Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698