media/libopus/silk/control.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 /***********************************************************************
michael@0 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved.
michael@0 3 Redistribution and use in source and binary forms, with or without
michael@0 4 modification, are permitted provided that the following conditions
michael@0 5 are met:
michael@0 6 - Redistributions of source code must retain the above copyright notice,
michael@0 7 this list of conditions and the following disclaimer.
michael@0 8 - Redistributions in binary form must reproduce the above copyright
michael@0 9 notice, this list of conditions and the following disclaimer in the
michael@0 10 documentation and/or other materials provided with the distribution.
michael@0 11 - Neither the name of Internet Society, IETF or IETF Trust, nor the
michael@0 12 names of specific contributors, may be used to endorse or promote
michael@0 13 products derived from this software without specific prior written
michael@0 14 permission.
michael@0 15 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
michael@0 16 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
michael@0 17 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
michael@0 18 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
michael@0 19 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
michael@0 20 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
michael@0 21 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
michael@0 22 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
michael@0 23 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
michael@0 24 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
michael@0 25 POSSIBILITY OF SUCH DAMAGE.
michael@0 26 ***********************************************************************/
michael@0 27
michael@0 28 #ifndef SILK_CONTROL_H
michael@0 29 #define SILK_CONTROL_H
michael@0 30
michael@0 31 #include "typedef.h"
michael@0 32
michael@0 33 #ifdef __cplusplus
michael@0 34 extern "C"
michael@0 35 {
michael@0 36 #endif
michael@0 37
michael@0 38 /* Decoder API flags */
michael@0 39 #define FLAG_DECODE_NORMAL 0
michael@0 40 #define FLAG_PACKET_LOST 1
michael@0 41 #define FLAG_DECODE_LBRR 2
michael@0 42
michael@0 43 /***********************************************/
michael@0 44 /* Structure for controlling encoder operation */
michael@0 45 /***********************************************/
michael@0 46 typedef struct {
michael@0 47 /* I: Number of channels; 1/2 */
michael@0 48 opus_int32 nChannelsAPI;
michael@0 49
michael@0 50 /* I: Number of channels; 1/2 */
michael@0 51 opus_int32 nChannelsInternal;
michael@0 52
michael@0 53 /* I: Input signal sampling rate in Hertz; 8000/12000/16000/24000/32000/44100/48000 */
michael@0 54 opus_int32 API_sampleRate;
michael@0 55
michael@0 56 /* I: Maximum internal sampling rate in Hertz; 8000/12000/16000 */
michael@0 57 opus_int32 maxInternalSampleRate;
michael@0 58
michael@0 59 /* I: Minimum internal sampling rate in Hertz; 8000/12000/16000 */
michael@0 60 opus_int32 minInternalSampleRate;
michael@0 61
michael@0 62 /* I: Soft request for internal sampling rate in Hertz; 8000/12000/16000 */
michael@0 63 opus_int32 desiredInternalSampleRate;
michael@0 64
michael@0 65 /* I: Number of samples per packet in milliseconds; 10/20/40/60 */
michael@0 66 opus_int payloadSize_ms;
michael@0 67
michael@0 68 /* I: Bitrate during active speech in bits/second; internally limited */
michael@0 69 opus_int32 bitRate;
michael@0 70
michael@0 71 /* I: Uplink packet loss in percent (0-100) */
michael@0 72 opus_int packetLossPercentage;
michael@0 73
michael@0 74 /* I: Complexity mode; 0 is lowest, 10 is highest complexity */
michael@0 75 opus_int complexity;
michael@0 76
michael@0 77 /* I: Flag to enable in-band Forward Error Correction (FEC); 0/1 */
michael@0 78 opus_int useInBandFEC;
michael@0 79
michael@0 80 /* I: Flag to enable discontinuous transmission (DTX); 0/1 */
michael@0 81 opus_int useDTX;
michael@0 82
michael@0 83 /* I: Flag to use constant bitrate */
michael@0 84 opus_int useCBR;
michael@0 85
michael@0 86 /* I: Maximum number of bits allowed for the frame */
michael@0 87 opus_int maxBits;
michael@0 88
michael@0 89 /* I: Causes a smooth downmix to mono */
michael@0 90 opus_int toMono;
michael@0 91
michael@0 92 /* I: Opus encoder is allowing us to switch bandwidth */
michael@0 93 opus_int opusCanSwitch;
michael@0 94
michael@0 95 /* I: Make frames as independent as possible (but still use LPC) */
michael@0 96 opus_int reducedDependency;
michael@0 97
michael@0 98 /* O: Internal sampling rate used, in Hertz; 8000/12000/16000 */
michael@0 99 opus_int32 internalSampleRate;
michael@0 100
michael@0 101 /* O: Flag that bandwidth switching is allowed (because low voice activity) */
michael@0 102 opus_int allowBandwidthSwitch;
michael@0 103
michael@0 104 /* O: Flag that SILK runs in WB mode without variable LP filter (use for switching between WB/SWB/FB) */
michael@0 105 opus_int inWBmodeWithoutVariableLP;
michael@0 106
michael@0 107 /* O: Stereo width */
michael@0 108 opus_int stereoWidth_Q14;
michael@0 109
michael@0 110 /* O: Tells the Opus encoder we're ready to switch */
michael@0 111 opus_int switchReady;
michael@0 112
michael@0 113 } silk_EncControlStruct;
michael@0 114
michael@0 115 /**************************************************************************/
michael@0 116 /* Structure for controlling decoder operation and reading decoder status */
michael@0 117 /**************************************************************************/
michael@0 118 typedef struct {
michael@0 119 /* I: Number of channels; 1/2 */
michael@0 120 opus_int32 nChannelsAPI;
michael@0 121
michael@0 122 /* I: Number of channels; 1/2 */
michael@0 123 opus_int32 nChannelsInternal;
michael@0 124
michael@0 125 /* I: Output signal sampling rate in Hertz; 8000/12000/16000/24000/32000/44100/48000 */
michael@0 126 opus_int32 API_sampleRate;
michael@0 127
michael@0 128 /* I: Internal sampling rate used, in Hertz; 8000/12000/16000 */
michael@0 129 opus_int32 internalSampleRate;
michael@0 130
michael@0 131 /* I: Number of samples per packet in milliseconds; 10/20/40/60 */
michael@0 132 opus_int payloadSize_ms;
michael@0 133
michael@0 134 /* O: Pitch lag of previous frame (0 if unvoiced), measured in samples at 48 kHz */
michael@0 135 opus_int prevPitchLag;
michael@0 136 } silk_DecControlStruct;
michael@0 137
michael@0 138 #ifdef __cplusplus
michael@0 139 }
michael@0 140 #endif
michael@0 141
michael@0 142 #endif

mercurial