我有一个音频合成应用程序,它使用缓冲区大小和搜索栏值来改变速度。缓冲区大小越小,速度越快。从缓冲区大小中减去搜索栏值;搜索栏移动得越远,速度越快。
缓冲区大小使用以下公式计算:
int buffersize = AudioTrack.getMinBufferSize(sr, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT);
在三星 Galaxy S6 手机上,返回的缓冲区大小为 10584。滑块值的底部和顶部分别给出 60 bpm 和 192 bpm。
但是,在 7" LG G Pad 7.0 上,返回的缓冲区大小仅为 3528。因此,起始速度约为 180-200 bpm,而不是所需的 60 bpm。
我正在考虑使用基于屏幕大小的硬编码缓冲区大小,但这只是创可贴的工作。
为什么相同的计算会在两个设备上返回两个不同的缓冲区大小?缓冲区大小是如何计算的?