Changeset 96525 in webkit


Ignore:
Timestamp:
Oct 3, 2011 12:13:22 PM (13 years ago)
Author:
crogers@google.com
Message:

BiquadFilterNode .type attribute is not handled correctly
https://bugs.webkit.org/show_bug.cgi?id=69182

Reviewed by Kenneth Russell.

Source/WebCore:

Test: webaudio/biquadfilternode-basic.html

  • platform/audio/AudioDSPKernelProcessor.cpp:

(WebCore::AudioDSPKernelProcessor::initialize):

  • webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::AudioBufferSourceNode):

  • webaudio/AudioChannelMerger.cpp:

(WebCore::AudioChannelMerger::AudioChannelMerger):

  • webaudio/AudioChannelSplitter.cpp:

(WebCore::AudioChannelSplitter::AudioChannelSplitter):

  • webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::AudioDestinationNode):

  • webaudio/AudioGainNode.cpp:

(WebCore::AudioGainNode::AudioGainNode):

  • webaudio/AudioNode.cpp:

(WebCore::AudioNode::AudioNode):
(WebCore::AudioNode::~AudioNode):
(WebCore::AudioNode::setNodeType):
(WebCore::AudioNode::ref):
(WebCore::AudioNode::finishDeref):

  • webaudio/AudioNode.h:

(WebCore::AudioNode::nodeType):

  • webaudio/AudioPannerNode.cpp:

(WebCore::AudioPannerNode::AudioPannerNode):
(WebCore::AudioPannerNode::notifyAudioSourcesConnectedToNode):

  • webaudio/BiquadFilterNode.cpp:

(WebCore::BiquadFilterNode::BiquadFilterNode):
(WebCore::BiquadFilterNode::setType):

  • webaudio/BiquadFilterNode.h:
  • webaudio/BiquadFilterNode.idl:
  • webaudio/BiquadProcessor.h:

(WebCore::BiquadProcessor::setType):

  • webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::ConvolverNode):

  • webaudio/DelayNode.cpp:

(WebCore::DelayNode::DelayNode):

  • webaudio/DynamicsCompressorNode.cpp:

(WebCore::DynamicsCompressorNode::DynamicsCompressorNode):

  • webaudio/HighPass2FilterNode.cpp:

(WebCore::HighPass2FilterNode::HighPass2FilterNode):

  • webaudio/JavaScriptAudioNode.cpp:

(WebCore::JavaScriptAudioNode::JavaScriptAudioNode):

  • webaudio/LowPass2FilterNode.cpp:

(WebCore::LowPass2FilterNode::LowPass2FilterNode):

  • webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode):

  • webaudio/RealtimeAnalyserNode.cpp:

(WebCore::RealtimeAnalyserNode::RealtimeAnalyserNode):

  • webaudio/WaveShaperNode.cpp:

(WebCore::WaveShaperNode::WaveShaperNode):

LayoutTests:

  • webaudio/biquadfilternode-basic-expected.txt: Added.
  • webaudio/biquadfilternode-basic.html: Added.
