198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/* Copyright (C) 2007 Jean-Marc Valin 298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project File: speex_buffer.h 498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project This is a very simple ring buffer implementation. It is not thread-safe 598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project so you need to do your own locking. 698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project Redistribution and use in source and binary forms, with or without 898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project modification, are permitted provided that the following conditions are 998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project met: 1098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1. Redistributions of source code must retain the above copyright notice, 1298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project this list of conditions and the following disclaimer. 1398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 2. Redistributions in binary form must reproduce the above copyright 1598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project notice, this list of conditions and the following disclaimer in the 1698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project documentation and/or other materials provided with the distribution. 1798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3. The name of the author may not be used to endorse or promote products 1998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project derived from this software without specific prior written permission. 2098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 2198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 2598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 2998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 3098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project POSSIBILITY OF SUCH DAMAGE. 3298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project*/ 3398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#ifndef SPEEX_BUFFER_H 3598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#define SPEEX_BUFFER_H 3698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#include "speex/speex_types.h" 3898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#ifdef __cplusplus 4098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectextern "C" { 4198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#endif 4298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 4398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectstruct SpeexBuffer_; 4498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projecttypedef struct SpeexBuffer_ SpeexBuffer; 4598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 4698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source ProjectSpeexBuffer *speex_buffer_init(int size); 4798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 4898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectvoid speex_buffer_destroy(SpeexBuffer *st); 4998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectint speex_buffer_write(SpeexBuffer *st, void *data, int len); 5198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectint speex_buffer_writezeros(SpeexBuffer *st, int len); 5398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectint speex_buffer_read(SpeexBuffer *st, void *data, int len); 5598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectint speex_buffer_get_available(SpeexBuffer *st); 5798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectint speex_buffer_resize(SpeexBuffer *st, int len); 5998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#ifdef __cplusplus 6198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 6298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#endif 6398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project#endif 6598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 69