// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // AudioRendererAlgorithm buffers and transforms audio data. The owner of // this object provides audio data to the object through EnqueueBuffer() and // requests data from the buffer via FillBuffer(). // // This class is *not* thread-safe. Calls to enqueue and retrieve data must be // locked if called from multiple threads. // // AudioRendererAlgorithm uses the Waveform Similarity Overlap and Add (WSOLA) // algorithm to stretch or compress audio data to meet playback speeds less than // or greater than the natural playback of the audio stream. The algorithm // preserves local properties of the audio, therefore, pitch and harmonics are // are preserved. See audio_renderer_algorith.cc for a more elaborate // description of the algorithm. // // Audio at very low or very high playback rates are muted to preserve quality. #ifndef MEDIA_FILTERS_AUDIO_RENDERER_ALGORITHM_H_ #define MEDIA_FILTERS_AUDIO_RENDERER_ALGORITHM_H_ #include <stdint.h> #include <memory> #include <optional> #include <vector> #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "media/base/audio_buffer.h" #include "media/base/audio_buffer_queue.h" #include "media/base/audio_parameters.h" #include "media/base/media_log.h" #include "media/base/multi_channel_resampler.h" namespace media { class AudioBus; class MEDIA_EXPORT AudioRendererAlgorithm { … }; } // namespace media #endif // MEDIA_FILTERS_AUDIO_RENDERER_ALGORITHM_H_