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

Unified Diff: webkit/media/webmediaplayer_impl.cc

Issue 13419002: Media Source dispatches inband text tracks (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: incorporated aaron's comments Created 7 years, 7 months 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
« webkit/media/texttrack_impl.h ('K') | « webkit/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/media/webmediaplayer_impl.cc
diff --git a/webkit/media/webmediaplayer_impl.cc b/webkit/media/webmediaplayer_impl.cc
index 41fd0b36a2c8f44c9df00de5342523c633d2575a..8d41cdcbcf995726830f334fa05ef1573cd864de 100644
--- a/webkit/media/webmediaplayer_impl.cc
+++ b/webkit/media/webmediaplayer_impl.cc
@@ -45,7 +45,9 @@
#include "v8/include/v8.h"
#include "webkit/compositor_bindings/web_layer_impl.h"
#include "webkit/media/buffered_data_source.h"
+#include "webkit/media/texttrack_impl.h"
#include "webkit/media/webaudiosourceprovider_impl.h"
+#include "webkit/media/webinbandtexttrack_impl.h"
#include "webkit/media/webmediaplayer_delegate.h"
#include "webkit/media/webmediaplayer_params.h"
#include "webkit/media/webmediaplayer_util.h"
@@ -146,7 +148,8 @@ WebMediaPlayerImpl::WebMediaPlayerImpl(
chunk_demuxer_(NULL),
pending_repaint_(false),
pending_size_change_(false),
- video_frame_provider_client_(NULL) {
+ video_frame_provider_client_(NULL),
+ text_track_index_(0) {
media_log_->AddEvent(
media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
@@ -988,6 +991,34 @@ void WebMediaPlayerImpl::OnNeedKey(const std::string& key_system,
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);
+
+ // TODO(matthewjheaney): resolve lifetime issues for text_track_.
+ // Note that the text track object is adopted by its client, and so
+ // it does get destroyed during teardown of the tracks, and
+ // therefore there's no memory leak. However, there is the issue of
+ // lifetime, since we share a pointer to this text track object with
+ // its (owning) client.
+
+ WebInbandTextTrackImpl* const text_track =
+ new WebInbandTextTrackImpl(webkind, weblabel, weblanguage,
+ text_track_index_++);
+ GetClient()->addTextTrack(text_track);
+
+ // TODO(matthewjheaney): give text_cb ownership of text_track.
+ // This means webkit will not adopt text_track.
+ TextTrackImpl* const text_cb = new TextTrackImpl(text_track->client());
acolwell GONE FROM CHROMIUM 2013/05/10 18:41:39 nit: Just inline this below.
Matthew Heaney (Chromium) 2013/05/11 07:29:13 Done.
+
+ return scoped_ptr<media::TextTrack>(text_cb);
+}
+
#define COMPILE_ASSERT_MATCHING_ENUM(name) \
COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayerClient::name) == \
static_cast<int>(media::Decryptor::k ## name), \
@@ -1083,6 +1114,7 @@ void WebMediaPlayerImpl::StartPipeline(WebKit::WebMediaSource* media_source) {
BIND_TO_RENDER_LOOP_1(&WebMediaPlayerImpl::OnDemuxerOpened,
base::Passed(&ms)),
BIND_TO_RENDER_LOOP_2(&WebMediaPlayerImpl::OnNeedKey, "", ""),
+ base::Bind(&WebMediaPlayerImpl::OnTextTrack, base::Unretained(this)),
base::Bind(&LogMediaSourceError, media_log_));
demuxer_.reset(chunk_demuxer_);
« webkit/media/texttrack_impl.h ('K') | « webkit/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698