123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- // 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 "media/base/fake_audio_renderer_sink.h"
- #include "base/bind.h"
- #include "base/location.h"
- #include "base/logging.h"
- #include "base/threading/sequenced_task_runner_handle.h"
- namespace media {
- FakeAudioRendererSink::FakeAudioRendererSink()
- : FakeAudioRendererSink(
- AudioParameters(AudioParameters::AUDIO_FAKE,
- CHANNEL_LAYOUT_STEREO,
- AudioParameters::kTelephoneSampleRate,
- 1)) {}
- FakeAudioRendererSink::FakeAudioRendererSink(
- const AudioParameters& hardware_params)
- : state_(kUninitialized),
- callback_(nullptr),
- output_device_info_(std::string(),
- OUTPUT_DEVICE_STATUS_OK,
- hardware_params),
- is_optimized_for_hw_params_(true) {}
- FakeAudioRendererSink::~FakeAudioRendererSink() {
- DCHECK(!callback_);
- }
- void FakeAudioRendererSink::Initialize(const AudioParameters& params,
- RenderCallback* callback) {
- DCHECK(state_ == kUninitialized || state_ == kStopped);
- DCHECK(!callback_);
- DCHECK(callback);
- callback_ = callback;
- ChangeState(kInitialized);
- }
- void FakeAudioRendererSink::Start() {
- DCHECK_EQ(state_, kInitialized);
- ChangeState(kStarted);
- }
- void FakeAudioRendererSink::Stop() {
- callback_ = nullptr;
- ChangeState(kStopped);
- }
- void FakeAudioRendererSink::Flush() {
- DCHECK_NE(state_, kPlaying);
- }
- void FakeAudioRendererSink::Pause() {
- DCHECK(state_ == kStarted || state_ == kPlaying) << "state_ " << state_;
- ChangeState(kPaused);
- }
- void FakeAudioRendererSink::Play() {
- DCHECK(state_ == kStarted || state_ == kPaused) << "state_ " << state_;
- ChangeState(kPlaying);
- }
- bool FakeAudioRendererSink::SetVolume(double volume) {
- return true;
- }
- OutputDeviceInfo FakeAudioRendererSink::GetOutputDeviceInfo() {
- return output_device_info_;
- }
- void FakeAudioRendererSink::GetOutputDeviceInfoAsync(
- OutputDeviceInfoCB info_cb) {
- base::SequencedTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::BindOnce(std::move(info_cb), output_device_info_));
- }
- bool FakeAudioRendererSink::IsOptimizedForHardwareParameters() {
- return is_optimized_for_hw_params_;
- }
- bool FakeAudioRendererSink::CurrentThreadIsRenderingThread() {
- NOTIMPLEMENTED();
- return false;
- }
- bool FakeAudioRendererSink::Render(AudioBus* dest,
- base::TimeDelta delay,
- int* frames_written) {
- if (state_ != kPlaying)
- return false;
- *frames_written = callback_->Render(delay, base::TimeTicks::Now(), 0, dest);
- return true;
- }
- void FakeAudioRendererSink::OnRenderError() {
- DCHECK_NE(state_, kUninitialized);
- DCHECK_NE(state_, kStopped);
- callback_->OnRenderError();
- }
- void FakeAudioRendererSink::SetIsOptimizedForHardwareParameters(bool value) {
- is_optimized_for_hw_params_ = value;
- }
- void FakeAudioRendererSink::ChangeState(State new_state) {
- static const char* kStateNames[] = {
- "kUninitialized",
- "kInitialized",
- "kStarted",
- "kPaused",
- "kPlaying",
- "kStopped"
- };
- DVLOG(1) << __func__ << " : " << kStateNames[state_] << " -> "
- << kStateNames[new_state];
- state_ = new_state;
- }
- } // namespace media
|