// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_AUDIO_SOURCE_PROVIDER_IMPL_H_ #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_AUDIO_SOURCE_PROVIDER_IMPL_H_ #include <stddef.h> #include <memory> #include <string> #include "base/functional/callback.h" #include "base/functional/callback_forward.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "media/base/audio_renderer_sink.h" #include "third_party/blink/public/platform/web_audio_source_provider.h" #include "third_party/blink/public/platform/web_common.h" #include "third_party/blink/public/platform/web_vector.h" namespace media { class MediaLog; } namespace blink { class WebAudioSourceProviderClient; // WebAudioSourceProviderImpl is either one of two things (but not both): // - a connection between a RestartableAudioRendererSink (the |sink_|) passed in // constructor and an AudioRendererSink::RenderCallback passed on Initialize() // by means of an internal AudioRendererSink::RenderCallback. // - a connection between the said AudioRendererSink::RenderCallback and a // WebAudioSourceProviderClient passed via setClient() (the |client_|), // again using the internal AudioRendererSink::RenderCallback. Blink calls // provideInput() periodically to fetch the appropriate data. // // In either case, the internal RenderCallback allows for delivering a copy of // the data if a listener is configured. WASPImpl is also a // RestartableAudioRendererSink itself in order to be controlled (Play(), // Pause() etc). // // All calls are protected by a lock. class BLINK_PLATFORM_EXPORT WebAudioSourceProviderImpl : public WebAudioSourceProvider, public media::SwitchableAudioRendererSink { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_AUDIO_SOURCE_PROVIDER_IMPL_H_