1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  */
4 #ifndef BUFFER_MANAGER_H
5 #define BUFFER_MANAGER_H
6 
7 #include <stdint.h>
8 
9 struct BufferManager_;
10 
11 typedef struct BufferManager_ BufferManager;
12 
13 typedef enum
14 {
15     BUFFER_MANAGER_CACHING = 0,
16     BUFFER_MANAGER_CACHE_OK = 1,
17     BUFFER_MANAGER_FLUSH = 2
18 } BufferManagerStatus;
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 // Buffer management for decoupling codec frame size and vqe frame size,
25 // vqe frame size must be larger than codec frame size.
26 // When init buffer manager, input buffer should inited by
27 // buffer_manager_create(codec_frame_size, vqe_frame_size)
28 // output buffer should inited by
29 // buffer_manager_create(vqe_frame_size, codec_frame_size)
30 BufferManager *buffer_manager_create(int inlen, int outlen, int sample_size);
31 
32 void buffer_manager_destroy(BufferManager *st);
33 
34 BufferManagerStatus buffer_manager_process(BufferManager *st, void *inbuf, int inlen, void *outbuf, int outlen);
35 
36 #ifdef __cplusplus
37 }
38 #endif
39 
40 #endif