Index: media/filters/null_audio_renderer.cc |
diff --git a/media/filters/null_audio_renderer.cc b/media/filters/null_audio_renderer.cc |
deleted file mode 100644 |
index f7ee27ce4b29aa3872af080418be18c2467ea080..0000000000000000000000000000000000000000 |
--- a/media/filters/null_audio_renderer.cc |
+++ /dev/null |
@@ -1,95 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <algorithm> |
-#include <cmath> |
- |
-#include "base/bind.h" |
-#include "base/logging.h" |
-#include "base/threading/platform_thread.h" |
-#include "media/base/filter_host.h" |
-#include "media/filters/null_audio_renderer.h" |
- |
-namespace media { |
- |
-// How "long" our buffer should be in terms of milliseconds. In OnInitialize |
-// we calculate the size of one second of audio data and use this number to |
-// allocate a buffer to pass to FillBuffer. |
-static const size_t kBufferSizeInMilliseconds = 100; |
- |
-NullAudioRenderer::NullAudioRenderer() |
- : AudioRendererBase(), |
- bytes_per_millisecond_(0), |
- buffer_size_(0), |
- bytes_per_frame_(0), |
- thread_("AudioThread") { |
-} |
- |
-NullAudioRenderer::~NullAudioRenderer() { |
- DCHECK(!thread_.IsRunning()); |
-} |
- |
-void NullAudioRenderer::SetVolume(float volume) { |
- // Do nothing. |
-} |
- |
-bool NullAudioRenderer::OnInitialize(int bits_per_channel, |
- ChannelLayout channel_layout, |
- int sample_rate) { |
- // Calculate our bytes per millisecond value and allocate our buffer. |
- int channels = ChannelLayoutToChannelCount(channel_layout); |
- int bytes_per_channel = bits_per_channel / 8; |
- bytes_per_frame_ = channels * bytes_per_channel; |
- |
- bytes_per_millisecond_ = (bytes_per_frame_ * sample_rate) / |
- base::Time::kMillisecondsPerSecond; |
- |
- buffer_size_ = |
- bytes_per_millisecond_ * kBufferSizeInMilliseconds; |
- |
- buffer_.reset(new uint8[buffer_size_]); |
- DCHECK(buffer_.get()); |
- |
- if (!thread_.Start()) |
- return false; |
- |
- thread_.message_loop()->PostTask(FROM_HERE, base::Bind( |
- &NullAudioRenderer::FillBufferTask, this)); |
- return true; |
-} |
- |
-void NullAudioRenderer::OnStop() { |
- thread_.Stop(); |
-} |
- |
-void NullAudioRenderer::FillBufferTask() { |
- base::TimeDelta delay; |
- |
- // Only consume buffers when actually playing. |
- if (GetPlaybackRate() > 0.0f) { |
- size_t requested_frames = buffer_size_ / bytes_per_frame_; |
- size_t frames = FillBuffer( |
- buffer_.get(), requested_frames, base::TimeDelta()); |
- size_t bytes = frames * bytes_per_frame_; |
- |
- // Calculate our sleep duration, taking playback rate into consideration. |
- delay = base::TimeDelta::FromMilliseconds( |
- bytes / (bytes_per_millisecond_ * GetPlaybackRate())); |
- } else { |
- // If paused, sleep for 10 milliseconds before polling again. |
- delay = base::TimeDelta::FromMilliseconds(10); |
- } |
- |
- // Sleep for at least one millisecond so we don't spin the CPU. |
- MessageLoop::current()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&NullAudioRenderer::FillBufferTask, this), |
- std::max(delay, base::TimeDelta::FromMilliseconds(1))); |
-} |
- |
-void NullAudioRenderer::OnRenderEndOfStream() { |
- SignalEndOfStream(); |
-} |
- |
-} // namespace media |