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

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

Issue 11492003: Encrypted Media: Support Audio Decrypt-Only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolved comments and fixed unittest Created 8 years 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
« media/filters/audio_decoder_selector.cc ('K') | « media/media.gyp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_impl.h" 5 #include "webkit/media/webmediaplayer_impl.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 pending_seek_(false), 145 pending_seek_(false),
146 pending_seek_seconds_(0.0f), 146 pending_seek_seconds_(0.0f),
147 client_(client), 147 client_(client),
148 proxy_(new WebMediaPlayerProxy(main_loop_->message_loop_proxy(), this)), 148 proxy_(new WebMediaPlayerProxy(main_loop_->message_loop_proxy(), this)),
149 delegate_(delegate), 149 delegate_(delegate),
150 media_stream_client_(media_stream_client), 150 media_stream_client_(media_stream_client),
151 media_log_(media_log), 151 media_log_(media_log),
152 accelerated_compositing_reported_(false), 152 accelerated_compositing_reported_(false),
153 incremented_externally_allocated_memory_(false), 153 incremented_externally_allocated_memory_(false),
154 audio_source_provider_(audio_source_provider), 154 audio_source_provider_(audio_source_provider),
155 audio_renderer_sink_(audio_renderer_sink), 155 audio_renderer_sink_(audio_renderer_sink),
ddorwin 2012/12/13 23:09:43 Is there a reason for this member if we will pass
scherkus (not reviewing) 2012/12/13 23:39:07 there is a lot of silliness w.r.t. audio_source_pr
156 is_local_source_(false), 156 is_local_source_(false),
157 supports_save_(true), 157 supports_save_(true),
158 starting_(false) { 158 starting_(false) {
159 media_log_->AddEvent( 159 media_log_->AddEvent(
160 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); 160 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
161 161
162 scoped_refptr<base::MessageLoopProxy> pipeline_message_loop = 162 scoped_refptr<base::MessageLoopProxy> pipeline_message_loop =
163 message_loop_factory_->GetMessageLoop( 163 message_loop_factory_->GetMessageLoop(
164 media::MessageLoopFactory::kPipeline); 164 media::MessageLoopFactory::kPipeline);
165 pipeline_ = new media::Pipeline(pipeline_message_loop, media_log_); 165 pipeline_ = new media::Pipeline(pipeline_message_loop, media_log_);
(...skipping 15 matching lines...) Expand all
181 // Create default video renderer. 181 // Create default video renderer.
182 scoped_refptr<media::VideoRendererBase> video_renderer = 182 scoped_refptr<media::VideoRendererBase> video_renderer =
183 new media::VideoRendererBase( 183 new media::VideoRendererBase(
184 pipeline_message_loop, 184 pipeline_message_loop,
185 base::Bind(&WebMediaPlayerProxy::Repaint, proxy_), 185 base::Bind(&WebMediaPlayerProxy::Repaint, proxy_),
186 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque), 186 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::SetOpaque),
187 true); 187 true);
188 filter_collection_->AddVideoRenderer(video_renderer); 188 filter_collection_->AddVideoRenderer(video_renderer);
189 proxy_->set_frame_provider(video_renderer); 189 proxy_->set_frame_provider(video_renderer);
190 190
191 // Create default audio renderer using the null sink if no sink was provided. 191 media::SetDecryptorReadyCB set_decryptor_ready_cb;
192 if (!audio_renderer_sink) {
193 audio_renderer_sink = new media::NullAudioSink();
194 }
195 filter_collection_->AddAudioRenderer(
196 new media::AudioRendererImpl(audio_renderer_sink));
197
198 if (WebKit::WebRuntimeFeatures::isEncryptedMediaEnabled()) { 192 if (WebKit::WebRuntimeFeatures::isEncryptedMediaEnabled()) {
199 decryptor_.reset(new ProxyDecryptor(message_loop_factory_->GetMessageLoop( 193 decryptor_.reset(new ProxyDecryptor(message_loop_factory_->GetMessageLoop(
200 media::MessageLoopFactory::kPipeline), proxy_.get(), client, frame)); 194 media::MessageLoopFactory::kPipeline), proxy_.get(), client, frame));
195 set_decryptor_ready_cb =
196 base::Bind(&ProxyDecryptor::RegisterDecryptorReadyNotification,
ddorwin 2012/12/13 23:09:43 Name needs to be updated per other CL.
xhwang 2012/12/14 03:16:21 Done.
197 base::Unretained(decryptor_.get()));
201 } 198 }
199
200 // Create default audio renderer using the null sink if no sink was provided.
ddorwin 2012/12/13 23:09:43 This is a change in behavior. Why? OR, how did thi
xhwang 2012/12/14 03:16:21 Please see: https://codereview.chromium.org/115640
201 if (!audio_renderer_sink)
202 audio_renderer_sink = new media::NullAudioSink();
203
204 filter_collection_->AddAudioRenderer(new media::AudioRendererImpl(
205 audio_renderer_sink, set_decryptor_ready_cb));
202 } 206 }
203 207
204 WebMediaPlayerImpl::~WebMediaPlayerImpl() { 208 WebMediaPlayerImpl::~WebMediaPlayerImpl() {
205 DCHECK_EQ(main_loop_, MessageLoop::current()); 209 DCHECK_EQ(main_loop_, MessageLoop::current());
206 Destroy(); 210 Destroy();
207 media_log_->AddEvent( 211 media_log_->AddEvent(
208 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); 212 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED));
209 213
210 if (delegate_) 214 if (delegate_)
211 delegate_->PlayerGone(this); 215 delegate_->PlayerGone(this);
(...skipping 908 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 else if (is_downloading && network_state_ == WebMediaPlayer::NetworkStateIdle) 1124 else if (is_downloading && network_state_ == WebMediaPlayer::NetworkStateIdle)
1121 SetNetworkState(WebMediaPlayer::NetworkStateLoading); 1125 SetNetworkState(WebMediaPlayer::NetworkStateLoading);
1122 media_log_->AddEvent( 1126 media_log_->AddEvent(
1123 media_log_->CreateBooleanEvent( 1127 media_log_->CreateBooleanEvent(
1124 media::MediaLogEvent::NETWORK_ACTIVITY_SET, 1128 media::MediaLogEvent::NETWORK_ACTIVITY_SET,
1125 "is_downloading_data", is_downloading)); 1129 "is_downloading_data", is_downloading));
1126 } 1130 }
1127 1131
1128 void WebMediaPlayerImpl::StartPipeline() { 1132 void WebMediaPlayerImpl::StartPipeline() {
1129 starting_ = true; 1133 starting_ = true;
1134
1130 pipeline_->Start( 1135 pipeline_->Start(
1131 filter_collection_.Pass(), 1136 filter_collection_.Pass(),
1132 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded), 1137 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineEnded),
1133 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError), 1138 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineError),
1134 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineSeek), 1139 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineSeek),
1135 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingState)); 1140 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnPipelineBufferingState));
1136 } 1141 }
1137 1142
1138 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) { 1143 void WebMediaPlayerImpl::SetNetworkState(WebMediaPlayer::NetworkState state) {
1139 DCHECK_EQ(main_loop_, MessageLoop::current()); 1144 DCHECK_EQ(main_loop_, MessageLoop::current());
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 return audio_source_provider_; 1214 return audio_source_provider_;
1210 } 1215 }
1211 1216
1212 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() { 1217 void WebMediaPlayerImpl::IncrementExternallyAllocatedMemory() {
1213 DCHECK_EQ(main_loop_, MessageLoop::current()); 1218 DCHECK_EQ(main_loop_, MessageLoop::current());
1214 incremented_externally_allocated_memory_ = true; 1219 incremented_externally_allocated_memory_ = true;
1215 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory); 1220 v8::V8::AdjustAmountOfExternalAllocatedMemory(kPlayerExtraMemory);
1216 } 1221 }
1217 1222
1218 } // namespace webkit_media 1223 } // namespace webkit_media
OLDNEW
« media/filters/audio_decoder_selector.cc ('K') | « media/media.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698