audin_u.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright 2018 yuzu emulator team
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "core/hle/service/kernel_helpers.h"
  6. #include "core/hle/service/service.h"
  7. namespace Core {
  8. class System;
  9. }
  10. namespace Kernel {
  11. class HLERequestContext;
  12. }
  13. namespace Service::Audio {
  14. class IAudioIn final : public ServiceFramework<IAudioIn> {
  15. public:
  16. explicit IAudioIn(Core::System& system_);
  17. ~IAudioIn() override;
  18. private:
  19. void Start(Kernel::HLERequestContext& ctx);
  20. void RegisterBufferEvent(Kernel::HLERequestContext& ctx);
  21. void AppendAudioInBufferAuto(Kernel::HLERequestContext& ctx);
  22. KernelHelpers::ServiceContext service_context;
  23. Kernel::KEvent* buffer_event;
  24. };
  25. class AudInU final : public ServiceFramework<AudInU> {
  26. public:
  27. explicit AudInU(Core::System& system_);
  28. ~AudInU() override;
  29. private:
  30. enum class SampleFormat : u32_le {
  31. PCM16 = 2,
  32. };
  33. enum class State : u32_le {
  34. Started = 0,
  35. Stopped = 1,
  36. };
  37. struct AudInOutParams {
  38. u32_le sample_rate{};
  39. u32_le channel_count{};
  40. SampleFormat sample_format{};
  41. State state{};
  42. };
  43. static_assert(sizeof(AudInOutParams) == 0x10, "AudInOutParams is an invalid size");
  44. using AudioInDeviceName = std::array<char, 256>;
  45. static constexpr std::array<std::string_view, 1> audio_device_names{{
  46. "BuiltInHeadset",
  47. }};
  48. void ListAudioIns(Kernel::HLERequestContext& ctx);
  49. void ListAudioInsAutoFiltered(Kernel::HLERequestContext& ctx);
  50. void OpenInOutImpl(Kernel::HLERequestContext& ctx);
  51. void OpenAudioIn(Kernel::HLERequestContext& ctx);
  52. void OpenAudioInProtocolSpecified(Kernel::HLERequestContext& ctx);
  53. };
  54. } // namespace Service::Audio