| 262 | } |
| 263 | |
| 264 | void KeyDetector::updateChromaHistory(const float* chroma) { |
| 265 | // Add current chroma to history (circular buffer) |
| 266 | for (int i = 0; i < 12; i++) { |
| 267 | if (static_cast<int>(mChromaHistory[i].size()) < mAveragingFrames) { |
| 268 | mChromaHistory[i].push_back(chroma[i]); |
| 269 | } else { |
| 270 | mChromaHistory[i][mHistoryIndex] = chroma[i]; |
| 271 | } |
| 272 | } |
| 273 | |
| 274 | mHistoryIndex = (mHistoryIndex + 1) % mAveragingFrames; |
| 275 | if (mHistorySize < mAveragingFrames) { |
| 276 | mHistorySize++; |
| 277 | } |
| 278 | } |
| 279 | |
| 280 | void KeyDetector::getAveragedChroma(float* chroma) { |
| 281 | if (mHistorySize == 0) { |