1e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block/* 2e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 4e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * Redistribution and use in source and binary forms, with or without 5e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * modification, are permitted provided that the following conditions 6e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * are met: 7e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 8e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 1. Redistributions of source code must retain the above copyright 9e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * notice, this list of conditions and the following disclaimer. 10e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 2. Redistributions in binary form must reproduce the above copyright 11e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * notice, this list of conditions and the following disclaimer in the 12e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * documentation and/or other materials provided with the distribution. 13e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * its contributors may be used to endorse or promote products derived 15e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * from this software without specific prior written permission. 16e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 17e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block */ 28e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 29cad810f21b803229eb11403f9209855525a25d57Steve Block#ifndef WebAudioDevice_h 30cad810f21b803229eb11403f9209855525a25d57Steve Block#define WebAudioDevice_h 31e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 32cad810f21b803229eb11403f9209855525a25d57Steve Block#include "WebVector.h" 33e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 34cad810f21b803229eb11403f9209855525a25d57Steve Blocknamespace WebKit { 35e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 36cad810f21b803229eb11403f9209855525a25d57Steve Block// Abstract interface to the Chromium audio system. 37e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 38cad810f21b803229eb11403f9209855525a25d57Steve Blockclass WebAudioDevice { 39e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockpublic: 40cad810f21b803229eb11403f9209855525a25d57Steve Block class RenderCallback { 41cad810f21b803229eb11403f9209855525a25d57Steve Block public: 42cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void render(const WebVector<float*>& audioData, size_t numberOfFrames) = 0; 43cad810f21b803229eb11403f9209855525a25d57Steve Block protected: 44cad810f21b803229eb11403f9209855525a25d57Steve Block virtual ~RenderCallback() { } 45cad810f21b803229eb11403f9209855525a25d57Steve Block }; 46cad810f21b803229eb11403f9209855525a25d57Steve Block 47cad810f21b803229eb11403f9209855525a25d57Steve Block virtual ~WebAudioDevice() { } 48cad810f21b803229eb11403f9209855525a25d57Steve Block 49cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void start() = 0; 50cad810f21b803229eb11403f9209855525a25d57Steve Block virtual void stop() = 0; 512bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual double sampleRate() = 0; 52e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block}; 53e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 54cad810f21b803229eb11403f9209855525a25d57Steve Block} // namespace WebKit 55e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 56cad810f21b803229eb11403f9209855525a25d57Steve Block#endif // WebAudioDevice_h 57