Index: media/blink/webmediaplayer_impl.cc |
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
index b0affc0dcbd287fe4ec1acd2aa91dbb40ec4a948..8039a9471ef9bfd664b01533a1402f21caf36dd8 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> |
@@ -559,6 +560,45 @@ 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); |
wolenetz
2016/04/08 23:32:31
nit: I prefer CHECK here. Perhaps also DCHECK that
servolk
2016/04/08 23:47:20
Done.
|
+ enabledAudioStreams.push_back(s); |
+ trackIdsStr << trackId << " "; |
+ } |
+ MEDIA_LOG(INFO, media_log_) |
+ << "WebMediaPlayerImpl::enabledAudioTracksChanged enabledTrackIds=" |
+ << 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) { |
+ selectedVideoStream = demuxer_->GetDemuxerStreamByTrackId(*selectedTrackId); |
+ 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.
|
+ MEDIA_LOG(INFO, media_log_) |
+ << "WebMediaPlayerImpl::selectedVideoTrackChanged selectedTrackId=" |
+ << *selectedTrackId << " selectedVideoStream=" << selectedVideoStream; |
+ } else { |
+ MEDIA_LOG(INFO, media_log_) << "WebMediaPlayerImpl::" |
+ "selectedVideoTrackChanged " |
+ "selectedTrackId=none"; |
+ } |
+ pipeline_.OnSelectedVideoStreamChanged(selectedVideoStream); |
+} |
+ |
blink::WebSize WebMediaPlayerImpl::naturalSize() const { |
DCHECK(main_task_runner_->BelongsToCurrentThread()); |
@@ -822,6 +862,7 @@ void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
DCHECK(!chunk_demuxer_); |
// Report the media track information to blink. |
+ std::vector<blink::WebMediaPlayer::TrackId> blinkTrackIds; |
for (const auto& track : tracks->tracks()) { |
if (track->type() == MediaTrack::Audio) { |
auto track_id = client_->addAudioTrack( |
@@ -830,7 +871,7 @@ void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
blink::WebString::fromUTF8(track->label()), |
blink::WebString::fromUTF8(track->language()), |
/*enabled*/ true); |
- (void)track_id; |
+ blinkTrackIds.push_back(track_id); |
} else if (track->type() == MediaTrack::Video) { |
auto track_id = client_->addVideoTrack( |
blink::WebString::fromUTF8(track->id()), |
@@ -838,12 +879,14 @@ void WebMediaPlayerImpl::OnFFmpegMediaTracksUpdated( |
blink::WebString::fromUTF8(track->label()), |
blink::WebString::fromUTF8(track->language()), |
/*selected*/ true); |
- (void)track_id; |
+ blinkTrackIds.push_back(track_id); |
} else { |
// Text tracks are not supported through this code path yet. |
NOTREACHED(); |
} |
} |
+ |
+ demuxer_->OnTrackIdsAssigned(*tracks.get(), blinkTrackIds); |
} |
void WebMediaPlayerImpl::OnWaitingForDecryptionKey() { |