blob: 571644a9af17f5e0ae31333b26f61dcf55edf83a [file] [log] [blame]
// Copyright 2018 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 "chromecast/media/cma/backend/mock_redirected_audio_output.h"
#include <algorithm>
#include "base/logging.h"
#include "media/base/audio_bus.h"
using testing::_;
namespace chromecast {
namespace media {
MockRedirectedAudioOutput::MockRedirectedAudioOutput(int num_channels)
: num_channels_(num_channels),
last_num_inputs_(-1),
last_output_timestamp_(INT64_MIN) {
ON_CALL(*this, WriteBuffer(_, _, _, _))
.WillByDefault(
testing::Invoke(this, &MockRedirectedAudioOutput::OnWriteBuffer));
}
MockRedirectedAudioOutput::~MockRedirectedAudioOutput() = default;
void MockRedirectedAudioOutput::OnWriteBuffer(int num_inputs,
float** channel_data,
int num_frames,
int64_t output_timestamp) {
CHECK(channel_data);
last_buffer_ = ::media::AudioBus::Create(num_channels_, num_frames);
for (int c = 0; c < num_channels_; ++c) {
CHECK(channel_data[c]);
std::copy_n(channel_data[c], num_frames, last_buffer_->channel(c));
}
last_num_inputs_ = num_inputs;
last_output_timestamp_ = output_timestamp;
}
} // namespace media
} // namespace chromecast