Location:
trunk
Files:
2 added
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r96524 r96525  
     12011-10-03  Chris Rogers  <crogers@google.com>
     2
     3        BiquadFilterNode .type attribute is not handled correctly
     4        https://bugs.webkit.org/show_bug.cgi?id=69182
     5
     6        Reviewed by Kenneth Russell.
     7
     8        * webaudio/biquadfilternode-basic-expected.txt: Added.
     9        * webaudio/biquadfilternode-basic.html: Added.
     10
    1112011-10-03  Chris Fleizach  <cfleizach@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r96524 r96525  
     12011-10-03  Chris Rogers  <crogers@google.com>
     2
     3        BiquadFilterNode .type attribute is not handled correctly
     4        https://bugs.webkit.org/show_bug.cgi?id=69182
     5
     6        Reviewed by Kenneth Russell.
     7
     8        Test: webaudio/biquadfilternode-basic.html
     9
     10        * platform/audio/AudioDSPKernelProcessor.cpp:
     11        (WebCore::AudioDSPKernelProcessor::initialize):
     12        * webaudio/AudioBufferSourceNode.cpp:
     13        (WebCore::AudioBufferSourceNode::AudioBufferSourceNode):
     14        * webaudio/AudioChannelMerger.cpp:
     15        (WebCore::AudioChannelMerger::AudioChannelMerger):
     16        * webaudio/AudioChannelSplitter.cpp:
     17        (WebCore::AudioChannelSplitter::AudioChannelSplitter):
     18        * webaudio/AudioDestinationNode.cpp:
     19        (WebCore::AudioDestinationNode::AudioDestinationNode):
     20        * webaudio/AudioGainNode.cpp:
     21        (WebCore::AudioGainNode::AudioGainNode):
     22        * webaudio/AudioNode.cpp:
     23        (WebCore::AudioNode::AudioNode):
     24        (WebCore::AudioNode::~AudioNode):
     25        (WebCore::AudioNode::setNodeType):
     26        (WebCore::AudioNode::ref):
     27        (WebCore::AudioNode::finishDeref):
     28        * webaudio/AudioNode.h:
     29        (WebCore::AudioNode::nodeType):
     30        * webaudio/AudioPannerNode.cpp:
     31        (WebCore::AudioPannerNode::AudioPannerNode):
     32        (WebCore::AudioPannerNode::notifyAudioSourcesConnectedToNode):
     33        * webaudio/BiquadFilterNode.cpp:
     34        (WebCore::BiquadFilterNode::BiquadFilterNode):
     35        (WebCore::BiquadFilterNode::setType):
     36        * webaudio/BiquadFilterNode.h:
     37        * webaudio/BiquadFilterNode.idl:
     38        * webaudio/BiquadProcessor.h:
     39        (WebCore::BiquadProcessor::setType):
     40        * webaudio/ConvolverNode.cpp:
     41        (WebCore::ConvolverNode::ConvolverNode):
     42        * webaudio/DelayNode.cpp:
     43        (WebCore::DelayNode::DelayNode):
     44        * webaudio/DynamicsCompressorNode.cpp:
     45        (WebCore::DynamicsCompressorNode::DynamicsCompressorNode):
     46        * webaudio/HighPass2FilterNode.cpp:
     47        (WebCore::HighPass2FilterNode::HighPass2FilterNode):
     48        * webaudio/JavaScriptAudioNode.cpp:
     49        (WebCore::JavaScriptAudioNode::JavaScriptAudioNode):
     50        * webaudio/LowPass2FilterNode.cpp:
     51        (WebCore::LowPass2FilterNode::LowPass2FilterNode):
     52        * webaudio/MediaElementAudioSourceNode.cpp:
     53        (WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode):
     54        * webaudio/RealtimeAnalyserNode.cpp:
     55        (WebCore::RealtimeAnalyserNode::RealtimeAnalyserNode):
     56        * webaudio/WaveShaperNode.cpp:
     57        (WebCore::WaveShaperNode::WaveShaperNode):
     58
    1592011-10-03  Chris Fleizach  <cfleizach@apple.com>
    260
  • trunk/Source/WebCore/platform/audio/AudioDSPKernelProcessor.cpp

    r95901 r96525  
    5757    for (unsigned i = 0; i < numberOfChannels(); ++i)
    5858        m_kernels.append(createKernel());
    59 
     59       
    6060    m_initialized = true;
     61    m_hasJustReset = true;
    6162}
    6263
  • trunk/Source/WebCore/webaudio/AudioBufferSourceNode.cpp

    r95901 r96525  
    6969    , m_pannerNode(0)
    7070{
    71     setType(NodeTypeAudioBufferSource);
     71    setNodeType(NodeTypeAudioBufferSource);
    7272
    7373    m_gain = AudioGain::create("gain", 1.0, 0.0, 1.0);
  • trunk/Source/WebCore/webaudio/AudioChannelMerger.cpp

    r95901 r96525  
    5252    addOutput(adoptPtr(new AudioNodeOutput(this, 1)));
    5353   
    54     setType(NodeTypeChannelMerger);
     54    setNodeType(NodeTypeChannelMerger);
    5555   
    5656    initialize();
  • trunk/Source/WebCore/webaudio/AudioChannelSplitter.cpp

    r95901 r96525  
    4747        addOutput(adoptPtr(new AudioNodeOutput(this, 1)));
    4848   
    49     setType(NodeTypeChannelSplitter);
     49    setNodeType(NodeTypeChannelSplitter);
    5050   
    5151    initialize();
  • trunk/Source/WebCore/webaudio/AudioDestinationNode.cpp

    r95901 r96525  
    4343    addInput(adoptPtr(new AudioNodeInput(this)));
    4444   
    45     setType(NodeTypeDestination);
     45    setNodeType(NodeTypeDestination);
    4646}
    4747
  • trunk/Source/WebCore/webaudio/AudioGainNode.cpp

    r95901 r96525  
    4646    addOutput(adoptPtr(new AudioNodeOutput(this, 1)));
    4747   
    48     setType(NodeTypeGain);
     48    setNodeType(NodeTypeGain);
    4949   
    5050    initialize();
  • trunk/Source/WebCore/webaudio/AudioNode.cpp

    r95901 r96525  
    3939AudioNode::AudioNode(AudioContext* context, double sampleRate)
    4040    : m_isInitialized(false)
    41     , m_type(NodeTypeUnknown)
     41    , m_nodeType(NodeTypeUnknown)
    4242    , m_context(context)
    4343    , m_sampleRate(sampleRate)
     
    6060{
    6161#if DEBUG_AUDIONODE_REFERENCES
    62     --s_nodeCount[type()];
    63     printf("%p: %d: AudioNode::~AudioNode() %d %d %d\n", this, type(), m_normalRefCount, m_connectionRefCount, m_disabledRefCount);
     62    --s_nodeCount[nodeType()];
     63    printf("%p: %d: AudioNode::~AudioNode() %d %d %d\n", this, nodeType(), m_normalRefCount, m_connectionRefCount, m_disabledRefCount);
    6464#endif
    6565}
     
    7575}
    7676
    77 void AudioNode::setType(NodeType type)
    78 {
    79     m_type = type;
     77void AudioNode::setNodeType(NodeType type)
     78{
     79    m_nodeType = type;
    8080
    8181#if DEBUG_AUDIONODE_REFERENCES
     
    197197
    198198#if DEBUG_AUDIONODE_REFERENCES
    199     printf("%p: %d: AudioNode::ref(%d) %d %d %d\n", this, type(), refType, m_normalRefCount, m_connectionRefCount, m_disabledRefCount);
     199    printf("%p: %d: AudioNode::ref(%d) %d %d %d\n", this, nodeType(), refType, m_normalRefCount, m_connectionRefCount, m_disabledRefCount);
    200200#endif
    201201
     
    269269   
    270270#if DEBUG_AUDIONODE_REFERENCES
    271     printf("%p: %d: AudioNode::deref(%d) %d %d %d\n", this, type(), refType, m_normalRefCount, m_connectionRefCount, m_disabledRefCount);
     271    printf("%p: %d: AudioNode::deref(%d) %d %d %d\n", this, nodeType(), refType, m_normalRefCount, m_connectionRefCount, m_disabledRefCount);
    272272#endif
    273273
     
    296296                // a tailTime attribute.  Then the AudioNode only needs to remain "active" for tailTime seconds after there are no
    297297                // longer any active connections.
    298                 if (type() != NodeTypeConvolver && type() != NodeTypeDelay) {
     298                if (nodeType() != NodeTypeConvolver && nodeType() != NodeTypeDelay) {
    299299                    m_isDisabled = true;
    300300                    for (unsigned i = 0; i < m_outputs.size(); ++i)
  • trunk/Source/WebCore/webaudio/AudioNode.h

    r95901 r96525  
    7575    };
    7676
    77     NodeType type() const { return m_type; }
    78     void setType(NodeType);
     77    NodeType nodeType() const { return m_nodeType; }
     78    void setNodeType(NodeType);
    7979
    8080    // We handle our own ref-counting because of the threading issues and subtle nature of
     
    149149private:
    150150    volatile bool m_isInitialized;
    151     NodeType m_type;
     151    NodeType m_nodeType;
    152152    RefPtr<AudioContext> m_context;
    153153    double m_sampleRate;
  • trunk/Source/WebCore/webaudio/AudioPannerNode.cpp

    r95901 r96525  
    6363    m_velocity = FloatPoint3D(0, 0, 0);
    6464   
    65     setType(NodeTypePanner);
     65    setNodeType(NodeTypePanner);
    6666
    6767    initialize();
     
    295295       
    296296    // First check if this node is an AudioBufferSourceNode.  If so, let it know about us so that doppler shift pitch can be taken into account.
    297     if (node->type() == NodeTypeAudioBufferSource) {
     297    if (node->nodeType() == NodeTypeAudioBufferSource) {
    298298        AudioBufferSourceNode* bufferSourceNode = reinterpret_cast<AudioBufferSourceNode*>(node);
    299299        bufferSourceNode->setPannerNode(this);
  • trunk/Source/WebCore/webaudio/BiquadFilterNode.cpp

    r95901 r96525  
    2929#include "BiquadFilterNode.h"
    3030
     31#include "ExceptionCode.h"
     32
    3133namespace WebCore {
    3234
     
    3941    biquadProcessor()->parameter2()->setContext(context);
    4042    biquadProcessor()->parameter3()->setContext(context);
    41     setType(NodeTypeBiquadFilter);
     43    setNodeType(NodeTypeBiquadFilter);
     44}
     45
     46void BiquadFilterNode::setType(unsigned short type, ExceptionCode& ec)
     47{
     48    if (type > BiquadProcessor::Allpass) {
     49        ec = NOT_SUPPORTED_ERR;
     50        return;
     51    }
     52   
     53    biquadProcessor()->setType(static_cast<BiquadProcessor::FilterType>(type));
    4254}
    4355
  • trunk/Source/WebCore/webaudio/BiquadFilterNode.h

    r95901 r96525  
    5353   
    5454    unsigned short type() { return biquadProcessor()->type(); }
    55     void setType(unsigned short type) { biquadProcessor()->setType(static_cast<BiquadProcessor::FilterType>(type)); }
     55    void setType(unsigned short type, ExceptionCode&);
    5656
    5757    AudioParam* frequency() { return biquadProcessor()->parameter1(); }
  • trunk/Source/WebCore/webaudio/BiquadFilterNode.idl

    r89269 r96525  
    3838        const unsigned short ALLPASS = 7;
    3939
    40         attribute unsigned short type;
     40        attribute unsigned short type
     41            setter raises(DOMException);
     42       
    4143        readonly attribute AudioParam frequency; // in Hertz
    4244        readonly attribute AudioParam Q; // Quality factor
  • trunk/Source/WebCore/webaudio/BiquadProcessor.h

    r95901 r96525  
    6868
    6969    FilterType type() const { return m_type; }
    70     void setType(FilterType type) { m_type = type; }
     70    void setType(FilterType type) { m_type = type; reset(); }
    7171
    7272private:
  • trunk/Source/WebCore/webaudio/ConvolverNode.cpp

    r95901 r96525  
    5252    addOutput(adoptPtr(new AudioNodeOutput(this, 2)));
    5353   
    54     setType(NodeTypeConvolver);
     54    setNodeType(NodeTypeConvolver);
    5555   
    5656    initialize();
  • trunk/Source/WebCore/webaudio/DelayNode.cpp

    r96270 r96525  
    3636    m_processor = adoptPtr(new DelayProcessor(sampleRate, 1));   
    3737    delayTime()->setContext(context);
    38     setType(NodeTypeDelay);
     38    setNodeType(NodeTypeDelay);
    3939}
    4040
  • trunk/Source/WebCore/webaudio/DynamicsCompressorNode.cpp

    r95901 r96525  
    4242    addOutput(adoptPtr(new AudioNodeOutput(this, 2)));
    4343   
    44     setType(NodeTypeDynamicsCompressor);
     44    setNodeType(NodeTypeDynamicsCompressor);
    4545   
    4646    initialize();
  • trunk/Source/WebCore/webaudio/HighPass2FilterNode.cpp

    r95901 r96525  
    3838    biquadProcessor()->parameter2()->setContext(context);
    3939    biquadProcessor()->parameter3()->setContext(context);
    40     setType(NodeTypeHighPass2Filter);
     40    setNodeType(NodeTypeHighPass2Filter);
    4141}
    4242
  • trunk/Source/WebCore/webaudio/JavaScriptAudioNode.cpp

    r95901 r96525  
    8282    addOutput(adoptPtr(new AudioNodeOutput(this, 2)));
    8383
    84     setType(NodeTypeJavaScript);
     84    setNodeType(NodeTypeJavaScript);
    8585
    8686    initialize();
  • trunk/Source/WebCore/webaudio/LowPass2FilterNode.cpp

    r95901 r96525  
    3838    biquadProcessor()->parameter2()->setContext(context);
    3939    biquadProcessor()->parameter3()->setContext(context);
    40     setType(NodeTypeLowPass2Filter);
     40    setNodeType(NodeTypeLowPass2Filter);
    4141}
    4242
  • trunk/Source/WebCore/webaudio/MediaElementAudioSourceNode.cpp

    r95901 r96525  
    4747    addOutput(adoptPtr(new AudioNodeOutput(this, 2)));
    4848   
    49     setType(NodeTypeMediaElementAudioSource);
     49    setNodeType(NodeTypeMediaElementAudioSource);
    5050
    5151    initialize();
  • trunk/Source/WebCore/webaudio/RealtimeAnalyserNode.cpp

    r95901 r96525  
    4040    addOutput(adoptPtr(new AudioNodeOutput(this, 2)));
    4141   
    42     setType(NodeTypeAnalyser);
     42    setNodeType(NodeTypeAnalyser);
    4343   
    4444    initialize();
  • trunk/Source/WebCore/webaudio/WaveShaperNode.cpp

    r95901 r96525  
    3636{
    3737    m_processor = adoptPtr(new WaveShaperProcessor(context->sampleRate(), 1));
    38     setType(NodeTypeWaveShaper);
     38    setNodeType(NodeTypeWaveShaper);
    3939}
    4040
Note: See TracChangeset for help on using the changeset viewer.