| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 int16_t dither1_Q7, dither2_Q7, dither_gain_Q14; | 175 int16_t dither1_Q7, dither2_Q7, dither_gain_Q14; |
| 176 | 176 |
| 177 /* This threshold should be equal to that in decode_spec(). */ | 177 /* This threshold should be equal to that in decode_spec(). */ |
| 178 if (AvgPitchGain_Q12 < 614) { | 178 if (AvgPitchGain_Q12 < 614) { |
| 179 for (k = 0; k < length - 2; k += 3) { | 179 for (k = 0; k < length - 2; k += 3) { |
| 180 /* New random unsigned int. */ | 180 /* New random unsigned int. */ |
| 181 seed = (seed * 196314165) + 907633515; | 181 seed = (seed * 196314165) + 907633515; |
| 182 | 182 |
| 183 /* Fixed-point dither sample between -64 and 64 (Q7). */ | 183 /* Fixed-point dither sample between -64 and 64 (Q7). */ |
| 184 /* dither = seed * 128 / 4294967295 */ | 184 /* dither = seed * 128 / 4294967295 */ |
| 185 dither1_Q7 = (int16_t)(((int)seed + 16777216) >> 25); | 185 dither1_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25); |
| 186 | 186 |
| 187 /* New random unsigned int. */ | 187 /* New random unsigned int. */ |
| 188 seed = (seed * 196314165) + 907633515; | 188 seed = (seed * 196314165) + 907633515; |
| 189 | 189 |
| 190 /* Fixed-point dither sample between -64 and 64. */ | 190 /* Fixed-point dither sample between -64 and 64. */ |
| 191 dither2_Q7 = (int16_t)(((int)seed + 16777216) >> 25); | 191 dither2_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25); |
| 192 | 192 |
| 193 shft = (seed >> 25) & 15; | 193 shft = (seed >> 25) & 15; |
| 194 if (shft < 5) { | 194 if (shft < 5) { |
| 195 bufQ7[k] = dither1_Q7; | 195 bufQ7[k] = dither1_Q7; |
| 196 bufQ7[k + 1] = dither2_Q7; | 196 bufQ7[k + 1] = dither2_Q7; |
| 197 bufQ7[k + 2] = 0; | 197 bufQ7[k + 2] = 0; |
| 198 } else if (shft < 10) { | 198 } else if (shft < 10) { |
| 199 bufQ7[k] = dither1_Q7; | 199 bufQ7[k] = dither1_Q7; |
| 200 bufQ7[k + 1] = 0; | 200 bufQ7[k + 1] = 0; |
| 201 bufQ7[k + 2] = dither2_Q7; | 201 bufQ7[k + 2] = dither2_Q7; |
| 202 } else { | 202 } else { |
| 203 bufQ7[k] = 0; | 203 bufQ7[k] = 0; |
| 204 bufQ7[k + 1] = dither1_Q7; | 204 bufQ7[k + 1] = dither1_Q7; |
| 205 bufQ7[k + 2] = dither2_Q7; | 205 bufQ7[k + 2] = dither2_Q7; |
| 206 } | 206 } |
| 207 } | 207 } |
| 208 } else { | 208 } else { |
| 209 dither_gain_Q14 = (int16_t)(22528 - 10 * AvgPitchGain_Q12); | 209 dither_gain_Q14 = (int16_t)(22528 - 10 * AvgPitchGain_Q12); |
| 210 | 210 |
| 211 /* Dither on half of the coefficients. */ | 211 /* Dither on half of the coefficients. */ |
| 212 for (k = 0; k < length - 1; k += 2) { | 212 for (k = 0; k < length - 1; k += 2) { |
| 213 /* New random unsigned int */ | 213 /* New random unsigned int */ |
| 214 seed = (seed * 196314165) + 907633515; | 214 seed = (seed * 196314165) + 907633515; |
| 215 | 215 |
| 216 /* Fixed-point dither sample between -64 and 64. */ | 216 /* Fixed-point dither sample between -64 and 64. */ |
| 217 dither1_Q7 = (int16_t)(((int)seed + 16777216) >> 25); | 217 dither1_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25); |
| 218 | 218 |
| 219 /* Dither sample is placed in either even or odd index. */ | 219 /* Dither sample is placed in either even or odd index. */ |
| 220 shft = (seed >> 25) & 1; /* Either 0 or 1 */ | 220 shft = (seed >> 25) & 1; /* Either 0 or 1 */ |
| 221 | 221 |
| 222 bufQ7[k + shft] = (((dither_gain_Q14 * dither1_Q7) + 8192) >> 14); | 222 bufQ7[k + shft] = (((dither_gain_Q14 * dither1_Q7) + 8192) >> 14); |
| 223 bufQ7[k + 1 - shft] = 0; | 223 bufQ7[k + 1 - shft] = 0; |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 } | 226 } |
| 227 | 227 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 247 int16_t* bufQ7, | 247 int16_t* bufQ7, |
| 248 uint32_t seed, | 248 uint32_t seed, |
| 249 int length) { | 249 int length) { |
| 250 int k; | 250 int k; |
| 251 for (k = 0; k < length; k++) { | 251 for (k = 0; k < length; k++) { |
| 252 /* new random unsigned int */ | 252 /* new random unsigned int */ |
| 253 seed = (seed * 196314165) + 907633515; | 253 seed = (seed * 196314165) + 907633515; |
| 254 | 254 |
| 255 /* Fixed-point dither sample between -64 and 64 (Q7). */ | 255 /* Fixed-point dither sample between -64 and 64 (Q7). */ |
| 256 /* bufQ7 = seed * 128 / 4294967295 */ | 256 /* bufQ7 = seed * 128 / 4294967295 */ |
| 257 bufQ7[k] = (int16_t)(((int)seed + 16777216) >> 25); | 257 bufQ7[k] = (int16_t)(((int32_t)(seed + 16777216)) >> 25); |
| 258 | 258 |
| 259 /* Scale by 0.35. */ | 259 /* Scale by 0.35. */ |
| 260 bufQ7[k] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(bufQ7[k], 2048, 13); | 260 bufQ7[k] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(bufQ7[k], 2048, 13); |
| 261 } | 261 } |
| 262 } | 262 } |
| 263 | 263 |
| 264 /* | 264 /* |
| 265 * Function to decode the complex spectrum from the bit stream | 265 * Function to decode the complex spectrum from the bit stream |
| 266 * returns the total number of bytes in the stream. | 266 * returns the total number of bytes in the stream. |
| 267 */ | 267 */ |
| (...skipping 1789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2057 /* Use the same CDF table as for bandwidth | 2057 /* Use the same CDF table as for bandwidth |
| 2058 * both take two values with equal probability. */ | 2058 * both take two values with equal probability. */ |
| 2059 if (WebRtcIsac_DecHistOneStepMulti(&intVar, streamData, | 2059 if (WebRtcIsac_DecHistOneStepMulti(&intVar, streamData, |
| 2060 kOneBitEqualProbCdf_ptr, | 2060 kOneBitEqualProbCdf_ptr, |
| 2061 kOneBitEqualProbInitIndex, 1) < 0) { | 2061 kOneBitEqualProbInitIndex, 1) < 0) { |
| 2062 return -ISAC_RANGE_ERROR_DECODE_BANDWITH; | 2062 return -ISAC_RANGE_ERROR_DECODE_BANDWITH; |
| 2063 } | 2063 } |
| 2064 *jitterInfo = (int16_t)(intVar); | 2064 *jitterInfo = (int16_t)(intVar); |
| 2065 return 0; | 2065 return 0; |
| 2066 } | 2066 } |
| OLD | NEW |