OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 | 66 |
67 power = sqrt(power / (numberOfChannels * length)); | 67 power = sqrt(power / (numberOfChannels * length)); |
68 | 68 |
69 // Protect against accidental overload | 69 // Protect against accidental overload |
70 if (std::isinf(power) || std::isnan(power) || power < MinPower) | 70 if (std::isinf(power) || std::isnan(power) || power < MinPower) |
71 power = MinPower; | 71 power = MinPower; |
72 | 72 |
73 float scale = 1 / power; | 73 float scale = 1 / power; |
74 | 74 |
75 scale *= powf( | 75 scale *= powf( |
76 10, GainCalibration * | 76 10, |
77 0.05f); // calibrate to make perceived volume same as unprocessed | 77 GainCalibration * |
| 78 0.05f); // calibrate to make perceived volume same as unprocessed |
78 | 79 |
79 // Scale depends on sample-rate. | 80 // Scale depends on sample-rate. |
80 if (response->sampleRate()) | 81 if (response->sampleRate()) |
81 scale *= GainCalibrationSampleRate / response->sampleRate(); | 82 scale *= GainCalibrationSampleRate / response->sampleRate(); |
82 | 83 |
83 // True-stereo compensation | 84 // True-stereo compensation |
84 if (response->numberOfChannels() == 4) | 85 if (response->numberOfChannels() == 4) |
85 scale *= 0.5f; | 86 scale *= 0.5f; |
86 | 87 |
87 return scale; | 88 return scale; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 void Reverb::reset() { | 266 void Reverb::reset() { |
266 for (size_t i = 0; i < m_convolvers.size(); ++i) | 267 for (size_t i = 0; i < m_convolvers.size(); ++i) |
267 m_convolvers[i]->reset(); | 268 m_convolvers[i]->reset(); |
268 } | 269 } |
269 | 270 |
270 size_t Reverb::latencyFrames() const { | 271 size_t Reverb::latencyFrames() const { |
271 return !m_convolvers.isEmpty() ? m_convolvers.front()->latencyFrames() : 0; | 272 return !m_convolvers.isEmpty() ? m_convolvers.front()->latencyFrames() : 0; |
272 } | 273 } |
273 | 274 |
274 } // namespace blink | 275 } // namespace blink |
OLD | NEW |