audio_manager_cras_base.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2013 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_BASE_H_
  5. #define MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_BASE_H_
  6. #include <cras_types.h>
  7. #include <memory>
  8. #include <string>
  9. #include <vector>
  10. #include "base/compiler_specific.h"
  11. #include "base/memory/ref_counted.h"
  12. #include "media/audio/audio_manager_base.h"
  13. namespace media {
  14. class MEDIA_EXPORT AudioManagerCrasBase : public AudioManagerBase {
  15. public:
  16. AudioManagerCrasBase(std::unique_ptr<AudioThread> audio_thread,
  17. AudioLogFactory* audio_log_factory);
  18. AudioManagerCrasBase(const AudioManagerCrasBase&) = delete;
  19. AudioManagerCrasBase& operator=(const AudioManagerCrasBase&) = delete;
  20. ~AudioManagerCrasBase() override;
  21. // AudioManager implementation.
  22. const char* GetName() override;
  23. // AudioManagerBase implementation.
  24. AudioOutputStream* MakeLinearOutputStream(
  25. const AudioParameters& params,
  26. const LogCallback& log_callback) override;
  27. AudioOutputStream* MakeLowLatencyOutputStream(
  28. const AudioParameters& params,
  29. const std::string& device_id,
  30. const LogCallback& log_callback) override;
  31. AudioInputStream* MakeLinearInputStream(
  32. const AudioParameters& params,
  33. const std::string& device_id,
  34. const LogCallback& log_callback) override;
  35. AudioInputStream* MakeLowLatencyInputStream(
  36. const AudioParameters& params,
  37. const std::string& device_id,
  38. const LogCallback& log_callback) override;
  39. // Checks if |device_id| corresponds to the default device.
  40. // Set |is_input| to true for capture devices, false for output.
  41. virtual bool IsDefault(const std::string& device_id, bool is_input) = 0;
  42. // Returns CRAS client type.
  43. virtual enum CRAS_CLIENT_TYPE GetClientType() = 0;
  44. protected:
  45. // Called by MakeLinearOutputStream and MakeLowLatencyOutputStream.
  46. AudioOutputStream* MakeOutputStream(const AudioParameters& params,
  47. const std::string& device_id);
  48. // Called by MakeLinearInputStream and MakeLowLatencyInputStream.
  49. AudioInputStream* MakeInputStream(const AudioParameters& params,
  50. const std::string& device_id);
  51. };
  52. } // namespace media
  53. #endif // MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_BASE_H_