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

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: rebase 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.cc ('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 b187f468b7e56834c8fd06f1e1190f296ff8078b..240d2b2aa4c7018b3cdc75a66574312d8b451c0d 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));
@@ -989,6 +992,32 @@ 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.
acolwell GONE FROM CHROMIUM 2013/05/15 22:42:36 This needs to be resolved before the final l g t m
Matthew Heaney (Chromium) 2013/05/16 22:05:22 Done.
+
+ 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.
acolwell GONE FROM CHROMIUM 2013/05/15 22:42:36 ditto
Matthew Heaney (Chromium) 2013/05/16 22:05:22 Done.
+ return scoped_ptr<media::TextTrack>(new TextTrackImpl(text_track->client()));
+}
+
#define COMPILE_ASSERT_MATCHING_ENUM(name) \
COMPILE_ASSERT(static_cast<int>(WebKit::WebMediaPlayerClient::name) == \
static_cast<int>(media::Decryptor::k ## name), \
@@ -1084,6 +1113,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.cc ('K') | « webkit/media/webmediaplayer_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698