chromium/services/audio/output_device_mixer.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_AUDIO_OUTPUT_DEVICE_MIXER_H_
#define SERVICES_AUDIO_OUTPUT_DEVICE_MIXER_H_

#include <memory>
#include <string>

#include "base/functional/callback.h"
#include "base/task/single_thread_task_runner.h"
#include "media/base/audio_parameters.h"
#include "services/audio/reference_output.h"

namespace media {
class AudioOutputStream;
}

namespace audio {

// Manages mixing and rendering of all audio outputs going to a specific output
// device. As ReferenceOutput provides to Listeners an ability to listen to the
// audio mix being rendered. If there is at least one listener connected, the
// mixer is mixing all the audio output and rendering the mix as a single audio
// output stream. Otherwise the streams are rendered independently.
class OutputDeviceMixer : public ReferenceOutput {};

}  // namespace audio

#endif  // SERVICES_AUDIO_OUTPUT_DEVICE_MIXER_H_