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