Index: media/blink/webmediaplayer_impl.cc |
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
index c6772dbf1410fd4e6c421d10620120a79656a382..e2ccc2533dde9aad91ccee3520ae5e0732708402 100644 |
--- a/media/blink/webmediaplayer_impl.cc |
+++ b/media/blink/webmediaplayer_impl.cc |
@@ -7,6 +7,7 @@ |
#include <algorithm> |
#include <cmath> |
#include <limits> |
+#include <sstream> |
#include <string> |
#include <utility> |
@@ -59,6 +60,7 @@ |
#include "third_party/WebKit/public/web/WebDocument.h" |
#include "third_party/WebKit/public/web/WebFrame.h" |
#include "third_party/WebKit/public/web/WebLocalFrame.h" |
+#include "third_party/WebKit/public/web/WebRuntimeFeatures.h" |
#include "third_party/WebKit/public/web/WebView.h" |
using blink::WebCanvas; |
@@ -567,6 +569,40 @@ bool WebMediaPlayerImpl::hasAudio() const { |
return pipeline_metadata_.has_audio; |
} |
+void WebMediaPlayerImpl::enabledAudioTracksChanged( |
+ const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) { |
+ DCHECK(main_task_runner_->BelongsToCurrentThread()); |
+ CHECK(demuxer_.get()); |
+ |
+ std::vector<const DemuxerStream*> enabledAudioStreams; |
+ std::stringstream trackIdsStr; |
+ for (const auto& trackId : enabledTrackIds) { |
+ const DemuxerStream* s = demuxer_->GetDemuxerStreamByTrackId(trackId); |
+ DCHECK(s); |
+ enabledAudioStreams.push_back(s); |
+ trackIdsStr << trackId << " "; |
+ } |
+ DVLOG(5) << "WMPI::enabledAudioTracksChanged enabledTrackIds=" |
wolenetz
2016/03/30 00:31:32
This seems appropriate for a MEDIA_LOG(INFO,...) e
servolk
2016/03/30 01:13:12
Done.
|
+ << trackIdsStr.str(); |
+ pipeline_.OnEnabledAudioStreamsChanged(enabledAudioStreams); |
+} |
+ |
+void WebMediaPlayerImpl::selectedVideoTrackChanged( |
+ blink::WebMediaPlayer::TrackId* selectedTrackId) { |
+ DCHECK(main_task_runner_->BelongsToCurrentThread()); |
+ CHECK(demuxer_.get()); |
+ |
+ const DemuxerStream* selectedVideoStream = nullptr; |
+ if (selectedTrackId) { |
+ DVLOG(5) << "WMPI::selectedVideoTrackChanged selectedTrackId=" |
wolenetz
2016/03/30 00:31:32
ditto
servolk
2016/03/30 01:13:12
Done.
|
+ << *selectedTrackId; |
+ demuxer_->GetDemuxerStreamByTrackId(*selectedTrackId); |
+ } else { |
+ DVLOG(5) << "WMPI::selectedVideoTrackChanged selectedTrackId=<none>"; |
wolenetz
2016/03/30 00:31:32
ditto
servolk
2016/03/30 01:13:13
Done.
|
+ } |
+ pipeline_.OnSelectedVideoStreamChanged(selectedVideoStream); |
+} |
+ |
blink::WebSize WebMediaPlayerImpl::naturalSize() const { |
DCHECK(main_task_runner_->BelongsToCurrentThread()); |
@@ -823,6 +859,9 @@ void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
DCHECK(demuxer_.get()); |
DCHECK(!chunk_demuxer_); |
+ if (!blink::WebRuntimeFeatures::audioVideoTracksEnabled()) |
+ return; |
+ |
// Report the media track information to blink. |
for (const auto& track : tracks->tracks()) { |
if (track->type() == MediaTrack::Audio) { |
@@ -832,7 +871,7 @@ void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
blink::WebString::fromUTF8(track->label()), |
blink::WebString::fromUTF8(track->language()), |
/*enabled*/ true); |
- (void)track_id; |
+ demuxer_->OnTrackIdAssigned(track_id, track.get()); |
} else if (track->type() == MediaTrack::Video) { |
auto track_id = client_->addVideoTrack( |
blink::WebString::fromUTF8(track->id()), |
@@ -840,7 +879,7 @@ void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
blink::WebString::fromUTF8(track->label()), |
blink::WebString::fromUTF8(track->language()), |
/*selected*/ true); |
- (void)track_id; |
+ demuxer_->OnTrackIdAssigned(track_id, track.get()); |
} else { |
// Text tracks are not supported through this code path yet. |
NOTREACHED(); |