我已经通过NDK(mpg123)解码了PCM,我想动态地改变音高和速度......但是我怎么能分别在速度和音高上工作..我所能做的就是改变音频中的采样率 - 跟踪...我也实现了Sonic-NDK,在原始文件夹中有一个.bin文件正在播放,现在我正在播放.wav到sonic-NDK,然后有Sonic需要提供PCM的东西所以我通过mpg123转换为pcm并动态喂它..但整个过程不够快,我听到循环中的差距..代码是:
void recursive() {
buffer = new short[minBufferSize];
err = NativeWrapper.decodeMP3(minBufferSize * 2, buffer);
byte[] bufferbyte = ShortToByte_Twiddle_Method(buffer);
sonic.putBytes(bufferbyte, bufferbyte.length);
int available = sonic.availableBytes();
modifiedSamples = new byte[available ];
sonic.receiveBytes(modifiedSamples, available);
track.write(modifiedSamples, 0, available); // Write
if (err != MPG123_DONE) {
recursive();
}
}
所以现在我有两个问题: