// Copyright 2016 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 MEDIA_BASE_AUDIO_RENDERER_MIXER_POOL_H_
#define MEDIA_BASE_AUDIO_RENDERER_MIXER_POOL_H_

#include <string>

#include "media/base/audio_latency.h"
#include "media/base/output_device_info.h"

namespace media {
class AudioParameters;
class AudioRendererMixer;
class AudioRendererSink;

// Provides AudioRendererMixer instances for shared usage.
// Thread safe.
class MEDIA_EXPORT AudioRendererMixerPool {
 public:
  AudioRendererMixerPool() = default;
  virtual ~AudioRendererMixerPool() = default;

  // Obtains a pointer to mixer instance based on AudioParameters. The pointer
  // is guaranteed to be valid (at least) until it's rereleased by a call to
  // ReturnMixer().
  //
  // Ownership of |sink| must be passed to GetMixer(), it will be stopped and
  // discard if an existing mixer can be reused. Clients must have called
  // GetOutputDeviceInfoAsync() on |sink| to get |sink_info|, and it must have
  // a device_status() == OUTPUT_DEVICE_STATUS_OK.
  virtual AudioRendererMixer* GetMixer(
      int owner_id,
      const AudioParameters& input_params,
      AudioLatency::LatencyType latency,
      const OutputDeviceInfo& sink_info,
      scoped_refptr<AudioRendererSink> sink) = 0;

  // Returns mixer back to the pool, must be called when the mixer is not needed
  // any more to avoid memory leakage.
  virtual void ReturnMixer(AudioRendererMixer* mixer) = 0;

  // Returns an AudioRendererSink for use with GetMixer(). Inputs must call this
  // to get a sink to use with a subsequent GetMixer()
  virtual scoped_refptr<AudioRendererSink> GetSink(
      int owner_id,
      const std::string& device_id) = 0;

 private:
  DISALLOW_COPY_AND_ASSIGN(AudioRendererMixerPool);
};

}  // namespace media

#endif  // MEDIA_BASE_AUDIO_RENDERER_MIXER_POOL_H_
