ring_buffer.h revision e48d5845c8b35de2ab73ea055c18a61fa3a9f0be
1e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/* 2e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * 4e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Use of this source code is governed by a BSD-style license 5e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * that can be found in the LICENSE file in the root of the source 6e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * tree. An additional intellectual property rights grant can be found 7e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * in the file PATENTS. All contributing project authors may 8e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * be found in the AUTHORS file in the root of the source tree. 9e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */ 10e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 11e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/* 12e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Specifies the interface for the AEC generic buffer. 13e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */ 14e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 15e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_UTILITY_RING_BUFFER_H_ 16e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define WEBRTC_MODULES_AUDIO_PROCESSING_UTILITY_RING_BUFFER_H_ 17e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 18e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Determines buffer datatype 19e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurenttypedef short bufdata_t; 20e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 21e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Unless otherwise specified, functions return 0 on success and -1 on error 22e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_CreateBuffer(void **bufInst, int size); 23e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_InitBuffer(void *bufInst); 24e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_FreeBuffer(void *bufInst); 25e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 26e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Returns number of samples read 27e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_ReadBuffer(void *bufInst, bufdata_t *data, int size); 28e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 29e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Returns number of samples written 30e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_WriteBuffer(void *bufInst, const bufdata_t *data, int size); 31e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 32e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Returns number of samples flushed 33e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_FlushBuffer(void *bufInst, int size); 34e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 35e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Returns number of samples stuffed 36e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_StuffBuffer(void *bufInst, int size); 37e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 38e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent// Returns number of samples in buffer 39e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentint WebRtcApm_get_buffer_size(const void *bufInst); 40e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 41e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif // WEBRTC_MODULES_AUDIO_PROCESSING_UTILITY_RING_BUFFER_H_ 42