OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #ifndef MODULES_AUDIO_CODING_CODECS_G722_MAIN_INCLUDE_G722_INTERFACE_H_ | |
12 #define MODULES_AUDIO_CODING_CODECS_G722_MAIN_INCLUDE_G722_INTERFACE_H_ | |
13 | |
14 #include "webrtc/typedefs.h" | |
15 | |
16 /* | |
17 * Solution to support multiple instances | |
18 */ | |
19 | |
20 typedef struct WebRtcG722EncInst G722EncInst; | |
21 typedef struct WebRtcG722DecInst G722DecInst; | |
22 | |
23 /* | |
24 * Comfort noise constants | |
25 */ | |
26 | |
27 #define G722_WEBRTC_SPEECH 1 | |
28 #define G722_WEBRTC_CNG 2 | |
29 | |
30 #ifdef __cplusplus | |
31 extern "C" { | |
32 #endif | |
33 | |
34 | |
35 /**************************************************************************** | |
36 * WebRtcG722_CreateEncoder(...) | |
37 * | |
38 * Create memory used for G722 encoder | |
39 * | |
40 * Input: | |
41 * - G722enc_inst : G722 instance for encoder | |
42 * | |
43 * Return value : 0 - Ok | |
44 * -1 - Error | |
45 */ | |
46 int16_t WebRtcG722_CreateEncoder(G722EncInst **G722enc_inst); | |
47 | |
48 | |
49 /**************************************************************************** | |
50 * WebRtcG722_EncoderInit(...) | |
51 * | |
52 * This function initializes a G722 instance | |
53 * | |
54 * Input: | |
55 * - G722enc_inst : G722 instance, i.e. the user that should receive | |
56 * be initialized | |
57 * | |
58 * Return value : 0 - Ok | |
59 * -1 - Error | |
60 */ | |
61 | |
62 int16_t WebRtcG722_EncoderInit(G722EncInst *G722enc_inst); | |
63 | |
64 | |
65 /**************************************************************************** | |
66 * WebRtcG722_FreeEncoder(...) | |
67 * | |
68 * Free the memory used for G722 encoder | |
69 * | |
70 * Input: | |
71 * - G722enc_inst : G722 instance for encoder | |
72 * | |
73 * Return value : 0 - Ok | |
74 * -1 - Error | |
75 */ | |
76 int WebRtcG722_FreeEncoder(G722EncInst *G722enc_inst); | |
77 | |
78 | |
79 | |
80 /**************************************************************************** | |
81 * WebRtcG722_Encode(...) | |
82 * | |
83 * This function encodes G722 encoded data. | |
84 * | |
85 * Input: | |
86 * - G722enc_inst : G722 instance, i.e. the user that should encode | |
87 * a packet | |
88 * - speechIn : Input speech vector | |
89 * - len : Samples in speechIn | |
90 * | |
91 * Output: | |
92 * - encoded : The encoded data vector | |
93 * | |
94 * Return value : Length (in bytes) of coded data | |
95 */ | |
96 | |
97 size_t WebRtcG722_Encode(G722EncInst* G722enc_inst, | |
98 const int16_t* speechIn, | |
99 size_t len, | |
100 uint8_t* encoded); | |
101 | |
102 | |
103 /**************************************************************************** | |
104 * WebRtcG722_CreateDecoder(...) | |
105 * | |
106 * Create memory used for G722 encoder | |
107 * | |
108 * Input: | |
109 * - G722dec_inst : G722 instance for decoder | |
110 * | |
111 * Return value : 0 - Ok | |
112 * -1 - Error | |
113 */ | |
114 int16_t WebRtcG722_CreateDecoder(G722DecInst **G722dec_inst); | |
115 | |
116 /**************************************************************************** | |
117 * WebRtcG722_DecoderInit(...) | |
118 * | |
119 * This function initializes a G722 instance | |
120 * | |
121 * Input: | |
122 * - inst : G722 instance | |
123 */ | |
124 | |
125 void WebRtcG722_DecoderInit(G722DecInst* inst); | |
126 | |
127 /**************************************************************************** | |
128 * WebRtcG722_FreeDecoder(...) | |
129 * | |
130 * Free the memory used for G722 decoder | |
131 * | |
132 * Input: | |
133 * - G722dec_inst : G722 instance for decoder | |
134 * | |
135 * Return value : 0 - Ok | |
136 * -1 - Error | |
137 */ | |
138 | |
139 int WebRtcG722_FreeDecoder(G722DecInst *G722dec_inst); | |
140 | |
141 | |
142 /**************************************************************************** | |
143 * WebRtcG722_Decode(...) | |
144 * | |
145 * This function decodes a packet with G729 frame(s). Output speech length | |
146 * will be a multiple of 80 samples (80*frames/packet). | |
147 * | |
148 * Input: | |
149 * - G722dec_inst : G722 instance, i.e. the user that should decode | |
150 * a packet | |
151 * - encoded : Encoded G722 frame(s) | |
152 * - len : Bytes in encoded vector | |
153 * | |
154 * Output: | |
155 * - decoded : The decoded vector | |
156 * - speechType : 1 normal, 2 CNG (Since G722 does not have its own | |
157 * DTX/CNG scheme it should always return 1) | |
158 * | |
159 * Return value : Samples in decoded vector | |
160 */ | |
161 | |
162 size_t WebRtcG722_Decode(G722DecInst *G722dec_inst, | |
163 const uint8_t* encoded, | |
164 size_t len, | |
165 int16_t *decoded, | |
166 int16_t *speechType); | |
167 | |
168 /**************************************************************************** | |
169 * WebRtcG722_Version(...) | |
170 * | |
171 * Get a string with the current version of the codec | |
172 */ | |
173 | |
174 int16_t WebRtcG722_Version(char *versionStr, short len); | |
175 | |
176 | |
177 #ifdef __cplusplus | |
178 } | |
179 #endif | |
180 | |
181 | |
182 #endif /* MODULES_AUDIO_CODING_CODECS_G722_MAIN_INCLUDE_G722_INCLUDE_H_ */ | |
OLD | NEW |