| Index: chromecast/media/audio/cast_audio_manager.h
 | 
| diff --git a/chromecast/media/audio/cast_audio_manager.h b/chromecast/media/audio/cast_audio_manager.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..7382f06e60672ce0a7a3c1b1c81779cb0048e1ee
 | 
| --- /dev/null
 | 
| +++ b/chromecast/media/audio/cast_audio_manager.h
 | 
| @@ -0,0 +1,83 @@
 | 
| +// Copyright 2015 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_AUDIO_CAST_AUDIO_MANAGER_H_
 | 
| +#define CHROMECAST_MEDIA_AUDIO_CAST_AUDIO_MANAGER_H_
 | 
| +
 | 
| +#include <string>
 | 
| +#include <vector>
 | 
| +
 | 
| +#include "base/macros.h"
 | 
| +#include "base/memory/linked_ptr.h"
 | 
| +#include "media/audio/audio_manager_base.h"
 | 
| +
 | 
| +namespace media {
 | 
| +class AudioLogFactory;
 | 
| +}
 | 
| +
 | 
| +namespace chromecast {
 | 
| +namespace media {
 | 
| +
 | 
| +class CastAudioOutputDevice;
 | 
| +class ChromecastDeviceAudioOutputStream;
 | 
| +
 | 
| +// This class acts as a proxy for chromecast::CastAudioOutputDevice,
 | 
| +// converting external-facing chromecast interfaces and data structures to
 | 
| +// those expected by ::media::AudioManager.
 | 
| +class CastAudioManager : public ::media::AudioManagerBase {
 | 
| + public:
 | 
| +  // This class does not take ownership of |audio_output_device|, which must be
 | 
| +  // non-null and which must outlive this class. All calls to CreateAudioLog()
 | 
| +  // will be forwarded to |audio_log_factory|, which also must outlive this
 | 
| +  // class.
 | 
| +  CastAudioManager(::media::AudioLogFactory* audio_log_factory,
 | 
| +                   CastAudioOutputDevice* audio_output_device);
 | 
| +  ~CastAudioManager() override;
 | 
| +
 | 
| +  // ::media::AudioManager implementation:
 | 
| +  bool HasAudioOutputDevices() override;
 | 
| +  bool HasAudioInputDevices() override;
 | 
| +  void ShowAudioInputSettings() override;
 | 
| +  void GetAudioInputDeviceNames(
 | 
| +      ::media::AudioDeviceNames* device_names) override;
 | 
| +  ::media::AudioParameters GetInputStreamParameters(
 | 
| +      const std::string& device_id) override;
 | 
| +
 | 
| +  // ::media::AudioManagerBase implementation:
 | 
| +  ::media::AudioParameters GetPreferredOutputStreamParameters(
 | 
| +      const std::string& output_device_id,
 | 
| +      const ::media::AudioParameters& input_params) override;
 | 
| +  ::media::AudioOutputStream* MakeLinearOutputStream(
 | 
| +      const ::media::AudioParameters& params) override;
 | 
| +  ::media::AudioOutputStream* MakeLowLatencyOutputStream(
 | 
| +      const ::media::AudioParameters& params,
 | 
| +      const std::string& device_id) override;
 | 
| +  ::media::AudioInputStream* MakeLinearInputStream(
 | 
| +      const ::media::AudioParameters& params,
 | 
| +      const std::string& device_id) override;
 | 
| +  ::media::AudioInputStream* MakeLowLatencyInputStream(
 | 
| +      const ::media::AudioParameters& params,
 | 
| +      const std::string& device_id) override;
 | 
| +
 | 
| +  // Get the CastAudioOutputDevice for testing.
 | 
| +  CastAudioOutputDevice* GetAudioOutputDeviceForTesting() const {
 | 
| +    return audio_output_device_;
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  // Host a ::media::AudioOutputStream interface which wraps a
 | 
| +  // chromecast::AudioOutputStream.
 | 
| +  ::media::AudioOutputStream* MakeCastOutputStream(
 | 
| +      const ::media::AudioParameters& params);
 | 
| +
 | 
| +  // The underlying audio output device.
 | 
| +  CastAudioOutputDevice* const audio_output_device_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(CastAudioManager);
 | 
| +};
 | 
| +
 | 
| +}  // namespace media
 | 
| +}  // namespace chromecast
 | 
| +
 | 
| +#endif  // CHROMECAST_MEDIA_AUDIO_CAST_AUDIO_MANAGER_H_
 | 
| 
 |