| 
									
										
										
										
											2015-10-02 14:20:50 -03:00
										 |  |  | /***********************************************************************
 | 
					
						
							|  |  |  | Copyright (c) 2006-2011, Skype Limited. All rights reserved. | 
					
						
							|  |  |  | Redistribution and use in source and binary forms, with or without | 
					
						
							|  |  |  | modification, are permitted provided that the following conditions | 
					
						
							|  |  |  | are met: | 
					
						
							|  |  |  | - Redistributions of source code must retain the above copyright notice, | 
					
						
							|  |  |  | this list of conditions and the following disclaimer. | 
					
						
							|  |  |  | - Redistributions in binary form must reproduce the above copyright | 
					
						
							|  |  |  | notice, this list of conditions and the following disclaimer in the | 
					
						
							|  |  |  | documentation and/or other materials provided with the distribution. | 
					
						
							|  |  |  | - Neither the name of Internet Society, IETF or IETF Trust, nor the | 
					
						
							|  |  |  | names of specific contributors, may be used to endorse or promote | 
					
						
							|  |  |  | products derived from this software without specific prior written | 
					
						
							|  |  |  | permission. | 
					
						
							|  |  |  | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
					
						
							|  |  |  | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
					
						
							|  |  |  | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
					
						
							|  |  |  | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 
					
						
							|  |  |  | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
					
						
							|  |  |  | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
					
						
							|  |  |  | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
					
						
							|  |  |  | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
					
						
							|  |  |  | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
					
						
							|  |  |  | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
					
						
							|  |  |  | POSSIBILITY OF SUCH DAMAGE. | 
					
						
							|  |  |  | ***********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef SILK_CONTROL_H
 | 
					
						
							|  |  |  | #define SILK_CONTROL_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-12 20:37:38 +02:00
										 |  |  | #include "typedef.h"
 | 
					
						
							| 
									
										
										
										
											2015-10-02 14:20:50 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Decoder API flags */ | 
					
						
							|  |  |  | #define FLAG_DECODE_NORMAL                      0
 | 
					
						
							|  |  |  | #define FLAG_PACKET_LOST                        1
 | 
					
						
							|  |  |  | #define FLAG_DECODE_LBRR                        2
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /***********************************************/ | 
					
						
							|  |  |  | /* Structure for controlling encoder operation */ | 
					
						
							|  |  |  | /***********************************************/ | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  |     /* I:   Number of channels; 1/2                                                         */ | 
					
						
							|  |  |  |     opus_int32 nChannelsAPI; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Number of channels; 1/2                                                         */ | 
					
						
							|  |  |  |     opus_int32 nChannelsInternal; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Input signal sampling rate in Hertz; 8000/12000/16000/24000/32000/44100/48000   */ | 
					
						
							|  |  |  |     opus_int32 API_sampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Maximum internal sampling rate in Hertz; 8000/12000/16000                       */ | 
					
						
							|  |  |  |     opus_int32 maxInternalSampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Minimum internal sampling rate in Hertz; 8000/12000/16000                       */ | 
					
						
							|  |  |  |     opus_int32 minInternalSampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Soft request for internal sampling rate in Hertz; 8000/12000/16000              */ | 
					
						
							|  |  |  |     opus_int32 desiredInternalSampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Number of samples per packet in milliseconds; 10/20/40/60                       */ | 
					
						
							|  |  |  |     opus_int payloadSize_ms; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Bitrate during active speech in bits/second; internally limited                 */ | 
					
						
							|  |  |  |     opus_int32 bitRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Uplink packet loss in percent (0-100)                                           */ | 
					
						
							|  |  |  |     opus_int packetLossPercentage; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Complexity mode; 0 is lowest, 10 is highest complexity                          */ | 
					
						
							|  |  |  |     opus_int complexity; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Flag to enable in-band Forward Error Correction (FEC); 0/1                      */ | 
					
						
							|  |  |  |     opus_int useInBandFEC; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Flag to enable discontinuous transmission (DTX); 0/1                            */ | 
					
						
							|  |  |  |     opus_int useDTX; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Flag to use constant bitrate                                                    */ | 
					
						
							|  |  |  |     opus_int useCBR; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Maximum number of bits allowed for the frame                                    */ | 
					
						
							|  |  |  |     opus_int maxBits; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Causes a smooth downmix to mono                                                 */ | 
					
						
							|  |  |  |     opus_int toMono; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Opus encoder is allowing us to switch bandwidth                                 */ | 
					
						
							|  |  |  |     opus_int opusCanSwitch; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I: Make frames as independent as possible (but still use LPC)                        */ | 
					
						
							|  |  |  |     opus_int reducedDependency; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* O:   Internal sampling rate used, in Hertz; 8000/12000/16000                         */ | 
					
						
							|  |  |  |     opus_int32 internalSampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* O: Flag that bandwidth switching is allowed (because low voice activity)             */ | 
					
						
							|  |  |  |     opus_int allowBandwidthSwitch; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* O:   Flag that SILK runs in WB mode without variable LP filter (use for switching between WB/SWB/FB) */ | 
					
						
							|  |  |  |     opus_int inWBmodeWithoutVariableLP; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* O:   Stereo width */ | 
					
						
							|  |  |  |     opus_int stereoWidth_Q14; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* O:   Tells the Opus encoder we're ready to switch                                    */ | 
					
						
							|  |  |  |     opus_int switchReady; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } silk_EncControlStruct; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /* Structure for controlling decoder operation and reading decoder status */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | typedef struct { | 
					
						
							|  |  |  |     /* I:   Number of channels; 1/2                                                         */ | 
					
						
							|  |  |  |     opus_int32 nChannelsAPI; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Number of channels; 1/2                                                         */ | 
					
						
							|  |  |  |     opus_int32 nChannelsInternal; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Output signal sampling rate in Hertz; 8000/12000/16000/24000/32000/44100/48000  */ | 
					
						
							|  |  |  |     opus_int32 API_sampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Internal sampling rate used, in Hertz; 8000/12000/16000                         */ | 
					
						
							|  |  |  |     opus_int32 internalSampleRate; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* I:   Number of samples per packet in milliseconds; 10/20/40/60                       */ | 
					
						
							|  |  |  |     opus_int payloadSize_ms; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* O:   Pitch lag of previous frame (0 if unvoiced), measured in samples at 48 kHz      */ | 
					
						
							|  |  |  |     opus_int prevPitchLag; | 
					
						
							|  |  |  | } silk_DecControlStruct; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |