Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(734)

Unified Diff: Source/core/platform/audio/UpSampler.h

Issue 15619003: Add support for WaveShaperNode.oversample (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: change TestExpectations in middle of file Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/platform/audio/DownSampler.cpp ('k') | Source/core/platform/audio/UpSampler.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/platform/audio/UpSampler.h
diff --git a/Source/core/animation/Animation.h b/Source/core/platform/audio/UpSampler.h
similarity index 56%
copy from Source/core/animation/Animation.h
copy to Source/core/platform/audio/UpSampler.h
index f72d57ac5e5fd993ea4f360163ee7e351343b920..ebd3993509884052d508a8aff0702ea64d6e19ba 100644
--- a/Source/core/animation/Animation.h
+++ b/Source/core/platform/audio/UpSampler.h
@@ -28,43 +28,49 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef Animation_h
-#define Animation_h
+#ifndef UpSampler_h
+#define UpSampler_h
-#include "core/animation/AnimationEffect.h"
-#include "core/animation/TimedItem.h"
-#include "wtf/RefPtr.h"
+#include "core/platform/audio/AudioArray.h"
+#include "core/platform/audio/DirectConvolver.h"
namespace WebCore {
-class Element;
-
-class Animation FINAL : public TimedItem {
+// UpSampler up-samples the source stream by a factor of 2x.
+class UpSampler {
public:
- static PassRefPtr<Animation> create(PassRefPtr<Element>, PassRefPtr<AnimationEffect>, const Timing&);
- virtual ~Animation();
+ UpSampler(size_t inputBlockSize);
+
+ // The destination buffer |destP| is of size sourceFramesToProcess * 2.
+ void process(const float* sourceP, float* destP, size_t sourceFramesToProcess);
- const AnimationEffect::CompositableValueMap* compositableValues() const
- {
- ASSERT(m_compositableValues);
- return m_compositableValues.get();
- }
+ void reset();
-protected:
- virtual void applyEffects(bool previouslyActiveOrInEffect);
- virtual void clearEffects();
- virtual void updateChildrenAndEffects(bool) const OVERRIDE FINAL;
+ // Latency based on the source sample-rate.
+ size_t latencyFrames() const;
private:
- Animation(PassRefPtr<Element>, PassRefPtr<AnimationEffect>, const Timing&);
+ enum { DefaultKernelSize = 128 };
+
+ size_t m_inputBlockSize;
+
+ // Computes ideal band-limited filter coefficients to sample in between each source sample-frame.
+ // This filter will be used to compute the odd sample-frames of the output.
+ void initializeKernel();
+ AudioFloatArray m_kernel;
+
+ // Computes the odd sample-frames of the output.
+ DirectConvolver m_convolver;
+
+ AudioFloatArray m_tempBuffer;
- RefPtr<Element> m_target;
- RefPtr<AnimationEffect> m_effect;
- bool m_isInTargetActiveAnimationsList;
- OwnPtr<AnimationEffect::CompositableValueMap> m_compositableValues;
+ // Delay line for generating the even sample-frames of the output.
+ // The source samples are delayed exactly to match the linear phase delay of the FIR filter (convolution)
+ // used to generate the odd sample-frames of the output.
+ AudioFloatArray m_inputBuffer;
};
} // namespace WebCore
-#endif
+#endif // UpSampler_h
« no previous file with comments | « Source/core/platform/audio/DownSampler.cpp ('k') | Source/core/platform/audio/UpSampler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698