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

Side by Side Diff: content/renderer/media/texttrack_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: incorporate aaron's comments (10/16) Created 7 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/texttrack_impl.h" 5 #include "content/renderer/media/texttrack_impl.h"
6 6
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.h"
7 #include "content/renderer/media/webinbandtexttrack_impl.h" 9 #include "content/renderer/media/webinbandtexttrack_impl.h"
10 #include "media/base/bind_to_loop.h"
8 #include "third_party/WebKit/public/web/WebInbandTextTrackClient.h" 11 #include "third_party/WebKit/public/web/WebInbandTextTrackClient.h"
9 #include "third_party/WebKit/public/web/WebMediaPlayerClient.h" 12 #include "third_party/WebKit/public/web/WebMediaPlayerClient.h"
10 13
11 namespace content { 14 namespace content {
12 15
13 TextTrackImpl::TextTrackImpl(WebKit::WebMediaPlayerClient* client, 16 TextTrackImpl::TextTrackImpl(
14 WebInbandTextTrackImpl* text_track) 17 const scoped_refptr<base::MessageLoopProxy>& message_loop,
15 : client_(client), text_track_(text_track) { 18 WebKit::WebMediaPlayerClient* client,
19 WebInbandTextTrackImpl* text_track)
acolwell GONE FROM CHROMIUM 2013/10/21 20:10:40 nit: make scoped_ptr<WebInbandTextTrackImpl>
Matthew Heaney (Chromium) 2013/10/23 05:09:01 Done.
20 : message_loop_(message_loop),
21 client_(client),
22 text_track_(text_track) {
16 client_->addTextTrack(text_track_.get()); 23 client_->addTextTrack(text_track_.get());
17 } 24 }
18 25
19 TextTrackImpl::~TextTrackImpl() { 26 TextTrackImpl::~TextTrackImpl() {
20 if (text_track_->client()) 27 message_loop_->PostTask(
21 client_->removeTextTrack(text_track_.get()); 28 FROM_HERE,
29 base::Bind(&TextTrackImpl::OnRemoveTrack,
30 client_,
31 text_track_.release()));
acolwell GONE FROM CHROMIUM 2013/10/21 20:10:40 You need to use base::Passed(&text_track_) here to
Matthew Heaney (Chromium) 2013/10/23 05:09:01 Done.
22 } 32 }
23 33
24 void TextTrackImpl::addWebVTTCue(const base::TimeDelta& start, 34 void TextTrackImpl::addWebVTTCue(const base::TimeDelta& start,
25 const base::TimeDelta& end, 35 const base::TimeDelta& end,
26 const std::string& id, 36 const std::string& id,
27 const std::string& content, 37 const std::string& content,
28 const std::string& settings) { 38 const std::string& settings) {
29 if (WebKit::WebInbandTextTrackClient* client = text_track_->client()) 39 message_loop_->PostTask(
40 FROM_HERE,
41 base::Bind(&TextTrackImpl::OnAddCue,
42 text_track_.get(),
43 start, end,
44 id, content, settings));
45 }
46
47 void TextTrackImpl::OnAddCue(WebInbandTextTrackImpl* text_track,
48 const base::TimeDelta& start,
49 const base::TimeDelta& end,
50 const std::string& id,
51 const std::string& content,
52 const std::string& settings) {
53 if (WebKit::WebInbandTextTrackClient* client = text_track->client()) {
30 client->addWebVTTCue(start.InSecondsF(), 54 client->addWebVTTCue(start.InSecondsF(),
31 end.InSecondsF(), 55 end.InSecondsF(),
32 WebKit::WebString::fromUTF8(id), 56 WebKit::WebString::fromUTF8(id),
33 WebKit::WebString::fromUTF8(content), 57 WebKit::WebString::fromUTF8(content),
34 WebKit::WebString::fromUTF8(settings)); 58 WebKit::WebString::fromUTF8(settings));
59 }
60 }
61
62 void TextTrackImpl::OnRemoveTrack(
63 WebKit::WebMediaPlayerClient* client,
64 WebInbandTextTrackImpl* text_track) {
65 scoped_ptr<WebInbandTextTrackImpl> auto_delete(text_track);
acolwell GONE FROM CHROMIUM 2013/10/21 20:10:40 remove.
Matthew Heaney (Chromium) 2013/10/23 05:09:01 Done.
66
67 if (text_track->client())
68 client->removeTextTrack(text_track);
35 } 69 }
36 70
37 } // namespace content 71 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698