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

Unified Diff: content/renderer/media/webmediaplayer_impl.cc

Issue 23702007: Render inband text tracks in the media pipeline (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix compile errors 11/21 #6 Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/webmediaplayer_impl.h ('k') | media/base/demuxer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/webmediaplayer_impl.cc
diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc
index 989d32261a97ee0876d478a7ed42e0b389dc4c27..60bd397b501974dd6c9e7e36c77662e022dd0b03 100644
--- a/content/renderer/media/webmediaplayer_impl.cc
+++ b/content/renderer/media/webmediaplayer_impl.cc
@@ -38,6 +38,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"
@@ -993,21 +994,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 blink::WebString weblabel = blink::WebString::fromUTF8(label);
- const blink::WebString weblanguage = blink::WebString::fromUTF8(language);
+void WebMediaPlayerImpl::OnAddTextTrack(
+ const media::TextTrackConfig& config,
+ const media::AddTextTrackDoneCB& done_cb) {
+ DCHECK(main_loop_->BelongsToCurrentThread());
+
+ const WebInbandTextTrackImpl::Kind web_kind =
+ static_cast<WebInbandTextTrackImpl::Kind>(config.kind());
+ const blink::WebString web_label =
+ blink::WebString::fromUTF8(config.label());
+ const blink::WebString web_language =
+ blink::WebString::fromUTF8(config.language());
+
+ scoped_ptr<WebInbandTextTrackImpl> web_inband_text_track(
+ 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.Pass()));
- return scoped_ptr<media::TextTrack>(new TextTrackImpl(GetClient(),
- text_track));
+ done_cb.Run(text_track.Pass());
}
void WebMediaPlayerImpl::OnKeyError(const std::string& session_id,
@@ -1091,17 +1097,9 @@ void WebMediaPlayerImpl::StartPipeline() {
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,
base::Bind(&LogMediaSourceError, media_log_));
demuxer_.reset(chunk_demuxer_);
@@ -1169,6 +1167,15 @@ void WebMediaPlayerImpl::StartPipeline() {
true));
filter_collection->SetVideoRenderer(video_renderer.Pass());
+ if (cmd_line->HasSwitch(switches::kEnableInbandTextTracks)) {
+ scoped_ptr<media::TextRenderer> text_renderer(
+ new media::TextRenderer(
+ media_loop_,
+ BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnAddTextTrack)));
+
+ filter_collection->SetTextRenderer(text_renderer.Pass());
+ }
+
// ... and we're ready to go!
starting_ = true;
pipeline_->Start(
« no previous file with comments | « content/renderer/media/webmediaplayer_impl.h ('k') | media/base/demuxer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698