18df0bea9c58e983ded6819914c532edf52737cb7José Fonseca/* 28df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * Copyright (C) 2011 Google Inc. All rights reserved. 38df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * 48df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * Redistribution and use in source and binary forms, with or without 58df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * modification, are permitted provided that the following conditions 68df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * are met: 78df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * 88df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * 1. Redistributions of source code must retain the above copyright 98df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * notice, this list of conditions and the following disclaimer. 108df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * 2. Redistributions in binary form must reproduce the above copyright 118df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * notice, this list of conditions and the following disclaimer in the 128df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * documentation and/or other materials provided with the distribution. 138df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 148df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * its contributors may be used to endorse or promote products derived 158df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * from this software without specific prior written permission. 168df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * 178df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268df0bea9c58e983ded6819914c532edf52737cb7José Fonseca * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278df0bea9c58e983ded6819914c532edf52737cb7José Fonseca */ 288df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 298df0bea9c58e983ded6819914c532edf52737cb7José Fonseca#ifndef ZeroPole_h 308df0bea9c58e983ded6819914c532edf52737cb7José Fonseca#define ZeroPole_h 31dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca 328df0bea9c58e983ded6819914c532edf52737cb7José Fonseca#include "platform/PlatformExport.h" 338df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 348df0bea9c58e983ded6819914c532edf52737cb7José Fonsecanamespace blink { 358df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 368df0bea9c58e983ded6819914c532edf52737cb7José Fonseca// ZeroPole is a simple filter with one zero and one pole. 378df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 388df0bea9c58e983ded6819914c532edf52737cb7José Fonsecaclass PLATFORM_EXPORT ZeroPole { 398df0bea9c58e983ded6819914c532edf52737cb7José Fonsecapublic: 408df0bea9c58e983ded6819914c532edf52737cb7José Fonseca ZeroPole() 41dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca : m_zero(0) 428df0bea9c58e983ded6819914c532edf52737cb7José Fonseca , m_pole(0) 438df0bea9c58e983ded6819914c532edf52737cb7José Fonseca , m_lastX(0) 448df0bea9c58e983ded6819914c532edf52737cb7José Fonseca , m_lastY(0) 458df0bea9c58e983ded6819914c532edf52737cb7José Fonseca { 468df0bea9c58e983ded6819914c532edf52737cb7José Fonseca } 478df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 488df0bea9c58e983ded6819914c532edf52737cb7José Fonseca void process(const float *source, float *destination, unsigned framesToProcess); 498df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 508df0bea9c58e983ded6819914c532edf52737cb7José Fonseca // Reset filter state. 51dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca void reset() { m_lastX = 0; m_lastY = 0; } 528df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 538df0bea9c58e983ded6819914c532edf52737cb7José Fonseca void setZero(float zero) { m_zero = zero; } 548df0bea9c58e983ded6819914c532edf52737cb7José Fonseca void setPole(float pole) { m_pole = pole; } 55dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca 568df0bea9c58e983ded6819914c532edf52737cb7José Fonseca float zero() const { return m_zero; } 578df0bea9c58e983ded6819914c532edf52737cb7José Fonseca float pole() const { return m_pole; } 588df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 598df0bea9c58e983ded6819914c532edf52737cb7José Fonsecaprivate: 608df0bea9c58e983ded6819914c532edf52737cb7José Fonseca float m_zero; 618df0bea9c58e983ded6819914c532edf52737cb7José Fonseca float m_pole; 628df0bea9c58e983ded6819914c532edf52737cb7José Fonseca float m_lastX; 638df0bea9c58e983ded6819914c532edf52737cb7José Fonseca float m_lastY; 64dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca}; 65dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca 66dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca} // namespace blink 678df0bea9c58e983ded6819914c532edf52737cb7José Fonseca 68dc6bcc92ee78e09bb1b5baec84e229817dfed7f4José Fonseca#endif // ZeroPole_h 698df0bea9c58e983ded6819914c532edf52737cb7José Fonseca