blob: 7e8e64a45f714b1457ae5f9b80475b128a7c67f9 [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.
#ifndef CHROMECAST_MEDIA_CMA_BACKEND_MOCK_REDIRECTED_AUDIO_OUTPUT_H_
#define CHROMECAST_MEDIA_CMA_BACKEND_MOCK_REDIRECTED_AUDIO_OUTPUT_H_
#include <cstdint>
#include <memory>
#include "base/macros.h"
#include "chromecast/public/media/redirected_audio_output.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace media {
class AudioBus;
} // namespace media
namespace chromecast {
namespace media {
class MockRedirectedAudioOutput : public RedirectedAudioOutput {
public:
explicit MockRedirectedAudioOutput(int num_channels);
~MockRedirectedAudioOutput() override;
int last_num_inputs() const { return last_num_inputs_; }
::media::AudioBus* last_buffer() const { return last_buffer_.get(); }
int64_t last_output_timestamp() const { return last_output_timestamp_; }
MOCK_METHOD1(Start, void(int));
MOCK_METHOD0(Stop, void());
MOCK_METHOD4(WriteBuffer, void(int, float**, int, int64_t));
private:
void OnWriteBuffer(int num_inputs,
float** channel_data,
int num_frames,
int64_t output_timestamp);
const int num_channels_;
int last_num_inputs_;
std::unique_ptr<::media::AudioBus> last_buffer_;
int64_t last_output_timestamp_;
DISALLOW_COPY_AND_ASSIGN(MockRedirectedAudioOutput);
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_MEDIA_CMA_BACKEND_MOCK_REDIRECTED_AUDIO_OUTPUT_H_