blob: 89159ce1c06a4cb29e1710d7dd6fff2c6a4e468f [file] [log] [blame]
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +00001/*
2 * Copyright (c) 2012 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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef MODULES_AUDIO_CODING_CODECS_OPUS_OPUS_INTERFACE_H_
12#define MODULES_AUDIO_CODING_CODECS_OPUS_OPUS_INTERFACE_H_
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +000013
Peter Kastingdce40cf2015-08-24 14:52:23 -070014#include <stddef.h>
Niels Möllera12c42a2018-07-25 16:05:48 +020015#include <stdint.h>
Peter Kastingdce40cf2015-08-24 14:52:23 -070016
Alex Luebseeb27652017-11-20 11:13:56 -080017#include "modules/audio_coding/codecs/opus/opus_inst.h"
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +000018
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23// Opaque wrapper types for the codec state.
24typedef struct WebRtcOpusEncInst OpusEncInst;
25typedef struct WebRtcOpusDecInst OpusDecInst;
26
minyue@webrtc.org7dba7862015-01-20 16:01:50 +000027/****************************************************************************
28 * WebRtcOpus_EncoderCreate(...)
29 *
Alex Loiko50b8c392019-04-03 15:12:01 +020030 * This function creates an Opus encoder that encodes mono or stereo.
minyue@webrtc.org7dba7862015-01-20 16:01:50 +000031 *
32 * Input:
Alex Loiko50b8c392019-04-03 15:12:01 +020033 * - channels : number of channels; 1 or 2.
minyue@webrtc.org7dba7862015-01-20 16:01:50 +000034 * - application : 0 - VOIP applications.
35 * Favor speech intelligibility.
36 * 1 - Audio applications.
37 * Favor faithfulness to the original input.
Karl Wiberg7e7c5c32019-05-21 11:50:32 +020038 * - sample_rate_hz : sample rate of input audio
minyue@webrtc.org7dba7862015-01-20 16:01:50 +000039 *
40 * Output:
41 * - inst : a pointer to Encoder context that is created
42 * if success.
43 *
44 * Return value : 0 - Success
45 * -1 - Error
46 */
47int16_t WebRtcOpus_EncoderCreate(OpusEncInst** inst,
Peter Kasting69558702016-01-12 16:26:35 -080048 size_t channels,
Karl Wiberg7e7c5c32019-05-21 11:50:32 +020049 int32_t application,
50 int sample_rate_hz);
minyue@webrtc.org7dba7862015-01-20 16:01:50 +000051
Alex Loiko50b8c392019-04-03 15:12:01 +020052/****************************************************************************
53 * WebRtcOpus_MultistreamEncoderCreate(...)
54 *
55 * This function creates an Opus encoder with any supported channel count.
56 *
57 * Input:
Alex Loikoe5b94162019-04-08 17:19:41 +020058 * - channels : number of channels in the input of the encoder.
Alex Loiko50b8c392019-04-03 15:12:01 +020059 * - application : 0 - VOIP applications.
60 * Favor speech intelligibility.
61 * 1 - Audio applications.
62 * Favor faithfulness to the original input.
Alex Loikoe5b94162019-04-08 17:19:41 +020063 * - streams : number of streams, as described in RFC 7845.
Alex Loiko50b8c392019-04-03 15:12:01 +020064 * - coupled_streams : number of coupled streams, as described in
65 * RFC 7845.
66 * - channel_mapping : the channel mapping; pointer to array of
67 * `channel` bytes, as described in RFC 7845.
68 *
69 * Output:
70 * - inst : a pointer to Encoder context that is created
71 * if success.
72 *
73 * Return value : 0 - Success
74 * -1 - Error
75 */
76int16_t WebRtcOpus_MultistreamEncoderCreate(
77 OpusEncInst** inst,
78 size_t channels,
79 int32_t application,
Alex Loikoe5b94162019-04-08 17:19:41 +020080 size_t streams,
Alex Loiko50b8c392019-04-03 15:12:01 +020081 size_t coupled_streams,
82 const unsigned char* channel_mapping);
83
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +000084int16_t WebRtcOpus_EncoderFree(OpusEncInst* inst);
85
86/****************************************************************************
87 * WebRtcOpus_Encode(...)
88 *
89 * This function encodes audio as a series of Opus frames and inserts
90 * it into a packet. Input buffer can be any length.
91 *
92 * Input:
93 * - inst : Encoder context
94 * - audio_in : Input speech data buffer
minyue@webrtc.orgecbe0aa2013-08-12 06:48:09 +000095 * - samples : Samples per channel in audio_in
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +000096 * - length_encoded_buffer : Output buffer size
97 *
98 * Output:
99 * - encoded : Output compressed data buffer
100 *
minyue@webrtc.org0ca768b2014-12-11 16:09:35 +0000101 * Return value : >=0 - Length (in bytes) of coded data
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000102 * -1 - Error
103 */
Peter Kastingbba78072015-06-11 19:02:46 -0700104int WebRtcOpus_Encode(OpusEncInst* inst,
105 const int16_t* audio_in,
Peter Kastingdce40cf2015-08-24 14:52:23 -0700106 size_t samples,
107 size_t length_encoded_buffer,
Peter Kastingbba78072015-06-11 19:02:46 -0700108 uint8_t* encoded);
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000109
110/****************************************************************************
111 * WebRtcOpus_SetBitRate(...)
112 *
113 * This function adjusts the target bitrate of the encoder.
114 *
115 * Input:
116 * - inst : Encoder context
117 * - rate : New target bitrate
118 *
119 * Return value : 0 - Success
120 * -1 - Error
121 */
122int16_t WebRtcOpus_SetBitRate(OpusEncInst* inst, int32_t rate);
123
minyue@webrtc.org04546882014-03-07 08:55:48 +0000124/****************************************************************************
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000125 * WebRtcOpus_SetPacketLossRate(...)
126 *
127 * This function configures the encoder's expected packet loss percentage.
128 *
129 * Input:
130 * - inst : Encoder context
131 * - loss_rate : loss percentage in the range 0-100, inclusive.
132 * Return value : 0 - Success
133 * -1 - Error
134 */
135int16_t WebRtcOpus_SetPacketLossRate(OpusEncInst* inst, int32_t loss_rate);
136
minyue@webrtc.org0040a6e2014-08-04 14:41:57 +0000137/****************************************************************************
minyue@webrtc.orgadee8f92014-09-03 12:28:06 +0000138 * WebRtcOpus_SetMaxPlaybackRate(...)
minyue@webrtc.org0040a6e2014-08-04 14:41:57 +0000139 *
minyue@webrtc.orgadee8f92014-09-03 12:28:06 +0000140 * Configures the maximum playback rate for encoding. Due to hardware
141 * limitations, the receiver may render audio up to a playback rate. Opus
142 * encoder can use this information to optimize for network usage and encoding
143 * complexity. This will affect the audio bandwidth in the coded audio. However,
144 * the input/output sample rate is not affected.
minyue@webrtc.org0040a6e2014-08-04 14:41:57 +0000145 *
146 * Input:
147 * - inst : Encoder context
minyue@webrtc.orgadee8f92014-09-03 12:28:06 +0000148 * - frequency_hz : Maximum playback rate in Hz.
149 * This parameter can take any value. The relation
150 * between the value and the Opus internal mode is
151 * as following:
152 * frequency_hz <= 8000 narrow band
153 * 8000 < frequency_hz <= 12000 medium band
154 * 12000 < frequency_hz <= 16000 wide band
155 * 16000 < frequency_hz <= 24000 super wide band
156 * frequency_hz > 24000 full band
minyue@webrtc.org0040a6e2014-08-04 14:41:57 +0000157 * Return value : 0 - Success
158 * -1 - Error
159 */
minyue@webrtc.orgadee8f92014-09-03 12:28:06 +0000160int16_t WebRtcOpus_SetMaxPlaybackRate(OpusEncInst* inst, int32_t frequency_hz);
minyue@webrtc.org0040a6e2014-08-04 14:41:57 +0000161
Alex Loiko7a3e43a2019-01-29 12:27:08 +0100162/****************************************************************************
163 * WebRtcOpus_GetMaxPlaybackRate(...)
164 *
165 * Queries the maximum playback rate for encoding. If different single-stream
166 * encoders have different maximum playback rates, this function fails.
167 *
168 * Input:
169 * - inst : Encoder context.
170 * Output:
171 * - result_hz : The maximum playback rate in Hz.
172 * Return value : 0 - Success
173 * -1 - Error
174 */
175int16_t WebRtcOpus_GetMaxPlaybackRate(OpusEncInst* const inst,
176 int32_t* result_hz);
177
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000178/* TODO(minyue): Check whether an API to check the FEC and the packet loss rate
179 * is needed. It might not be very useful since there are not many use cases and
180 * the caller can always maintain the states. */
181
182/****************************************************************************
183 * WebRtcOpus_EnableFec()
184 *
185 * This function enables FEC for encoding.
186 *
187 * Input:
188 * - inst : Encoder context
189 *
190 * Return value : 0 - Success
191 * -1 - Error
192 */
193int16_t WebRtcOpus_EnableFec(OpusEncInst* inst);
194
195/****************************************************************************
196 * WebRtcOpus_DisableFec()
197 *
198 * This function disables FEC for encoding.
199 *
200 * Input:
201 * - inst : Encoder context
202 *
203 * Return value : 0 - Success
204 * -1 - Error
205 */
206int16_t WebRtcOpus_DisableFec(OpusEncInst* inst);
207
minyue@webrtc.org0ca768b2014-12-11 16:09:35 +0000208/****************************************************************************
209 * WebRtcOpus_EnableDtx()
210 *
211 * This function enables Opus internal DTX for encoding.
212 *
213 * Input:
214 * - inst : Encoder context
215 *
216 * Return value : 0 - Success
217 * -1 - Error
218 */
219int16_t WebRtcOpus_EnableDtx(OpusEncInst* inst);
220
221/****************************************************************************
222 * WebRtcOpus_DisableDtx()
223 *
224 * This function disables Opus internal DTX for encoding.
225 *
226 * Input:
227 * - inst : Encoder context
228 *
229 * Return value : 0 - Success
230 * -1 - Error
231 */
232int16_t WebRtcOpus_DisableDtx(OpusEncInst* inst);
233
soren28dc2852017-04-06 05:48:36 -0700234/****************************************************************************
Jesús de Vicente Peña3b9abd82021-02-05 09:05:46 +0100235 * WebRtcOpus_GetUseDtx()
236 *
237 * This function gets the DTX configuration used for encoding.
238 *
239 * Input:
240 * - inst : Encoder context
241 *
242 * Return value : 0 - Encoder does not use DTX.
243 * 1 - Encoder uses DTX.
244 * -1 - Error.
245 */
246int16_t WebRtcOpus_GetUseDtx(OpusEncInst* inst);
247
248/****************************************************************************
soren28dc2852017-04-06 05:48:36 -0700249 * WebRtcOpus_EnableCbr()
250 *
251 * This function enables CBR for encoding.
252 *
253 * Input:
254 * - inst : Encoder context
255 *
256 * Return value : 0 - Success
257 * -1 - Error
258 */
259int16_t WebRtcOpus_EnableCbr(OpusEncInst* inst);
260
261/****************************************************************************
262 * WebRtcOpus_DisableCbr()
263 *
264 * This function disables CBR for encoding.
265 *
266 * Input:
267 * - inst : Encoder context
268 *
269 * Return value : 0 - Success
270 * -1 - Error
271 */
272int16_t WebRtcOpus_DisableCbr(OpusEncInst* inst);
273
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000274/*
minyue@webrtc.org04546882014-03-07 08:55:48 +0000275 * WebRtcOpus_SetComplexity(...)
276 *
277 * This function adjusts the computational complexity. The effect is the same as
278 * calling the complexity setting of Opus as an Opus encoder related CTL.
279 *
280 * Input:
281 * - inst : Encoder context
282 * - complexity : New target complexity (0-10, inclusive)
283 *
284 * Return value : 0 - Success
285 * -1 - Error
286 */
287int16_t WebRtcOpus_SetComplexity(OpusEncInst* inst, int32_t complexity);
288
minyuec8299f92016-09-27 02:08:47 -0700289/*
Alex Luebseeb27652017-11-20 11:13:56 -0800290 * WebRtcOpus_GetBandwidth(...)
291 *
292 * This function returns the current bandwidth.
293 *
294 * Input:
295 * - inst : Encoder context
296 *
297 * Return value : Bandwidth - Success
298 * -1 - Error
299 */
300int32_t WebRtcOpus_GetBandwidth(OpusEncInst* inst);
301
302/*
303 * WebRtcOpus_SetBandwidth(...)
304 *
305 * By default Opus decides which bandwidth to encode the signal in depending on
306 * the the bitrate. This function overrules the previous setting and forces the
307 * encoder to encode in narrowband/wideband/fullband/etc.
308 *
309 * Input:
310 * - inst : Encoder context
311 * - bandwidth : New target bandwidth. Valid values are:
312 * OPUS_BANDWIDTH_NARROWBAND
313 * OPUS_BANDWIDTH_MEDIUMBAND
314 * OPUS_BANDWIDTH_WIDEBAND
315 * OPUS_BANDWIDTH_SUPERWIDEBAND
316 * OPUS_BANDWIDTH_FULLBAND
317 *
318 * Return value : 0 - Success
319 * -1 - Error
320 */
321int16_t WebRtcOpus_SetBandwidth(OpusEncInst* inst, int32_t bandwidth);
322
323/*
Minyue Li332274d2019-11-13 16:05:46 +0100324 * WebRtcOpus_GetInDtx(...)
325 *
326 * Gets the DTX state of the encoder.
327 *
328 * Input:
329 * - inst : Encoder context
330 *
331 * Return value : -1 - Error.
332 * 1 - Last encoded frame was comfort noise update during DTX.
333 * 0 - Last encoded frame was encoded with encoder not in DTX.
334 */
335int32_t WebRtcOpus_GetInDtx(OpusEncInst* inst);
336
337/*
minyuec8299f92016-09-27 02:08:47 -0700338 * WebRtcOpus_SetForceChannels(...)
339 *
340 * If the encoder is initialized as a stereo encoder, Opus will by default
341 * decide whether to encode in mono or stereo based on the bitrate. This
342 * function overrules the previous setting, and forces the encoder to encode
343 * in auto/mono/stereo.
344 *
345 * If the Encoder is initialized as a mono encoder, and one tries to force
346 * stereo, the function will return an error.
347 *
348 * Input:
349 * - inst : Encoder context
350 * - num_channels : 0 - Not forced
351 * 1 - Mono
352 * 2 - Stereo
353 *
354 * Return value : 0 - Success
355 * -1 - Error
356 */
minyue41b9c802016-10-06 07:13:54 -0700357int16_t WebRtcOpus_SetForceChannels(OpusEncInst* inst, size_t num_channels);
minyuec8299f92016-09-27 02:08:47 -0700358
Karl Wiberga1d1a1e2019-05-28 14:41:07 +0200359int16_t WebRtcOpus_DecoderCreate(OpusDecInst** inst,
360 size_t channels,
361 int sample_rate_hz);
Alex Loiko50b8c392019-04-03 15:12:01 +0200362
363/****************************************************************************
364 * WebRtcOpus_MultistreamDecoderCreate(...)
365 *
366 * This function creates an Opus decoder with any supported channel count.
367 *
368 * Input:
Alex Loikoe5b94162019-04-08 17:19:41 +0200369 * - channels : number of output channels that the decoder
370 * will produce.
371 * - streams : number of encoded streams, as described in
372 * RFC 7845.
Alex Loiko50b8c392019-04-03 15:12:01 +0200373 * - coupled_streams : number of coupled streams, as described in
374 * RFC 7845.
375 * - channel_mapping : the channel mapping; pointer to array of
376 * `channel` bytes, as described in RFC 7845.
377 *
378 * Output:
379 * - inst : a pointer to a Decoder context that is created
380 * if success.
381 *
382 * Return value : 0 - Success
383 * -1 - Error
384 */
385int16_t WebRtcOpus_MultistreamDecoderCreate(
386 OpusDecInst** inst,
387 size_t channels,
Alex Loikoe5b94162019-04-08 17:19:41 +0200388 size_t streams,
Alex Loiko50b8c392019-04-03 15:12:01 +0200389 size_t coupled_streams,
390 const unsigned char* channel_mapping);
391
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000392int16_t WebRtcOpus_DecoderFree(OpusDecInst* inst);
393
394/****************************************************************************
tina.legrand@webrtc.orgc4590582012-11-28 12:23:29 +0000395 * WebRtcOpus_DecoderChannels(...)
396 *
397 * This function returns the number of channels created for Opus decoder.
398 */
Peter Kasting69558702016-01-12 16:26:35 -0800399size_t WebRtcOpus_DecoderChannels(OpusDecInst* inst);
tina.legrand@webrtc.orgc4590582012-11-28 12:23:29 +0000400
401/****************************************************************************
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000402 * WebRtcOpus_DecoderInit(...)
403 *
404 * This function resets state of the decoder.
405 *
406 * Input:
407 * - inst : Decoder context
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000408 */
Karl Wiberg43766482015-08-27 15:22:11 +0200409void WebRtcOpus_DecoderInit(OpusDecInst* inst);
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000410
411/****************************************************************************
412 * WebRtcOpus_Decode(...)
413 *
414 * This function decodes an Opus packet into one or more audio frames at the
415 * ACM interface's sampling rate (32 kHz).
416 *
417 * Input:
418 * - inst : Decoder context
419 * - encoded : Encoded data
420 * - encoded_bytes : Bytes in encoded vector
421 *
422 * Output:
423 * - decoded : The decoded vector
424 * - audio_type : 1 normal, 2 CNG (for Opus it should
425 * always return 1 since we're not using Opus's
426 * built-in DTX/CNG scheme)
427 *
minyue@webrtc.orgecbe0aa2013-08-12 06:48:09 +0000428 * Return value : >0 - Samples per channel in decoded vector
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000429 * -1 - Error
430 */
Yves Gerey665174f2018-06-19 15:03:05 +0200431int WebRtcOpus_Decode(OpusDecInst* inst,
432 const uint8_t* encoded,
433 size_t encoded_bytes,
434 int16_t* decoded,
Peter Kastingbba78072015-06-11 19:02:46 -0700435 int16_t* audio_type);
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000436
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000437/****************************************************************************
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000438 * WebRtcOpus_DecodeFec(...)
439 *
440 * This function decodes the FEC data from an Opus packet into one or more audio
441 * frames at the ACM interface's sampling rate (32 kHz).
442 *
443 * Input:
444 * - inst : Decoder context
445 * - encoded : Encoded data
446 * - encoded_bytes : Bytes in encoded vector
447 *
448 * Output:
449 * - decoded : The decoded vector (previous frame)
450 *
451 * Return value : >0 - Samples per channel in decoded vector
452 * 0 - No FEC data in the packet
453 * -1 - Error
454 */
Yves Gerey665174f2018-06-19 15:03:05 +0200455int WebRtcOpus_DecodeFec(OpusDecInst* inst,
456 const uint8_t* encoded,
457 size_t encoded_bytes,
458 int16_t* decoded,
Peter Kastingbba78072015-06-11 19:02:46 -0700459 int16_t* audio_type);
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000460
461/****************************************************************************
tina.legrand@webrtc.org4275ab12012-12-19 09:52:45 +0000462 * WebRtcOpus_DurationEst(...)
463 *
464 * This function calculates the duration of an opus packet.
465 * Input:
466 * - inst : Decoder context
467 * - payload : Encoded data pointer
468 * - payload_length_bytes : Bytes of encoded data
469 *
Minyue323b1322015-05-25 13:49:37 +0200470 * Return value : The duration of the packet, in samples per
471 * channel.
tina.legrand@webrtc.org4275ab12012-12-19 09:52:45 +0000472 */
473int WebRtcOpus_DurationEst(OpusDecInst* inst,
474 const uint8_t* payload,
Peter Kastingdce40cf2015-08-24 14:52:23 -0700475 size_t payload_length_bytes);
tina.legrand@webrtc.org4275ab12012-12-19 09:52:45 +0000476
minyuel6d92bf52015-09-23 15:20:39 +0200477/****************************************************************************
478 * WebRtcOpus_PlcDuration(...)
479 *
480 * This function calculates the duration of a frame returned by packet loss
481 * concealment (PLC).
482 *
483 * Input:
484 * - inst : Decoder context
485 *
486 * Return value : The duration of a frame returned by PLC, in
487 * samples per channel.
488 */
489int WebRtcOpus_PlcDuration(OpusDecInst* inst);
490
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000491/* TODO(minyue): Check whether it is needed to add a decoder context to the
492 * arguments, like WebRtcOpus_DurationEst(...). In fact, the packet itself tells
493 * the duration. The decoder context in WebRtcOpus_DurationEst(...) is not used.
494 * So it may be advisable to remove it from WebRtcOpus_DurationEst(...). */
495
496/****************************************************************************
497 * WebRtcOpus_FecDurationEst(...)
498 *
499 * This function calculates the duration of the FEC data within an opus packet.
500 * Input:
501 * - payload : Encoded data pointer
502 * - payload_length_bytes : Bytes of encoded data
Karl Wiberga1d1a1e2019-05-28 14:41:07 +0200503 * - sample_rate_hz : Sample rate of output audio
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000504 *
505 * Return value : >0 - The duration of the FEC data in the
Minyue323b1322015-05-25 13:49:37 +0200506 * packet in samples per channel.
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000507 * 0 - No FEC data in the packet.
508 */
509int WebRtcOpus_FecDurationEst(const uint8_t* payload,
Karl Wiberga1d1a1e2019-05-28 14:41:07 +0200510 size_t payload_length_bytes,
511 int sample_rate_hz);
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000512
513/****************************************************************************
514 * WebRtcOpus_PacketHasFec(...)
515 *
516 * This function detects if an opus packet has FEC.
517 * Input:
518 * - payload : Encoded data pointer
519 * - payload_length_bytes : Bytes of encoded data
520 *
521 * Return value : 0 - the packet does NOT contain FEC.
522 * 1 - the packet contains FEC.
523 */
524int WebRtcOpus_PacketHasFec(const uint8_t* payload,
Peter Kastingdce40cf2015-08-24 14:52:23 -0700525 size_t payload_length_bytes);
minyue@webrtc.org46509c82014-03-07 11:49:11 +0000526
Philipp Hancke0fd1ef12020-06-10 14:21:44 +0200527/****************************************************************************
528 * WebRtcOpus_PacketHasVoiceActivity(...)
529 *
530 * This function returns the SILK VAD information encoded in the opus packet.
531 * For CELT-only packets that do not have VAD information, it returns -1.
532 * Input:
533 * - payload : Encoded data pointer
534 * - payload_length_bytes : Bytes of encoded data
535 *
536 * Return value : 0 - no frame had the VAD flag set.
537 * 1 - at least one frame had the VAD flag set.
538 * -1 - VAD status could not be determined.
539 */
540int WebRtcOpus_PacketHasVoiceActivity(const uint8_t* payload,
541 size_t payload_length_bytes);
542
tina.legrand@webrtc.orga7d83872012-10-18 10:00:52 +0000543#ifdef __cplusplus
544} // extern "C"
545#endif
546
Mirko Bonadei92ea95e2017-09-15 06:47:31 +0200547#endif // MODULES_AUDIO_CODING_CODECS_OPUS_OPUS_INTERFACE_H_