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

Side by Side Diff: webkit/media/webmediaplayer_proxy.cc

Issue 10905236: Move ChunkDemuxer handling from WMPProxy to WMPI and remove ChunkDemuxerClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix ffmpeg_regression_tests Created 8 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "webkit/media/webmediaplayer_proxy.h" 5 #include "webkit/media/webmediaplayer_proxy.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop_proxy.h" 9 #include "base/message_loop_proxy.h"
10 #include "media/base/pipeline_status.h" 10 #include "media/base/pipeline_status.h"
11 #include "media/filters/chunk_demuxer.h"
12 #include "media/filters/video_renderer_base.h" 11 #include "media/filters/video_renderer_base.h"
13 #include "webkit/media/webmediaplayer_impl.h" 12 #include "webkit/media/webmediaplayer_impl.h"
14 13
15 using media::PipelineStatus; 14 using media::PipelineStatus;
16 15
17 namespace webkit_media { 16 namespace webkit_media {
18 17
19 // Limits the maximum outstanding repaints posted on render thread. 18 // Limits the maximum outstanding repaints posted on render thread.
20 // This number of 50 is a guess, it does not take too much memory on the task 19 // This number of 50 is a guess, it does not take too much memory on the task
21 // queue but gives up a pretty good latency on repaint. 20 // queue but gives up a pretty good latency on repaint.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 if (frame_provider_) 100 if (frame_provider_)
102 frame_provider_->GetCurrentFrame(frame_out); 101 frame_provider_->GetCurrentFrame(frame_out);
103 } 102 }
104 103
105 void WebMediaPlayerProxy::PutCurrentFrame( 104 void WebMediaPlayerProxy::PutCurrentFrame(
106 scoped_refptr<media::VideoFrame> frame) { 105 scoped_refptr<media::VideoFrame> frame) {
107 if (frame_provider_) 106 if (frame_provider_)
108 frame_provider_->PutCurrentFrame(frame); 107 frame_provider_->PutCurrentFrame(frame);
109 } 108 }
110 109
111 void WebMediaPlayerProxy::DemuxerOpened(media::ChunkDemuxer* demuxer) {
112 render_loop_->PostTask(FROM_HERE, base::Bind(
113 &WebMediaPlayerProxy::DemuxerOpenedTask, this,
114 scoped_refptr<media::ChunkDemuxer>(demuxer)));
115 }
116
117 void WebMediaPlayerProxy::DemuxerClosed() {
118 render_loop_->PostTask(FROM_HERE, base::Bind(
119 &WebMediaPlayerProxy::DemuxerClosedTask, this));
120 }
121
122 void WebMediaPlayerProxy::DemuxerNeedKey(scoped_array<uint8> init_data,
123 int init_data_size) {
124 render_loop_->PostTask(FROM_HERE, base::Bind(
125 &WebMediaPlayerProxy::NeedKeyTask, this, "", "",
126 base::Passed(&init_data), init_data_size));
127 }
128
129 void WebMediaPlayerProxy::DemuxerStartWaitingForSeek() {
130 if (chunk_demuxer_.get())
131 chunk_demuxer_->StartWaitingForSeek();
132 }
133
134 void WebMediaPlayerProxy::DemuxerCancelPendingSeek() {
135 if (chunk_demuxer_.get())
136 chunk_demuxer_->CancelPendingSeek();
137 }
138
139 media::ChunkDemuxer::Status WebMediaPlayerProxy::DemuxerAddId(
140 const std::string& id,
141 const std::string& type,
142 std::vector<std::string>& codecs) {
143 return chunk_demuxer_->AddId(id, type, codecs);
144 }
145
146 bool WebMediaPlayerProxy::DemuxerSetTimestampOffset(
147 const std::string& id, base::TimeDelta offset) {
148 return chunk_demuxer_->SetTimestampOffset(id, offset);
149 }
150
151 void WebMediaPlayerProxy::DemuxerRemoveId(const std::string& id) {
152 chunk_demuxer_->RemoveId(id);
153 }
154
155 media::Ranges<base::TimeDelta> WebMediaPlayerProxy::DemuxerBufferedRange(
156 const std::string& id) {
157 return chunk_demuxer_->GetBufferedRanges(id);
158 }
159
160 bool WebMediaPlayerProxy::DemuxerAppend(const std::string& id,
161 const uint8* data,
162 size_t length) {
163 return chunk_demuxer_->AppendData(id, data, length);
164 }
165
166 void WebMediaPlayerProxy::DemuxerAbort(const std::string& id) {
167 chunk_demuxer_->Abort(id);
168 }
169
170 void WebMediaPlayerProxy::DemuxerSetDuration(base::TimeDelta duration) {
171 chunk_demuxer_->SetDuration(duration);
172 }
173
174 void WebMediaPlayerProxy::DemuxerEndOfStream(media::PipelineStatus status) {
175 chunk_demuxer_->EndOfStream(status);
176 }
177
178 void WebMediaPlayerProxy::DemuxerShutdown() {
179 if (chunk_demuxer_.get())
180 chunk_demuxer_->Shutdown();
181 }
182
183 void WebMediaPlayerProxy::DemuxerOpenedTask(
184 const scoped_refptr<media::ChunkDemuxer>& demuxer) {
185 DCHECK(render_loop_->BelongsToCurrentThread());
186 chunk_demuxer_ = demuxer;
187 if (webmediaplayer_)
188 webmediaplayer_->OnDemuxerOpened();
189 }
190
191 void WebMediaPlayerProxy::DemuxerClosedTask() {
192 chunk_demuxer_ = NULL;
193 }
194 110
195 void WebMediaPlayerProxy::KeyAdded(const std::string& key_system, 111 void WebMediaPlayerProxy::KeyAdded(const std::string& key_system,
196 const std::string& session_id) { 112 const std::string& session_id) {
197 render_loop_->PostTask(FROM_HERE, base::Bind( 113 render_loop_->PostTask(FROM_HERE, base::Bind(
198 &WebMediaPlayerProxy::KeyAddedTask, this, key_system, session_id)); 114 &WebMediaPlayerProxy::KeyAddedTask, this, key_system, session_id));
199 } 115 }
200 116
201 void WebMediaPlayerProxy::KeyError(const std::string& key_system, 117 void WebMediaPlayerProxy::KeyError(const std::string& key_system,
202 const std::string& session_id, 118 const std::string& session_id,
203 media::Decryptor::KeyError error_code, 119 media::Decryptor::KeyError error_code,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 const std::string& session_id, 174 const std::string& session_id,
259 scoped_array<uint8> init_data, 175 scoped_array<uint8> init_data,
260 int init_data_size) { 176 int init_data_size) {
261 DCHECK(render_loop_->BelongsToCurrentThread()); 177 DCHECK(render_loop_->BelongsToCurrentThread());
262 if (webmediaplayer_) 178 if (webmediaplayer_)
263 webmediaplayer_->OnNeedKey(key_system, session_id, 179 webmediaplayer_->OnNeedKey(key_system, session_id,
264 init_data.Pass(), init_data_size); 180 init_data.Pass(), init_data_size);
265 } 181 }
266 182
267 } // namespace webkit_media 183 } // namespace webkit_media
OLDNEW
« webkit/media/webmediaplayer_impl.cc ('K') | « webkit/media/webmediaplayer_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698