| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2011, Google Inc. All rights reserved. | 2  * Copyright (C) 2011, Google Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions | 5  * modification, are permitted provided that the following conditions | 
| 6  * are met: | 6  * are met: | 
| 7  * 1.  Redistributions of source code must retain the above copyright | 7  * 1.  Redistributions of source code must retain the above copyright | 
| 8  *    notice, this list of conditions and the following disclaimer. | 8  *    notice, this list of conditions and the following disclaimer. | 
| 9  * 2.  Redistributions in binary form must reproduce the above copyright | 9  * 2.  Redistributions in binary form must reproduce the above copyright | 
| 10  *    notice, this list of conditions and the following disclaimer in the | 10  *    notice, this list of conditions and the following disclaimer in the | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 31 #include "platform/audio/UpSampler.h" | 31 #include "platform/audio/UpSampler.h" | 
| 32 #include "modules/webaudio/WaveShaperProcessor.h" | 32 #include "modules/webaudio/WaveShaperProcessor.h" | 
| 33 #include "wtf/OwnPtr.h" | 33 #include "wtf/OwnPtr.h" | 
| 34 | 34 | 
| 35 namespace WebCore { | 35 namespace WebCore { | 
| 36 | 36 | 
| 37 class WaveShaperProcessor; | 37 class WaveShaperProcessor; | 
| 38 | 38 | 
| 39 // WaveShaperDSPKernel is an AudioDSPKernel and is responsible for non-linear di
    stortion on one channel. | 39 // WaveShaperDSPKernel is an AudioDSPKernel and is responsible for non-linear di
    stortion on one channel. | 
| 40 | 40 | 
| 41 class WaveShaperDSPKernel : public AudioDSPKernel { | 41 class WaveShaperDSPKernel FINAL : public AudioDSPKernel { | 
| 42 public: | 42 public: | 
| 43     explicit WaveShaperDSPKernel(WaveShaperProcessor*); | 43     explicit WaveShaperDSPKernel(WaveShaperProcessor*); | 
| 44 | 44 | 
| 45     // AudioDSPKernel | 45     // AudioDSPKernel | 
| 46     virtual void process(const float* source, float* dest, size_t framesToProces
    s); | 46     virtual void process(const float* source, float* dest, size_t framesToProces
    s) OVERRIDE; | 
| 47     virtual void reset(); | 47     virtual void reset() OVERRIDE; | 
| 48     virtual double tailTime() const OVERRIDE { return 0; } | 48     virtual double tailTime() const OVERRIDE { return 0; } | 
| 49     virtual double latencyTime() const OVERRIDE; | 49     virtual double latencyTime() const OVERRIDE; | 
| 50 | 50 | 
| 51     // Oversampling requires more resources, so let's only allocate them if need
    ed. | 51     // Oversampling requires more resources, so let's only allocate them if need
    ed. | 
| 52     void lazyInitializeOversampling(); | 52     void lazyInitializeOversampling(); | 
| 53 | 53 | 
| 54 protected: | 54 protected: | 
| 55     // Apply the shaping curve. | 55     // Apply the shaping curve. | 
| 56     void processCurve(const float* source, float* dest, size_t framesToProcess); | 56     void processCurve(const float* source, float* dest, size_t framesToProcess); | 
| 57 | 57 | 
| 58     // Use up-sampling, process at the higher sample-rate, then down-sample. | 58     // Use up-sampling, process at the higher sample-rate, then down-sample. | 
| 59     void processCurve2x(const float* source, float* dest, size_t framesToProcess
    ); | 59     void processCurve2x(const float* source, float* dest, size_t framesToProcess
    ); | 
| 60     void processCurve4x(const float* source, float* dest, size_t framesToProcess
    ); | 60     void processCurve4x(const float* source, float* dest, size_t framesToProcess
    ); | 
| 61 | 61 | 
| 62     WaveShaperProcessor* waveShaperProcessor() { return static_cast<WaveShaperPr
    ocessor*>(processor()); } | 62     WaveShaperProcessor* waveShaperProcessor() { return static_cast<WaveShaperPr
    ocessor*>(processor()); } | 
| 63 | 63 | 
| 64     // Oversampling. | 64     // Oversampling. | 
| 65     OwnPtr<AudioFloatArray> m_tempBuffer; | 65     OwnPtr<AudioFloatArray> m_tempBuffer; | 
| 66     OwnPtr<AudioFloatArray> m_tempBuffer2; | 66     OwnPtr<AudioFloatArray> m_tempBuffer2; | 
| 67     OwnPtr<UpSampler> m_upSampler; | 67     OwnPtr<UpSampler> m_upSampler; | 
| 68     OwnPtr<DownSampler> m_downSampler; | 68     OwnPtr<DownSampler> m_downSampler; | 
| 69     OwnPtr<UpSampler> m_upSampler2; | 69     OwnPtr<UpSampler> m_upSampler2; | 
| 70     OwnPtr<DownSampler> m_downSampler2; | 70     OwnPtr<DownSampler> m_downSampler2; | 
| 71 }; | 71 }; | 
| 72 | 72 | 
| 73 } // namespace WebCore | 73 } // namespace WebCore | 
| 74 | 74 | 
| 75 #endif // WaveShaperDSPKernel_h | 75 #endif // WaveShaperDSPKernel_h | 
| OLD | NEW | 
|---|