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

Side by Side Diff: content/renderer/media/audio_renderer_impl.cc

Issue 8763010: Replace AudioDecoder::ProduceAudioSamples/ConsumeAudioSamples with read callbacks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: stuff Created 9 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/audio_renderer_impl.h" 5 #include "content/renderer/media/audio_renderer_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 130
131 void AudioRendererImpl::NotifyDataAvailableIfNecessary() { 131 void AudioRendererImpl::NotifyDataAvailableIfNecessary() {
132 if (latency_type_ == kHighLatency) { 132 if (latency_type_ == kHighLatency) {
133 // Post a task to render thread to notify a packet reception. 133 // Post a task to render thread to notify a packet reception.
134 ChildProcess::current()->io_message_loop()->PostTask( 134 ChildProcess::current()->io_message_loop()->PostTask(
135 FROM_HERE, 135 FROM_HERE,
136 base::Bind(&AudioRendererImpl::NotifyPacketReadyTask, this)); 136 base::Bind(&AudioRendererImpl::NotifyPacketReadyTask, this));
137 } 137 }
138 } 138 }
139 139
140 void AudioRendererImpl::ConsumeAudioSamples(
scherkus (not reviewing) 2011/12/07 05:25:12 enal: do you recall why this was needed? I tested
enal 2011/12/15 22:51:26 No idea, it was before my time...
141 scoped_refptr<media::Buffer> buffer_in) {
142 base::AutoLock auto_lock(lock_);
143 if (stopped_)
144 return;
145
146 // TODO(hclam): handle end of stream here.
147
148 // Use the base class to queue the buffer.
149 AudioRendererBase::ConsumeAudioSamples(buffer_in);
150
151 NotifyDataAvailableIfNecessary();
152 }
153
154 void AudioRendererImpl::SetPlaybackRate(float rate) { 140 void AudioRendererImpl::SetPlaybackRate(float rate) {
155 DCHECK_LE(0.0f, rate); 141 DCHECK_LE(0.0f, rate);
156 142
157 base::AutoLock auto_lock(lock_); 143 base::AutoLock auto_lock(lock_);
158 // Handle the case where we stopped due to IO message loop dying. 144 // Handle the case where we stopped due to IO message loop dying.
159 if (stopped_) { 145 if (stopped_) {
160 AudioRendererBase::SetPlaybackRate(rate); 146 AudioRendererBase::SetPlaybackRate(rate);
161 return; 147 return;
162 } 148 }
163 149
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 void AudioRendererImpl::OnRequestPacket(AudioBuffersState buffers_state) { 278 void AudioRendererImpl::OnRequestPacket(AudioBuffersState buffers_state) {
293 DCHECK(MessageLoop::current() == ChildProcess::current()->io_message_loop()); 279 DCHECK(MessageLoop::current() == ChildProcess::current()->io_message_loop());
294 DCHECK_EQ(kHighLatency, latency_type_); 280 DCHECK_EQ(kHighLatency, latency_type_);
295 { 281 {
296 base::AutoLock auto_lock(lock_); 282 base::AutoLock auto_lock(lock_);
297 DCHECK(!pending_request_); 283 DCHECK(!pending_request_);
298 pending_request_ = true; 284 pending_request_ = true;
299 request_buffers_state_ = buffers_state; 285 request_buffers_state_ = buffers_state;
300 } 286 }
301 287
302 // Try to fill in the fulfill the packet request. 288 // Try to fulfill the packet request.
303 NotifyPacketReadyTask(); 289 NotifyPacketReadyTask();
304 } 290 }
305 291
306 void AudioRendererImpl::OnStateChanged(AudioStreamState state) { 292 void AudioRendererImpl::OnStateChanged(AudioStreamState state) {
307 DCHECK(MessageLoop::current() == ChildProcess::current()->io_message_loop()); 293 DCHECK(MessageLoop::current() == ChildProcess::current()->io_message_loop());
308 294
309 base::AutoLock auto_lock(lock_); 295 base::AutoLock auto_lock(lock_);
310 if (stopped_) 296 if (stopped_)
311 return; 297 return;
312 298
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 media::SetActualDataSizeInBytes(shared_memory_.get(), 504 media::SetActualDataSizeInBytes(shared_memory_.get(),
519 shared_memory_size_, 505 shared_memory_size_,
520 size); 506 size);
521 UpdateEarliestEndTime(size, request_delay, time_now); 507 UpdateEarliestEndTime(size, request_delay, time_now);
522 } 508 }
523 } 509 }
524 510
525 void AudioRendererImpl::Send(IPC::Message* message) { 511 void AudioRendererImpl::Send(IPC::Message* message) {
526 filter_->Send(message); 512 filter_->Send(message);
527 } 513 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698