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

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

Issue 174584: Make audio and video in sync while playback rate != 1.0... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 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) 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
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 }
OLDNEW
« no previous file with comments | « no previous file | media/filters/audio_renderer_impl.cc » ('j') | media/filters/audio_renderer_impl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698