| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/fake_audio_renderer_sink.h" | 5 #include "media/base/fake_audio_renderer_sink.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 | 10 |
| 11 namespace media { | 11 namespace media { |
| 12 | 12 |
| 13 FakeAudioRendererSink::FakeAudioRendererSink() | 13 FakeAudioRendererSink::FakeAudioRendererSink() |
| 14 : FakeAudioRendererSink( | 14 : FakeAudioRendererSink( |
| 15 AudioParameters(AudioParameters::AUDIO_FAKE, | 15 AudioParameters(AudioParameters::AUDIO_FAKE, |
| 16 CHANNEL_LAYOUT_STEREO, | 16 CHANNEL_LAYOUT_STEREO, |
| 17 AudioParameters::kTelephoneSampleRate, | 17 AudioParameters::kTelephoneSampleRate, |
| 18 16, | 18 16, |
| 19 1)) {} | 19 1)) {} |
| 20 | 20 |
| 21 FakeAudioRendererSink::FakeAudioRendererSink( | 21 FakeAudioRendererSink::FakeAudioRendererSink( |
| 22 const AudioParameters& hardware_params) | 22 const AudioParameters& hardware_params) |
| 23 : state_(kUninitialized), | 23 : state_(kUninitialized), |
| 24 callback_(nullptr), | 24 callback_(nullptr), |
| 25 output_device_info_(std::string(), | 25 output_device_info_(std::string(), |
| 26 OUTPUT_DEVICE_STATUS_OK, | 26 OUTPUT_DEVICE_STATUS_OK, |
| 27 hardware_params) {} | 27 hardware_params), |
| 28 is_optimized_for_hw_params_(true) {} |
| 28 | 29 |
| 29 FakeAudioRendererSink::~FakeAudioRendererSink() { | 30 FakeAudioRendererSink::~FakeAudioRendererSink() { |
| 30 DCHECK(!callback_); | 31 DCHECK(!callback_); |
| 31 } | 32 } |
| 32 | 33 |
| 33 void FakeAudioRendererSink::Initialize(const AudioParameters& params, | 34 void FakeAudioRendererSink::Initialize(const AudioParameters& params, |
| 34 RenderCallback* callback) { | 35 RenderCallback* callback) { |
| 35 DCHECK(state_ == kUninitialized || state_ == kStopped); | 36 DCHECK(state_ == kUninitialized || state_ == kStopped); |
| 36 DCHECK(!callback_); | 37 DCHECK(!callback_); |
| 37 DCHECK(callback); | 38 DCHECK(callback); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 63 | 64 |
| 64 bool FakeAudioRendererSink::SetVolume(double volume) { | 65 bool FakeAudioRendererSink::SetVolume(double volume) { |
| 65 return true; | 66 return true; |
| 66 } | 67 } |
| 67 | 68 |
| 68 OutputDeviceInfo FakeAudioRendererSink::GetOutputDeviceInfo() { | 69 OutputDeviceInfo FakeAudioRendererSink::GetOutputDeviceInfo() { |
| 69 return output_device_info_; | 70 return output_device_info_; |
| 70 } | 71 } |
| 71 | 72 |
| 72 bool FakeAudioRendererSink::IsOptimizedForHardwareParameters() { | 73 bool FakeAudioRendererSink::IsOptimizedForHardwareParameters() { |
| 73 return true; | 74 return is_optimized_for_hw_params_; |
| 74 } | 75 } |
| 75 | 76 |
| 76 bool FakeAudioRendererSink::CurrentThreadIsRenderingThread() { | 77 bool FakeAudioRendererSink::CurrentThreadIsRenderingThread() { |
| 77 NOTIMPLEMENTED(); | 78 NOTIMPLEMENTED(); |
| 78 return false; | 79 return false; |
| 79 } | 80 } |
| 80 | 81 |
| 81 bool FakeAudioRendererSink::Render(AudioBus* dest, | 82 bool FakeAudioRendererSink::Render(AudioBus* dest, |
| 82 base::TimeDelta delay, | 83 base::TimeDelta delay, |
| 83 int* frames_written) { | 84 int* frames_written) { |
| 84 if (state_ != kPlaying) | 85 if (state_ != kPlaying) |
| 85 return false; | 86 return false; |
| 86 | 87 |
| 87 *frames_written = callback_->Render(delay, base::TimeTicks::Now(), 0, dest); | 88 *frames_written = callback_->Render(delay, base::TimeTicks::Now(), 0, dest); |
| 88 return true; | 89 return true; |
| 89 } | 90 } |
| 90 | 91 |
| 91 void FakeAudioRendererSink::OnRenderError() { | 92 void FakeAudioRendererSink::OnRenderError() { |
| 92 DCHECK_NE(state_, kUninitialized); | 93 DCHECK_NE(state_, kUninitialized); |
| 93 DCHECK_NE(state_, kStopped); | 94 DCHECK_NE(state_, kStopped); |
| 94 | 95 |
| 95 callback_->OnRenderError(); | 96 callback_->OnRenderError(); |
| 96 } | 97 } |
| 97 | 98 |
| 99 void FakeAudioRendererSink::SetIsOptimizedForHardwareParameters(bool value) { |
| 100 is_optimized_for_hw_params_ = value; |
| 101 } |
| 102 |
| 98 void FakeAudioRendererSink::ChangeState(State new_state) { | 103 void FakeAudioRendererSink::ChangeState(State new_state) { |
| 99 static const char* kStateNames[] = { | 104 static const char* kStateNames[] = { |
| 100 "kUninitialized", | 105 "kUninitialized", |
| 101 "kInitialized", | 106 "kInitialized", |
| 102 "kStarted", | 107 "kStarted", |
| 103 "kPaused", | 108 "kPaused", |
| 104 "kPlaying", | 109 "kPlaying", |
| 105 "kStopped" | 110 "kStopped" |
| 106 }; | 111 }; |
| 107 | 112 |
| 108 DVLOG(1) << __func__ << " : " << kStateNames[state_] << " -> " | 113 DVLOG(1) << __func__ << " : " << kStateNames[state_] << " -> " |
| 109 << kStateNames[new_state]; | 114 << kStateNames[new_state]; |
| 110 state_ = new_state; | 115 state_ = new_state; |
| 111 } | 116 } |
| 112 | 117 |
| 113 } // namespace media | 118 } // namespace media |
| OLD | NEW |