// Copyright (c) 2012 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 "cobalt/media/base/loopback_audio_converter.h"

namespace cobalt {
namespace media {

LoopbackAudioConverter::LoopbackAudioConverter(
    const AudioParameters& input_params, const AudioParameters& output_params,
    bool disable_fifo)
    : audio_converter_(input_params, output_params, disable_fifo) {}

LoopbackAudioConverter::~LoopbackAudioConverter() {}

double LoopbackAudioConverter::ProvideInput(AudioBus* audio_bus,
                                            uint32_t frames_delayed) {
  audio_converter_.ConvertWithDelay(frames_delayed, audio_bus);
  return 1.0;
}

}  // namespace media
}  // namespace cobalt
