PlaybackStream.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * Copyright (c) 2023, Gregory Bertilson <zaggy1024@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "PlaybackStream.h"
  7. #include <AK/Platform.h>
  8. #include <LibCore/ThreadedPromise.h>
  9. #if defined(HAVE_PULSEAUDIO)
  10. # include <LibAudio/PlaybackStreamPulseAudio.h>
  11. #elif defined(AK_OS_MACOS)
  12. # include <LibAudio/PlaybackStreamAudioUnit.h>
  13. #endif
  14. namespace Audio {
  15. ErrorOr<NonnullRefPtr<PlaybackStream>> PlaybackStream::create(OutputState initial_output_state, u32 sample_rate, u8 channels, u32 target_latency_ms, AudioDataRequestCallback&& data_request_callback)
  16. {
  17. VERIFY(data_request_callback);
  18. // Create the platform-specific implementation for this stream.
  19. #if defined(HAVE_PULSEAUDIO)
  20. return PlaybackStreamPulseAudio::create(initial_output_state, sample_rate, channels, target_latency_ms, move(data_request_callback));
  21. #elif defined(AK_OS_MACOS)
  22. return PlaybackStreamAudioUnit::create(initial_output_state, sample_rate, channels, target_latency_ms, move(data_request_callback));
  23. #else
  24. (void)initial_output_state, (void)sample_rate, (void)channels, (void)target_latency_ms;
  25. return Error::from_string_literal("Audio output is not available for this platform");
  26. #endif
  27. }
  28. }