| Index: Source/platform/audio/Spatializer.h
|
| diff --git a/Source/platform/graphics/GraphicsContextStateSaver.h b/Source/platform/audio/Spatializer.h
|
| similarity index 58%
|
| copy from Source/platform/graphics/GraphicsContextStateSaver.h
|
| copy to Source/platform/audio/Spatializer.h
|
| index 7134a98d938e44a9e0041b120a4cebc24238a54d..69b68d5a926fe9a9f5d4b9d4c34385797b5f0d5a 100644
|
| --- a/Source/platform/graphics/GraphicsContextStateSaver.h
|
| +++ b/Source/platform/audio/Spatializer.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (C) 2013 Google Inc. All rights reserved.
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| //
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| @@ -26,60 +26,45 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -#ifndef GraphicsContextStateSaver_h
|
| -#define GraphicsContextStateSaver_h
|
| +#ifndef Spatializer_h
|
| +#define Spatializer_h
|
|
|
| #include "platform/PlatformExport.h"
|
| -#include "platform/graphics/GraphicsContext.h"
|
| +#include "platform/heap/Handle.h"
|
|
|
| namespace blink {
|
|
|
| -class PLATFORM_EXPORT GraphicsContextStateSaver {
|
| - WTF_MAKE_FAST_ALLOCATED;
|
| +class AudioBus;
|
| +
|
| +// Abstract base class for spatializing a mono or stereo source.
|
| +class PLATFORM_EXPORT Spatializer : public GarbageCollectedFinalized<Spatializer> {
|
| public:
|
| - GraphicsContextStateSaver(GraphicsContext& context, bool saveAndRestore = true)
|
| - : m_context(context)
|
| - , m_saveAndRestore(saveAndRestore)
|
| - {
|
| - if (m_saveAndRestore)
|
| - m_context.save();
|
| - }
|
| + enum {
|
| + PanningModelEqualPower = 0
|
| + };
|
| +
|
| + typedef unsigned PanningModel;
|
| +
|
| + static Spatializer* create(PanningModel, float sampleRate);
|
|
|
| - ~GraphicsContextStateSaver()
|
| - {
|
| - if (m_saveAndRestore)
|
| - m_context.restore();
|
| - }
|
| + virtual ~Spatializer() { };
|
|
|
| - void save()
|
| - {
|
| - ASSERT(!m_saveAndRestore);
|
| - m_context.save();
|
| - m_saveAndRestore = true;
|
| - }
|
| + // Handle sample-accurate panning by AudioParam automation.
|
| + virtual void panWithSampleAccurateValues(const AudioBus* inputBus, AudioBus* outputBuf, const float* panValues, size_t framesToProcess) = 0;
|
|
|
| - void saveIfNeeded()
|
| - {
|
| - if (saved())
|
| - return;
|
| - save();
|
| - }
|
| + // Handle de-zippered panning to a target value.
|
| + virtual void panToTargetValue(const AudioBus* inputBus, AudioBus* outputBuf, float panValue, size_t framesToProcess) = 0;
|
|
|
| - void restore()
|
| - {
|
| - ASSERT(m_saveAndRestore);
|
| - m_context.restore();
|
| - m_saveAndRestore = false;
|
| - }
|
| + virtual void reset() = 0;
|
| + virtual double tailTime() const = 0;
|
| + virtual double latencyTime() const = 0;
|
|
|
| - GraphicsContext* context() const { return &m_context; }
|
| - bool saved() const { return m_saveAndRestore; }
|
| + virtual void trace(Visitor*) { }
|
|
|
| -private:
|
| - GraphicsContext& m_context;
|
| - bool m_saveAndRestore;
|
| +protected:
|
| + Spatializer(PanningModel model) { }
|
| };
|
|
|
| } // namespace blink
|
|
|
| -#endif // GraphicsContextStateSaver_h
|
| +#endif // Spatializer_h
|
|
|