Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this |
| 2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the |
| 3 // LICENSE file. | 3 // LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/common/render_messages.h" | 5 #include "chrome/common/render_messages.h" |
| 6 #include "chrome/renderer/audio_message_filter.h" | 6 #include "chrome/renderer/audio_message_filter.h" |
| 7 #include "chrome/renderer/media/audio_renderer_impl.h" | 7 #include "chrome/renderer/media/audio_renderer_impl.h" |
| 8 #include "chrome/renderer/render_view.h" | 8 #include "chrome/renderer/render_view.h" |
| 9 #include "chrome/renderer/render_thread.h" | 9 #include "chrome/renderer/render_thread.h" |
| 10 #include "media/base/filter_host.h" | 10 #include "media/base/filter_host.h" |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 284 base::TimeDelta receive_latency = current_time - request_timestamp_; | 284 base::TimeDelta receive_latency = current_time - request_timestamp_; |
| 285 | 285 |
| 286 // If the receive latency is too much it may offset all the delay. | 286 // If the receive latency is too much it may offset all the delay. |
| 287 if (receive_latency >= request_delay) { | 287 if (receive_latency >= request_delay) { |
| 288 request_delay = base::TimeDelta(); | 288 request_delay = base::TimeDelta(); |
| 289 } else { | 289 } else { |
| 290 request_delay -= receive_latency; | 290 request_delay -= receive_latency; |
| 291 } | 291 } |
| 292 } | 292 } |
| 293 | 293 |
| 294 // Finally we need to adjust the delay according to playback rate. | |
| 295 if (GetPlaybackRate() != 1.0f) { | |
|
fbarchard
2009/08/27 03:21:18
shouldnt you do this code within the
if (current_
| |
| 296 request_delay = base::TimeDelta::FromMicroseconds( | |
| 297 static_cast<int64>(request_delay.InMicroseconds() * | |
|
scherkus (not reviewing)
2009/08/26 23:59:00
you may want to be explicit in how the value is ro
| |
| 298 GetPlaybackRate())); | |
| 299 } | |
| 300 | |
| 294 size_t filled = FillBuffer(static_cast<uint8*>(shared_memory_->memory()), | 301 size_t filled = FillBuffer(static_cast<uint8*>(shared_memory_->memory()), |
| 295 shared_memory_size_, | 302 shared_memory_size_, |
| 296 request_delay); | 303 request_delay); |
| 297 // TODO(hclam): we should try to fill in the buffer as much as possible. | 304 // TODO(hclam): we should try to fill in the buffer as much as possible. |
| 298 if (filled > 0) { | 305 if (filled > 0) { |
| 299 pending_request_ = false; | 306 pending_request_ = false; |
| 300 request_delay_ = base::TimeDelta(); | 307 request_delay_ = base::TimeDelta(); |
| 301 request_timestamp_ = base::Time(); | 308 request_timestamp_ = base::Time(); |
| 302 // Then tell browser process we are done filling into the buffer. | 309 // Then tell browser process we are done filling into the buffer. |
| 303 filter_->Send( | 310 filter_->Send( |
| 304 new ViewHostMsg_NotifyAudioPacketReady(0, stream_id_, filled)); | 311 new ViewHostMsg_NotifyAudioPacketReady(0, stream_id_, filled)); |
| 305 | 312 |
| 306 if (prerolling_) { | 313 if (prerolling_) { |
| 307 // We have completed prerolling. | 314 // We have completed prerolling. |
| 308 if (filled > preroll_bytes_) { | 315 if (filled > preroll_bytes_) { |
| 309 prerolling_ = false; | 316 prerolling_ = false; |
| 310 preroll_bytes_ = 0; | 317 preroll_bytes_ = 0; |
| 311 filter_->Send(new ViewHostMsg_PlayAudioStream(0, stream_id_)); | 318 filter_->Send(new ViewHostMsg_PlayAudioStream(0, stream_id_)); |
| 312 } else { | 319 } else { |
| 313 preroll_bytes_ -= filled; | 320 preroll_bytes_ -= filled; |
| 314 } | 321 } |
| 315 } | 322 } |
| 316 } | 323 } |
| 317 } | 324 } |
| 318 } | 325 } |
| OLD | NEW |