AudioCodecPluginSerenity.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibAudio/ConnectionToServer.h>
  7. #include <WebContent/AudioCodecPluginSerenity.h>
  8. namespace WebContent {
  9. ErrorOr<NonnullOwnPtr<AudioCodecPluginSerenity>> AudioCodecPluginSerenity::create()
  10. {
  11. auto connection = TRY(Audio::ConnectionToServer::try_create());
  12. return adopt_nonnull_own_or_enomem(new (nothrow) AudioCodecPluginSerenity(move(connection)));
  13. }
  14. AudioCodecPluginSerenity::AudioCodecPluginSerenity(NonnullRefPtr<Audio::ConnectionToServer> connection)
  15. : m_connection(move(connection))
  16. {
  17. }
  18. AudioCodecPluginSerenity::~AudioCodecPluginSerenity() = default;
  19. size_t AudioCodecPluginSerenity::device_sample_rate()
  20. {
  21. if (!m_device_sample_rate.has_value())
  22. m_device_sample_rate = m_connection->get_sample_rate();
  23. return *m_device_sample_rate;
  24. }
  25. void AudioCodecPluginSerenity::enqueue_samples(FixedArray<Audio::Sample> samples)
  26. {
  27. m_connection->async_enqueue(move(samples)).release_value_but_fixme_should_propagate_errors();
  28. }
  29. size_t AudioCodecPluginSerenity::remaining_samples() const
  30. {
  31. return m_connection->remaining_samples();
  32. }
  33. void AudioCodecPluginSerenity::resume_playback()
  34. {
  35. m_connection->async_start_playback();
  36. }
  37. void AudioCodecPluginSerenity::pause_playback()
  38. {
  39. m_connection->async_start_playback();
  40. }
  41. void AudioCodecPluginSerenity::playback_ended()
  42. {
  43. m_connection->async_pause_playback();
  44. m_connection->clear_client_buffer();
  45. m_connection->async_clear_buffer();
  46. }
  47. }