Chromium Code Reviews| 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() { |