tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

settings.h (6824B)


      1 /*
      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 
     11 /*
     12 * settings.h
     13 *
     14 * Declaration of #defines used in the iSAC codec
     15 *
     16 */
     17 
     18 #ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_SETTINGS_H_
     19 #define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_SETTINGS_H_
     20 
     21 /* sampling frequency (Hz) */
     22 #define FS 16000
     23 
     24 /* number of samples per frame (either 320 (20ms), 480 (30ms) or 960 (60ms)) */
     25 #define INITIAL_FRAMESAMPLES 960
     26 
     27 /* do not modify the following; this will have to be modified if we
     28 * have a 20ms framesize option */
     29 /**********************************************************************/
     30 /* miliseconds */
     31 #define FRAMESIZE 30
     32 /* number of samples per frame processed in the encoder, 480 */
     33 #define FRAMESAMPLES 480 /* ((FRAMESIZE*FS)/1000) */
     34 #define FRAMESAMPLES_HALF 240
     35 #define FRAMESAMPLES_QUARTER 120
     36 /**********************************************************************/
     37 
     38 /* max number of samples per frame (= 60 ms frame) */
     39 #define MAX_FRAMESAMPLES 960
     40 #define MAX_SWBFRAMESAMPLES (MAX_FRAMESAMPLES * 2)
     41 /* number of samples per 10ms frame */
     42 #define FRAMESAMPLES_10ms ((10 * FS) / 1000)
     43 #define SWBFRAMESAMPLES_10ms (FRAMESAMPLES_10ms * 2)
     44 /* number of samples in 30 ms frame */
     45 #define FRAMESAMPLES_30ms 480
     46 /* number of subframes */
     47 #define SUBFRAMES 6
     48 /* length of a subframe */
     49 #define UPDATE 80
     50 /* length of half a subframe (low/high band) */
     51 #define HALF_SUBFRAMELEN (UPDATE / 2)
     52 /* samples of look ahead (in a half-band, so actually
     53 * half the samples of look ahead @ FS) */
     54 #define QLOOKAHEAD 24 /* 3 ms */
     55 /* order of AR model in spectral entropy coder */
     56 #define AR_ORDER 6
     57 /* order of LP model in spectral entropy coder */
     58 #define LP_ORDER 0
     59 
     60 /* window length (masking analysis) */
     61 #define WINLEN 256
     62 /* order of low-band pole filter used to approximate masking curve */
     63 #define ORDERLO 12
     64 /* order of hi-band pole filter used to approximate masking curve */
     65 #define ORDERHI 6
     66 
     67 #define UB_LPC_ORDER 4
     68 #define UB_LPC_VEC_PER_FRAME 2
     69 #define UB16_LPC_VEC_PER_FRAME 4
     70 #define UB_ACTIVE_SUBFRAMES 2
     71 #define UB_MAX_LPC_ORDER 6
     72 #define UB_INTERPOL_SEGMENTS 1
     73 #define UB16_INTERPOL_SEGMENTS 3
     74 #define LB_TOTAL_DELAY_SAMPLES 48
     75 enum ISACBandwidth { isac8kHz = 8, isac12kHz = 12, isac16kHz = 16 };
     76 enum ISACBand {
     77  kIsacLowerBand = 0,
     78  kIsacUpperBand12 = 1,
     79  kIsacUpperBand16 = 2
     80 };
     81 enum IsacSamplingRate { kIsacWideband = 16, kIsacSuperWideband = 32 };
     82 #define UB_LPC_GAIN_DIM SUBFRAMES
     83 #define FB_STATE_SIZE_WORD32 6
     84 
     85 /* order for post_filter_bank */
     86 #define POSTQORDER 3
     87 /* order for pre-filterbank */
     88 #define QORDER 3
     89 /* another order */
     90 #define QORDER_ALL (POSTQORDER + QORDER - 1)
     91 /* for decimator */
     92 #define ALLPASSSECTIONS 2
     93 
     94 /* array size for byte stream in number of bytes. */
     95 /* The old maximum size still needed for the decoding */
     96 #define STREAM_SIZE_MAX 600
     97 #define STREAM_SIZE_MAX_30 200 /* 200 bytes=53.4 kbps @ 30 ms.framelength */
     98 #define STREAM_SIZE_MAX_60 400 /* 400 bytes=53.4 kbps @ 60 ms.framelength */
     99 
    100 /* storage size for bit counts */
    101 #define BIT_COUNTER_SIZE 30
    102 /* maximum order of any AR model or filter */
    103 #define MAX_AR_MODEL_ORDER 12  // 50
    104 
    105 /* For pitch analysis */
    106 #define PITCH_FRAME_LEN (FRAMESAMPLES_HALF) /* 30 ms  */
    107 #define PITCH_MAX_LAG 140                   /* 57 Hz  */
    108 #define PITCH_MIN_LAG 20                    /* 400 Hz */
    109 #define PITCH_MAX_GAIN 0.45
    110 #define PITCH_MAX_GAIN_06 0.27 /* PITCH_MAX_GAIN*0.6 */
    111 #define PITCH_MAX_GAIN_Q12 1843
    112 #define PITCH_LAG_SPAN2 (PITCH_MAX_LAG / 2 - PITCH_MIN_LAG / 2 + 5)
    113 #define PITCH_CORR_LEN2 60 /* 15 ms  */
    114 #define PITCH_CORR_STEP2 (PITCH_FRAME_LEN / 4)
    115 #define PITCH_BW 11 /* half the band width of correlation surface */
    116 #define PITCH_SUBFRAMES 4
    117 #define PITCH_GRAN_PER_SUBFRAME 5
    118 #define PITCH_SUBFRAME_LEN (PITCH_FRAME_LEN / PITCH_SUBFRAMES)
    119 #define PITCH_UPDATE (PITCH_SUBFRAME_LEN / PITCH_GRAN_PER_SUBFRAME)
    120 /* maximum number of peaks to be examined in correlation surface */
    121 #define PITCH_MAX_NUM_PEAKS 10
    122 #define PITCH_PEAK_DECAY 0.85
    123 /* For weighting filter */
    124 #define PITCH_WLPCORDER 6
    125 #define PITCH_WLPCWINLEN PITCH_FRAME_LEN
    126 #define PITCH_WLPCASYM 0.3 /* asymmetry parameter */
    127 #define PITCH_WLPCBUFLEN PITCH_WLPCWINLEN
    128 /* For pitch filter */
    129 /* Extra 50 for fraction and LP filters */
    130 #define PITCH_BUFFSIZE (PITCH_MAX_LAG + 50)
    131 #define PITCH_INTBUFFSIZE (PITCH_FRAME_LEN + PITCH_BUFFSIZE)
    132 /* Max rel. step for interpolation */
    133 #define PITCH_UPSTEP 1.5
    134 /* Max rel. step for interpolation */
    135 #define PITCH_DOWNSTEP 0.67
    136 #define PITCH_FRACS 8
    137 #define PITCH_FRACORDER 9
    138 #define PITCH_DAMPORDER 5
    139 #define PITCH_FILTDELAY 1.5f
    140 /* stepsize for quantization of the pitch Gain */
    141 #define PITCH_GAIN_STEPSIZE 0.125
    142 
    143 /* Order of high pass filter */
    144 #define HPORDER 2
    145 
    146 /* some mathematical constants */
    147 /* log2(exp) */
    148 #define LOG2EXP 1.44269504088896
    149 #define PI 3.14159265358979
    150 
    151 /* Maximum number of iterations allowed to limit payload size */
    152 #define MAX_PAYLOAD_LIMIT_ITERATION 5
    153 
    154 /* Redundant Coding */
    155 #define RCU_BOTTLENECK_BPS 16000
    156 #define RCU_TRANSCODING_SCALE 0.40f
    157 #define RCU_TRANSCODING_SCALE_INVERSE 2.5f
    158 
    159 #define RCU_TRANSCODING_SCALE_UB 0.50f
    160 #define RCU_TRANSCODING_SCALE_UB_INVERSE 2.0f
    161 
    162 /* Define Error codes */
    163 /* 6000 General */
    164 #define ISAC_MEMORY_ALLOCATION_FAILED 6010
    165 #define ISAC_MODE_MISMATCH 6020
    166 #define ISAC_DISALLOWED_BOTTLENECK 6030
    167 #define ISAC_DISALLOWED_FRAME_LENGTH 6040
    168 #define ISAC_UNSUPPORTED_SAMPLING_FREQUENCY 6050
    169 
    170 /* 6200 Bandwidth estimator */
    171 #define ISAC_RANGE_ERROR_BW_ESTIMATOR 6240
    172 /* 6400 Encoder */
    173 #define ISAC_ENCODER_NOT_INITIATED 6410
    174 #define ISAC_DISALLOWED_CODING_MODE 6420
    175 #define ISAC_DISALLOWED_FRAME_MODE_ENCODER 6430
    176 #define ISAC_DISALLOWED_BITSTREAM_LENGTH 6440
    177 #define ISAC_PAYLOAD_LARGER_THAN_LIMIT 6450
    178 #define ISAC_DISALLOWED_ENCODER_BANDWIDTH 6460
    179 /* 6600 Decoder */
    180 #define ISAC_DECODER_NOT_INITIATED 6610
    181 #define ISAC_EMPTY_PACKET 6620
    182 #define ISAC_DISALLOWED_FRAME_MODE_DECODER 6630
    183 #define ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH 6640
    184 #define ISAC_RANGE_ERROR_DECODE_BANDWIDTH 6650
    185 #define ISAC_RANGE_ERROR_DECODE_PITCH_GAIN 6660
    186 #define ISAC_RANGE_ERROR_DECODE_PITCH_LAG 6670
    187 #define ISAC_RANGE_ERROR_DECODE_LPC 6680
    188 #define ISAC_RANGE_ERROR_DECODE_SPECTRUM 6690
    189 #define ISAC_LENGTH_MISMATCH 6730
    190 #define ISAC_RANGE_ERROR_DECODE_BANDWITH 6740
    191 #define ISAC_DISALLOWED_BANDWIDTH_MODE_DECODER 6750
    192 #define ISAC_DISALLOWED_LPC_MODEL 6760
    193 /* 6800 Call setup formats */
    194 #define ISAC_INCOMPATIBLE_FORMATS 6810
    195 
    196 #endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_SETTINGS_H_ */