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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 | 108 |
109 case BiquadProcessor::Allpass: | 109 case BiquadProcessor::Allpass: |
110 m_biquad.setAllpassParams(k, normalizedFrequency, Q[k]); | 110 m_biquad.setAllpassParams(k, normalizedFrequency, Q[k]); |
111 break; | 111 break; |
112 } | 112 } |
113 } | 113 } |
114 } | 114 } |
115 | 115 |
116 void BiquadDSPKernel::process(const float* source, float* destination, size_t fr
amesToProcess) | 116 void BiquadDSPKernel::process(const float* source, float* destination, size_t fr
amesToProcess) |
117 { | 117 { |
118 ASSERT(source); | 118 DCHECK(source); |
119 ASSERT(destination); | 119 DCHECK(destination); |
120 ASSERT(getBiquadProcessor()); | 120 DCHECK(getBiquadProcessor()); |
121 | 121 |
122 // Recompute filter coefficients if any of the parameters have changed. | 122 // Recompute filter coefficients if any of the parameters have changed. |
123 // FIXME: as an optimization, implement a way that a Biquad object can simpl
y copy its internal filter coefficients from another Biquad object. | 123 // FIXME: as an optimization, implement a way that a Biquad object can simpl
y copy its internal filter coefficients from another Biquad object. |
124 // Then re-factor this code to only run for the first BiquadDSPKernel of eac
h BiquadProcessor. | 124 // Then re-factor this code to only run for the first BiquadDSPKernel of eac
h BiquadProcessor. |
125 | 125 |
126 | 126 |
127 // The audio thread can't block on this lock; skip updating the coefficients
for this block if | 127 // The audio thread can't block on this lock; skip updating the coefficients
for this block if |
128 // necessary. We'll get them the next time around. | 128 // necessary. We'll get them the next time around. |
129 { | 129 { |
130 MutexTryLocker tryLocker(m_processLock); | 130 MutexTryLocker tryLocker(m_processLock); |
131 if (tryLocker.locked()) | 131 if (tryLocker.locked()) |
132 updateCoefficientsIfNecessary(framesToProcess); | 132 updateCoefficientsIfNecessary(framesToProcess); |
133 } | 133 } |
134 | 134 |
135 m_biquad.process(source, destination, framesToProcess); | 135 m_biquad.process(source, destination, framesToProcess); |
136 } | 136 } |
137 | 137 |
138 void BiquadDSPKernel::getFrequencyResponse(int nFrequencies, const float* freque
ncyHz, float* magResponse, float* phaseResponse) | 138 void BiquadDSPKernel::getFrequencyResponse(int nFrequencies, const float* freque
ncyHz, float* magResponse, float* phaseResponse) |
139 { | 139 { |
140 bool isGood = nFrequencies > 0 && frequencyHz && magResponse && phaseRespons
e; | 140 bool isGood = nFrequencies > 0 && frequencyHz && magResponse && phaseRespons
e; |
141 ASSERT(isGood); | 141 DCHECK(isGood); |
142 if (!isGood) | 142 if (!isGood) |
143 return; | 143 return; |
144 | 144 |
145 Vector<float> frequency(nFrequencies); | 145 Vector<float> frequency(nFrequencies); |
146 | 146 |
147 double nyquist = this->nyquist(); | 147 double nyquist = this->nyquist(); |
148 | 148 |
149 // Convert from frequency in Hz to normalized frequency (0 -> 1), | 149 // Convert from frequency in Hz to normalized frequency (0 -> 1), |
150 // with 1 equal to the Nyquist frequency. | 150 // with 1 equal to the Nyquist frequency. |
151 for (int k = 0; k < nFrequencies; ++k) | 151 for (int k = 0; k < nFrequencies; ++k) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 return MaxBiquadDelayTime; | 187 return MaxBiquadDelayTime; |
188 } | 188 } |
189 | 189 |
190 double BiquadDSPKernel::latencyTime() const | 190 double BiquadDSPKernel::latencyTime() const |
191 { | 191 { |
192 return 0; | 192 return 0; |
193 } | 193 } |
194 | 194 |
195 } // namespace blink | 195 } // namespace blink |
196 | 196 |
OLD | NEW |