Chromium Code Reviews| Index: content/renderer/media/webmediaplayer_impl.cc |
| diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc |
| index 95af968496d72dd912d602a20dd5c9f901925d0e..7c6a53a0cf9199900da413a1d590845bbc1e7659 100644 |
| --- a/content/renderer/media/webmediaplayer_impl.cc |
| +++ b/content/renderer/media/webmediaplayer_impl.cc |
| @@ -37,6 +37,7 @@ |
| #include "media/base/media_log.h" |
| #include "media/base/media_switches.h" |
| #include "media/base/pipeline.h" |
| +#include "media/base/text_renderer.h" |
| #include "media/base/video_frame.h" |
| #include "media/filters/audio_renderer_impl.h" |
| #include "media/filters/chunk_demuxer.h" |
| @@ -943,21 +944,26 @@ void WebMediaPlayerImpl::OnNeedKey(const std::string& type, |
| init_data.size()); |
| } |
| -scoped_ptr<media::TextTrack> |
| -WebMediaPlayerImpl::OnTextTrack(media::TextKind kind, |
| - const std::string& label, |
| - const std::string& language) { |
| - typedef WebInbandTextTrackImpl::Kind webkind_t; |
| - const webkind_t webkind = static_cast<webkind_t>(kind); |
| - const WebKit::WebString weblabel = WebKit::WebString::fromUTF8(label); |
| - const WebKit::WebString weblanguage = WebKit::WebString::fromUTF8(language); |
| +void WebMediaPlayerImpl::OnAddTextTrack( |
| + media::TextKind kind, |
| + const std::string& label, |
| + const std::string& language, |
| + const media::AddTextTrackDoneCB& done_cb) { |
| + DCHECK(main_loop_->BelongsToCurrentThread()); |
| + |
| + const WebInbandTextTrackImpl::Kind web_kind = |
| + static_cast<WebInbandTextTrackImpl::Kind>(kind); |
| + const WebKit::WebString web_label = WebKit::WebString::fromUTF8(label); |
| + const WebKit::WebString web_language = WebKit::WebString::fromUTF8(language); |
| + |
| + WebInbandTextTrackImpl* const web_inband_text_track = |
|
acolwell GONE FROM CHROMIUM
2013/10/21 20:10:40
nit: use scoped_ptr here.
Matthew Heaney (Chromium)
2013/10/23 05:09:01
Done.
|
| + new WebInbandTextTrackImpl(web_kind, web_label, web_language, |
| + text_track_index_++); |
| - WebInbandTextTrackImpl* const text_track = |
| - new WebInbandTextTrackImpl(webkind, weblabel, weblanguage, |
| - text_track_index_++); |
| + scoped_ptr<media::TextTrack> text_track( |
| + new TextTrackImpl(main_loop_, GetClient(), web_inband_text_track)); |
| - return scoped_ptr<media::TextTrack>(new TextTrackImpl(GetClient(), |
| - text_track)); |
| + done_cb.Run(text_track.Pass()); |
| } |
| void WebMediaPlayerImpl::OnKeyError(const std::string& session_id, |
| @@ -1028,6 +1034,9 @@ void WebMediaPlayerImpl::StartPipeline() { |
| UMA_HISTOGRAM_BOOLEAN("Media.MSE.Playback", |
| (load_type_ == LoadTypeMediaSource)); |
| + const bool enable_inband_text_tracks = |
| + cmd_line->HasSwitch(switches::kEnableInbandTextTracks); |
| + |
| // Figure out which demuxer to use. |
| if (load_type_ != LoadTypeMediaSource) { |
| DCHECK(!chunk_demuxer_); |
| @@ -1036,22 +1045,16 @@ void WebMediaPlayerImpl::StartPipeline() { |
| demuxer_.reset(new media::FFmpegDemuxer( |
| media_loop_, data_source_.get(), |
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNeedKey), |
| + enable_inband_text_tracks, |
| media_log_)); |
| } else { |
| DCHECK(!chunk_demuxer_); |
| DCHECK(!data_source_); |
| - media::AddTextTrackCB add_text_track_cb; |
| - |
| - if (cmd_line->HasSwitch(switches::kEnableInbandTextTracks)) { |
| - add_text_track_cb = |
| - base::Bind(&WebMediaPlayerImpl::OnTextTrack, base::Unretained(this)); |
| - } |
| - |
| chunk_demuxer_ = new media::ChunkDemuxer( |
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDemuxerOpened), |
| BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNeedKey), |
| - add_text_track_cb, |
| + enable_inband_text_tracks, |
| base::Bind(&LogMediaSourceError, media_log_)); |
| demuxer_.reset(chunk_demuxer_); |
| @@ -1121,6 +1124,18 @@ void WebMediaPlayerImpl::StartPipeline() { |
| true)); |
| filter_collection->SetVideoRenderer(video_renderer.Pass()); |
| + if (enable_inband_text_tracks) { |
| + media::AddTextTrackCB add_text_track_cb = |
| + BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack); |
|
acolwell GONE FROM CHROMIUM
2013/10/21 20:10:40
nit: Inline below.
Matthew Heaney (Chromium)
2013/10/23 05:09:01
Done.
|
| + |
| + scoped_ptr<media::TextRenderer> text_renderer( |
| + new media::TextRenderer( |
| + media_loop_, |
| + add_text_track_cb)); |
| + |
| + filter_collection->SetTextRenderer(text_renderer.Pass()); |
| + } |
| + |
| // ... and we're ready to go! |
| starting_ = true; |
| pipeline_->Start( |