From 76fb19ab3a3995c8f9907ac9401449d9b88f016f Mon Sep 17 00:00:00 2001 From: Attila Uygun Date: Sun, 4 Jun 2023 11:31:37 +0200 Subject: [PATCH] Move AudioSinkDelegate into AudioSink --- src/engine/audio/audio_mixer.h | 6 +++--- src/engine/audio/audio_sink.h | 12 +++++++++++- src/engine/audio/audio_sink_alsa.cc | 3 +-- src/engine/audio/audio_sink_alsa.h | 6 ++---- src/engine/audio/audio_sink_delegate.h | 20 -------------------- src/engine/audio/audio_sink_oboe.cc | 3 +-- src/engine/audio/audio_sink_oboe.h | 6 ++---- 7 files changed, 20 insertions(+), 36 deletions(-) delete mode 100644 src/engine/audio/audio_sink_delegate.h diff --git a/src/engine/audio/audio_mixer.h b/src/engine/audio/audio_mixer.h index 7bcc2aa..cf4a7dc 100644 --- a/src/engine/audio/audio_mixer.h +++ b/src/engine/audio/audio_mixer.h @@ -8,7 +8,7 @@ #include #include "base/closure.h" -#include "engine/audio/audio_sink_delegate.h" +#include "engine/audio/audio_sink.h" namespace base { class TaskRunner; @@ -22,7 +22,7 @@ class AudioBus; // Mix and render audio with low overhead. A platform specific AudioSink // implementation is expected to periodically call RenderAudio() in a background // thread. -class AudioMixer : public AudioSinkDelegate { +class AudioMixer : public AudioSink::Delegate { public: AudioMixer(); ~AudioMixer(); @@ -91,7 +91,7 @@ class AudioMixer : public AudioSinkDelegate { bool audio_enabled_ = true; - // AudioSinkDelegate implementation + // AudioSink::Delegate implementation int GetChannelCount() final { return kChannelCount; } void RenderAudio(float* output_buffer, size_t num_frames) final; diff --git a/src/engine/audio/audio_sink.h b/src/engine/audio/audio_sink.h index d346ed6..5f48aa3 100644 --- a/src/engine/audio/audio_sink.h +++ b/src/engine/audio/audio_sink.h @@ -4,9 +4,19 @@ namespace eng { // Models an audio sink sending mixed audio to the audio driver. Audio data from -// the mixer source is delivered on a pull model using AudioSinkDelegate. +// the mixer source is delivered on a pull model using Delegate. class AudioSink { public: + class Delegate { + public: + Delegate() = default; + virtual ~Delegate() = default; + + virtual int GetChannelCount() = 0; + + virtual void RenderAudio(float* output_buffer, size_t num_frames) = 0; + }; + AudioSink() = default; virtual ~AudioSink() = default; diff --git a/src/engine/audio/audio_sink_alsa.cc b/src/engine/audio/audio_sink_alsa.cc index 55b6bf1..6e5e4be 100644 --- a/src/engine/audio/audio_sink_alsa.cc +++ b/src/engine/audio/audio_sink_alsa.cc @@ -5,13 +5,12 @@ #include #include "base/log.h" -#include "engine/audio/audio_sink_delegate.h" using namespace base; namespace eng { -AudioSinkAlsa::AudioSinkAlsa(AudioSinkDelegate* delegate) +AudioSinkAlsa::AudioSinkAlsa(AudioSink::Delegate* delegate) : delegate_(delegate) {} AudioSinkAlsa::~AudioSinkAlsa() { diff --git a/src/engine/audio/audio_sink_alsa.h b/src/engine/audio/audio_sink_alsa.h index 907fedf..8d3ca6a 100644 --- a/src/engine/audio/audio_sink_alsa.h +++ b/src/engine/audio/audio_sink_alsa.h @@ -10,11 +10,9 @@ typedef struct _snd_pcm snd_pcm_t; namespace eng { -class AudioSinkDelegate; - class AudioSinkAlsa final : public AudioSink { public: - AudioSinkAlsa(AudioSinkDelegate* delegate); + AudioSinkAlsa(AudioSink::Delegate* delegate); ~AudioSinkAlsa() final; bool Initialize() final; @@ -36,7 +34,7 @@ class AudioSinkAlsa final : public AudioSink { size_t sample_rate_ = 0; size_t period_size_ = 0; - AudioSinkDelegate* delegate_ = nullptr; + AudioSink::Delegate* delegate_ = nullptr; void StartAudioThread(); void TerminateAudioThread(); diff --git a/src/engine/audio/audio_sink_delegate.h b/src/engine/audio/audio_sink_delegate.h deleted file mode 100644 index 45c81ab..0000000 --- a/src/engine/audio/audio_sink_delegate.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef ENGINE_AUDIO_AUDIO_SINK_DELEGATE_H -#define ENGINE_AUDIO_AUDIO_SINK_DELEGATE_H - -#include - -namespace eng { - -class AudioSinkDelegate { - public: - AudioSinkDelegate() = default; - virtual ~AudioSinkDelegate() = default; - - virtual int GetChannelCount() = 0; - - virtual void RenderAudio(float* output_buffer, size_t num_frames) = 0; -}; - -} // namespace eng - -#endif // ENGINE_AUDIO_AUDIO_SINK_DELEGATE_H diff --git a/src/engine/audio/audio_sink_oboe.cc b/src/engine/audio/audio_sink_oboe.cc index 570543f..273f967 100644 --- a/src/engine/audio/audio_sink_oboe.cc +++ b/src/engine/audio/audio_sink_oboe.cc @@ -1,14 +1,13 @@ #include "engine/audio/audio_sink_oboe.h" #include "base/log.h" -#include "engine/audio/audio_sink_delegate.h" #include "third_party/oboe/include/oboe/Oboe.h" using namespace base; namespace eng { -AudioSinkOboe::AudioSinkOboe(AudioSinkDelegate* delegate) +AudioSinkOboe::AudioSinkOboe(AudioSink::Delegate* delegate) : callback_(std::make_unique(this)), delegate_(delegate) {} AudioSinkOboe::~AudioSinkOboe() { diff --git a/src/engine/audio/audio_sink_oboe.h b/src/engine/audio/audio_sink_oboe.h index 2470edd..c973517 100644 --- a/src/engine/audio/audio_sink_oboe.h +++ b/src/engine/audio/audio_sink_oboe.h @@ -10,11 +10,9 @@ namespace eng { -class AudioSinkDelegate; - class AudioSinkOboe final : public AudioSink { public: - AudioSinkOboe(AudioSinkDelegate* delegate); + AudioSinkOboe(AudioSink::Delegate* delegate); ~AudioSinkOboe() final; bool Initialize() final; @@ -44,7 +42,7 @@ class AudioSinkOboe final : public AudioSink { oboe::ManagedStream stream_; std::unique_ptr callback_; - AudioSinkDelegate* delegate_ = nullptr; + AudioSink::Delegate* delegate_ = nullptr; bool RestartStream(); };