Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / modules / audio_coding / codecs / g711 / include / g711_interface.h
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_G711_MAIN_INTERFACE_G711_INTERFACE_H_
12 #define MODULES_AUDIO_CODING_CODECS_G711_MAIN_INTERFACE_G711_INTERFACE_H_
13
14 #include "webrtc/typedefs.h"
15
16 // Comfort noise constants
17 #define G711_WEBRTC_SPEECH 1
18 #define G711_WEBRTC_CNG 2
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 /****************************************************************************
25  * WebRtcG711_EncodeA(...)
26  *
27  * This function encodes a G711 A-law frame and inserts it into a packet.
28  * Input speech length has be of any length.
29  *
30  * Input:
31  *      - state              : Dummy state to make this codec look more like
32  *                             other codecs
33  *      - speechIn           : Input speech vector
34  *      - len                : Samples in speechIn
35  *
36  * Output:
37  *      - encoded            : The encoded data vector
38  *
39  * Return value              : >0 - Length (in bytes) of coded data
40  *                             -1 - Error
41  */
42
43 int16_t WebRtcG711_EncodeA(void* state,
44                            int16_t* speechIn,
45                            int16_t len,
46                            int16_t* encoded);
47
48 /****************************************************************************
49  * WebRtcG711_EncodeU(...)
50  *
51  * This function encodes a G711 U-law frame and inserts it into a packet.
52  * Input speech length has be of any length.
53  *
54  * Input:
55  *      - state              : Dummy state to make this codec look more like
56  *                             other codecs
57  *      - speechIn           : Input speech vector
58  *      - len                : Samples in speechIn
59  *
60  * Output:
61  *      - encoded            : The encoded data vector
62  *
63  * Return value              : >0 - Length (in bytes) of coded data
64  *                             -1 - Error
65  */
66
67 int16_t WebRtcG711_EncodeU(void* state,
68                            int16_t* speechIn,
69                            int16_t len,
70                            int16_t* encoded);
71
72 /****************************************************************************
73  * WebRtcG711_DecodeA(...)
74  *
75  * This function decodes a packet G711 A-law frame.
76  *
77  * Input:
78  *      - state              : Dummy state to make this codec look more like
79  *                             other codecs
80  *      - encoded            : Encoded data
81  *      - len                : Bytes in encoded vector
82  *
83  * Output:
84  *      - decoded            : The decoded vector
85  *      - speechType         : 1 normal, 2 CNG (for G711 it should
86  *                             always return 1 since G711 does not have a
87  *                             built-in DTX/CNG scheme)
88  *
89  * Return value              : >0 - Samples in decoded vector
90  *                             -1 - Error
91  */
92
93 int16_t WebRtcG711_DecodeA(void* state,
94                            int16_t* encoded,
95                            int16_t len,
96                            int16_t* decoded,
97                            int16_t* speechType);
98
99 /****************************************************************************
100  * WebRtcG711_DecodeU(...)
101  *
102  * This function decodes a packet G711 U-law frame.
103  *
104  * Input:
105  *      - state              : Dummy state to make this codec look more like
106  *                             other codecs
107  *      - encoded            : Encoded data
108  *      - len                : Bytes in encoded vector
109  *
110  * Output:
111  *      - decoded            : The decoded vector
112  *      - speechType         : 1 normal, 2 CNG (for G711 it should
113  *                             always return 1 since G711 does not have a
114  *                             built-in DTX/CNG scheme)
115  *
116  * Return value              : >0 - Samples in decoded vector
117  *                             -1 - Error
118  */
119
120 int16_t WebRtcG711_DecodeU(void* state,
121                            int16_t* encoded,
122                            int16_t len,
123                            int16_t* decoded,
124                            int16_t* speechType);
125
126 /****************************************************************************
127  * WebRtcG711_DurationEst(...)
128  *
129  * This function estimates the duration of a G711 packet in samples.
130  *
131  * Input:
132  *      - state              : Dummy state to make this codec look more like
133  *                             other codecs
134  *      - payload            : Encoded data
135  *      - payloadLengthBytes : Bytes in encoded vector
136  *
137  * Return value              : The duration of the packet in samples, which is
138  *                             just payload_length_bytes, since G.711 uses one
139  *                             byte per sample.
140  */
141
142 int WebRtcG711_DurationEst(void* state,
143                            const uint8_t* payload,
144                            int payload_length_bytes);
145
146 /**********************************************************************
147 * WebRtcG711_Version(...)
148 *
149 * This function gives the version string of the G.711 codec.
150 *
151 * Input:
152 *      - lenBytes:     the size of Allocated space (in Bytes) where
153 *                      the version number is written to (in string format).
154 *
155 * Output:
156 *      - version:      Pointer to a buffer where the version number is
157 *                      written to.
158 *
159 */
160
161 int16_t WebRtcG711_Version(char* version, int16_t lenBytes);
162
163 #ifdef __cplusplus
164 }
165 #endif
166
167 #endif /* MODULES_AUDIO_CODING_CODECS_G711_MAIN_INTERFACE_G711_INTERFACE_H_ */