diff options
author | chai <chaifix@163.com> | 2018-05-27 18:28:52 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-05-27 18:28:52 +0800 |
commit | 0dbddeaeccfd4e34f200ad915f1028ce2140d988 (patch) | |
tree | d4d381ba5badf2d414b4b8fefd63b3954e00aec0 /src/libjin/audio/sdl/source.cpp | |
parent | 4f3ea475b0c72cf83175cc69bdd128b7a306523b (diff) |
更新音频模块
Diffstat (limited to 'src/libjin/audio/sdl/source.cpp')
-rw-r--r-- | src/libjin/audio/sdl/source.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/libjin/audio/sdl/source.cpp b/src/libjin/audio/sdl/source.cpp index 7d71ce7..fc0a2fe 100644 --- a/src/libjin/audio/sdl/source.cpp +++ b/src/libjin/audio/sdl/source.cpp @@ -259,27 +259,29 @@ Manager::get()->pushCommand(cmd); \ int16_t* src16 = (int16_t*)((char*)source->raw.data + source->pos); int remainsample = (source->raw.length - source->pos) >> 1; int bound = min(samples, remainsample); - for (int i = 0; i < bound; ++i) + for (int i = 0; i < samples; ++i) { buf16[i] += src16[i]; // mix sources } - source->pos += (bound << 1); - if (source->pos == 0) + source->pos += (samples << 1); + if (remainsample < samples) { if (source->loop) { - int j = 0; - for (int i = bound; i < samples; ++i, ++j) + /* int j = 0; + for (int i = bound; i < samples; ++i) { int val = data16[j]; buf16[i] += val; - } - source->pos = (j << 1); - continue; + ++j; + }*/ + //sources.erase(it); + //source->pos = (j << 1); + source->pos = 0; + break; } else { - sources.erase(it); } } |