| Index: Source/modules/webaudio/StereoPannerNode.h
|
| diff --git a/Source/platform/text/TextRunIterator.h b/Source/modules/webaudio/StereoPannerNode.h
|
| similarity index 53%
|
| copy from Source/platform/text/TextRunIterator.h
|
| copy to Source/modules/webaudio/StereoPannerNode.h
|
| index 0774b659a08244236f61d3b3b5cf728a6d078329..f05dfb0bd5ddc2ca1e997406c56dea780209f8b0 100644
|
| --- a/Source/platform/text/TextRunIterator.h
|
| +++ b/Source/modules/webaudio/StereoPannerNode.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,53 +26,52 @@
|
| // (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 TextRunIterator_h
|
| -#define TextRunIterator_h
|
| +#ifndef StereoPannerNode_h
|
| +#define StereoPannerNode_h
|
|
|
| -#include "platform/text/TextRun.h"
|
| +#include "modules/webaudio/AudioNode.h"
|
| +#include "modules/webaudio/AudioParam.h"
|
| +#include "platform/audio/AudioBus.h"
|
| +#include "platform/audio/Spatializer.h"
|
|
|
| namespace blink {
|
|
|
| -class TextRunIterator {
|
| +// StereoPannerNode is an AudioNode with one input and one output. It is
|
| +// specifically designed for equal-power stereo panning.
|
| +class StereoPannerNode final : public AudioNode {
|
| + DEFINE_WRAPPERTYPEINFO();
|
| public:
|
| - TextRunIterator()
|
| - : m_textRun(0)
|
| - , m_offset(0)
|
| + static StereoPannerNode* create(AudioContext* context, float sampleRate)
|
| {
|
| + return new StereoPannerNode(context, sampleRate);
|
| }
|
|
|
| - TextRunIterator(const TextRun* textRun, unsigned offset)
|
| - : m_textRun(textRun)
|
| - , m_offset(offset)
|
| - {
|
| - }
|
| + virtual ~StereoPannerNode();
|
|
|
| - TextRunIterator(const TextRunIterator& other)
|
| - : m_textRun(other.m_textRun)
|
| - , m_offset(other.m_offset)
|
| - {
|
| - }
|
| + virtual void dispose() override;
|
| + virtual void process(size_t framesToProcess) override;
|
| + virtual void initialize() override;
|
| + virtual void uninitialize() override;
|
|
|
| - unsigned offset() const { return m_offset; }
|
| - void increment() { m_offset++; }
|
| - bool atEnd() const { return !m_textRun || m_offset >= m_textRun->length(); }
|
| - UChar current() const { return (*m_textRun)[m_offset]; }
|
| - WTF::Unicode::Direction direction() const { return atEnd() ? WTF::Unicode::OtherNeutral : WTF::Unicode::direction(current()); }
|
| - bool atParagraphSeparator() const { return current() == '\n'; }
|
| + virtual double tailTime() const override { return 0; }
|
| + virtual double latencyTime() const override { return 0; }
|
|
|
| - bool operator==(const TextRunIterator& other)
|
| - {
|
| - return m_offset == other.m_offset && m_textRun == other.m_textRun;
|
| - }
|
| + virtual void setChannelCount(unsigned long, ExceptionState&) final;
|
| + virtual void setChannelCountMode(const String&, ExceptionState&) final;
|
| +
|
| + virtual void trace(Visitor*) override;
|
|
|
| - bool operator!=(const TextRunIterator& other) { return !operator==(other); }
|
| + AudioParam* pan() { return m_pan.get(); }
|
|
|
| private:
|
| - const TextRun* m_textRun;
|
| - int m_offset;
|
| -};
|
| + StereoPannerNode(AudioContext*, float sampleRate);
|
|
|
| + Member<Spatializer> m_stereoPanner;
|
| + Member<AudioParam> m_pan;
|
| +
|
| + AudioFloatArray m_sampleAccuratePanValues;
|
| +};
|
|
|
| } // namespace blink
|
|
|
| -#endif // TextRunIterator_h
|
| +#endif // StereoPannerNode_h
|
|
|