| Index: content/renderer/media/webaudiosourceprovider_impl.cc | 
| diff --git a/content/renderer/media/webaudiosourceprovider_impl.cc b/content/renderer/media/webaudiosourceprovider_impl.cc | 
| deleted file mode 100644 | 
| index 4d878ce4ba75445f6099ca4039ba0ef3f5aa0e9d..0000000000000000000000000000000000000000 | 
| --- a/content/renderer/media/webaudiosourceprovider_impl.cc | 
| +++ /dev/null | 
| @@ -1,189 +0,0 @@ | 
| -// Copyright 2013 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 "content/renderer/media/webaudiosourceprovider_impl.h" | 
| - | 
| -#include <vector> | 
| - | 
| -#include "base/bind.h" | 
| -#include "base/callback_helpers.h" | 
| -#include "base/logging.h" | 
| -#include "media/base/bind_to_current_loop.h" | 
| -#include "third_party/WebKit/public/platform/WebAudioSourceProviderClient.h" | 
| - | 
| -using blink::WebVector; | 
| - | 
| -namespace content { | 
| - | 
| -namespace { | 
| - | 
| -// Simple helper class for Try() locks.  Lock is Try()'d on construction and | 
| -// must be checked via the locked() attribute.  If acquisition was successful | 
| -// the lock will be released upon destruction. | 
| -// TODO(dalecurtis): This should probably move to base/ if others start using | 
| -// this pattern. | 
| -class AutoTryLock { | 
| - public: | 
| -  explicit AutoTryLock(base::Lock& lock) | 
| -      : lock_(lock), | 
| -        acquired_(lock_.Try()) {} | 
| - | 
| -  bool locked() const { return acquired_; } | 
| - | 
| -  ~AutoTryLock() { | 
| -    if (acquired_) { | 
| -      lock_.AssertAcquired(); | 
| -      lock_.Release(); | 
| -    } | 
| -  } | 
| - | 
| - private: | 
| -  base::Lock& lock_; | 
| -  const bool acquired_; | 
| -  DISALLOW_COPY_AND_ASSIGN(AutoTryLock); | 
| -}; | 
| - | 
| -}  // namespace | 
| - | 
| -WebAudioSourceProviderImpl::WebAudioSourceProviderImpl( | 
| -    const scoped_refptr<media::AudioRendererSink>& sink) | 
| -    : channels_(0), | 
| -      sample_rate_(0), | 
| -      volume_(1.0), | 
| -      state_(kStopped), | 
| -      renderer_(NULL), | 
| -      client_(NULL), | 
| -      sink_(sink), | 
| -      weak_factory_(this) {} | 
| - | 
| -WebAudioSourceProviderImpl::~WebAudioSourceProviderImpl() { | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::setClient( | 
| -    blink::WebAudioSourceProviderClient* client) { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  if (client && client != client_) { | 
| -    // Detach the audio renderer from normal playback. | 
| -    sink_->Stop(); | 
| - | 
| -    // The client will now take control by calling provideInput() periodically. | 
| -    client_ = client; | 
| - | 
| -    set_format_cb_ = media::BindToCurrentLoop(base::Bind( | 
| -        &WebAudioSourceProviderImpl::OnSetFormat, weak_factory_.GetWeakPtr())); | 
| - | 
| -    // If |renderer_| is set, then run |set_format_cb_| to send |client_| | 
| -    // the current format info. If |renderer_| is not set, then |set_format_cb_| | 
| -    // will get called when Initialize() is called. | 
| -    // Note: Always using |set_format_cb_| ensures we have the same | 
| -    // locking order when calling into |client_|. | 
| -    if (renderer_) | 
| -      base::ResetAndReturn(&set_format_cb_).Run(); | 
| -  } else if (!client && client_) { | 
| -    // Restore normal playback. | 
| -    client_ = NULL; | 
| -    sink_->SetVolume(volume_); | 
| -    if (state_ >= kStarted) | 
| -      sink_->Start(); | 
| -    if (state_ >= kPlaying) | 
| -      sink_->Play(); | 
| -  } | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::provideInput( | 
| -    const WebVector<float*>& audio_data, size_t number_of_frames) { | 
| -  if (!bus_wrapper_ || | 
| -      static_cast<size_t>(bus_wrapper_->channels()) != audio_data.size()) { | 
| -    bus_wrapper_ = media::AudioBus::CreateWrapper(audio_data.size()); | 
| -  } | 
| - | 
| -  bus_wrapper_->set_frames(number_of_frames); | 
| -  for (size_t i = 0; i < audio_data.size(); ++i) | 
| -    bus_wrapper_->SetChannelData(i, audio_data[i]); | 
| - | 
| -  // Use a try lock to avoid contention in the real-time audio thread. | 
| -  AutoTryLock auto_try_lock(sink_lock_); | 
| -  if (!auto_try_lock.locked() || state_ != kPlaying) { | 
| -    // Provide silence if we failed to acquire the lock or the source is not | 
| -    // running. | 
| -    bus_wrapper_->Zero(); | 
| -    return; | 
| -  } | 
| - | 
| -  DCHECK(renderer_); | 
| -  DCHECK(client_); | 
| -  DCHECK_EQ(channels_, bus_wrapper_->channels()); | 
| -  const size_t frames = renderer_->Render(bus_wrapper_.get(), 0); | 
| -  if (frames < number_of_frames) | 
| -    bus_wrapper_->ZeroFramesPartial(frames, number_of_frames - frames); | 
| -  bus_wrapper_->Scale(volume_); | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::Start() { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  DCHECK_EQ(state_, kStopped); | 
| -  state_ = kStarted; | 
| -  if (!client_) | 
| -    sink_->Start(); | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::Stop() { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  state_ = kStopped; | 
| -  if (!client_) | 
| -    sink_->Stop(); | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::Play() { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  DCHECK_EQ(state_, kStarted); | 
| -  state_ = kPlaying; | 
| -  if (!client_) | 
| -    sink_->Play(); | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::Pause() { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  DCHECK(state_ == kPlaying || state_ == kStarted); | 
| -  state_ = kStarted; | 
| -  if (!client_) | 
| -    sink_->Pause(); | 
| -} | 
| - | 
| -bool WebAudioSourceProviderImpl::SetVolume(double volume) { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  volume_ = volume; | 
| -  if (!client_) | 
| -    sink_->SetVolume(volume); | 
| -  return true; | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::Initialize( | 
| -    const media::AudioParameters& params, | 
| -    RenderCallback* renderer) { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  CHECK(!renderer_); | 
| -  renderer_ = renderer; | 
| - | 
| -  DCHECK_EQ(state_, kStopped); | 
| -  sink_->Initialize(params, renderer); | 
| - | 
| -  // Keep track of the format in case the client hasn't yet been set. | 
| -  channels_ = params.channels(); | 
| -  sample_rate_ = params.sample_rate(); | 
| - | 
| -  if (!set_format_cb_.is_null()) | 
| -    base::ResetAndReturn(&set_format_cb_).Run(); | 
| -} | 
| - | 
| -void WebAudioSourceProviderImpl::OnSetFormat() { | 
| -  base::AutoLock auto_lock(sink_lock_); | 
| -  if (!client_) | 
| -    return; | 
| - | 
| -  // Inform Blink about the audio stream format. | 
| -  client_->setFormat(channels_, sample_rate_); | 
| -} | 
| - | 
| -}  // namespace content | 
|  |