Index: media/filters/audio_renderer_algorithm_base.cc |
=================================================================== |
--- media/filters/audio_renderer_algorithm_base.cc (revision 22189) |
+++ media/filters/audio_renderer_algorithm_base.cc (working copy) |
@@ -11,7 +11,7 @@ |
// The size in bytes we try to maintain for the |queue_|. Previous usage |
// maintained a deque of 16 Buffers, each of size 4Kb. This worked well, so we |
// maintain this number of bytes (16 * 4096). |
-const size_t kDefaultMaxQueueSizeInBytes = 65536; |
+const size_t kDefaultMinQueueSizeInBytes = 65536; |
AudioRendererAlgorithmBase::AudioRendererAlgorithmBase() |
: channels_(0), |
@@ -43,9 +43,6 @@ |
request_read_callback_.reset(callback); |
set_playback_rate(initial_playback_rate); |
- |
- // Do the initial read. |
- request_read_callback_->Run(); |
} |
void AudioRendererAlgorithmBase::FlushBuffers() { |
@@ -55,7 +52,7 @@ |
} |
base::TimeDelta AudioRendererAlgorithmBase::GetTime() { |
- return queue_.GetTime(1.0 / (channels() * sample_rate() * sample_bytes())); |
+ return queue_.GetTime(); |
} |
void AudioRendererAlgorithmBase::EnqueueBuffer(Buffer* buffer_in) { |
@@ -64,7 +61,7 @@ |
queue_.Enqueue(buffer_in); |
// If we still don't have enough data, request more. |
- if (queue_.SizeInBytes() < kDefaultMaxQueueSizeInBytes) |
+ if (!IsQueueFull()) |
request_read_callback_->Run(); |
} |
@@ -77,21 +74,25 @@ |
playback_rate_ = new_rate; |
} |
+bool AudioRendererAlgorithmBase::IsQueueEmpty() { |
+ return queue_.IsEmpty(); |
+} |
+ |
+bool AudioRendererAlgorithmBase::IsQueueFull() { |
+ return (queue_.SizeInBytes() >= kDefaultMinQueueSizeInBytes); |
+} |
+ |
void AudioRendererAlgorithmBase::AdvanceInputPosition(size_t bytes) { |
queue_.Consume(bytes); |
- if (queue_.SizeInBytes() < kDefaultMaxQueueSizeInBytes) |
- request_read_callback_->Run(); |
+ if (!IsQueueFull()) |
+ request_read_callback_->Run(); |
} |
size_t AudioRendererAlgorithmBase::CopyFromInput(uint8* dest, size_t bytes) { |
return queue_.Copy(dest, bytes); |
} |
-bool AudioRendererAlgorithmBase::IsQueueEmpty() { |
- return queue_.IsEmpty(); |
-} |
- |
size_t AudioRendererAlgorithmBase::QueueSize() { |
return queue_.SizeInBytes(); |
} |