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

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

Issue 1812543003: Allow muting/unmuting audio through media track API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blink-sb-tracks6
Patch Set: Added VideoTrackSelectDeselect test case Created 4 years, 8 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 <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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698