Избавление от лишнего пустого буфера из звуковой шины tokbox
У меня есть требование программно прочитать буфер звуковой шины tokbox. Согласно их документации [здесь][1] они просят вас постоянно вызывать метод ReadRenderData с объемом буфера, который вам нужно получить. Вот мой код
private int SAMPLING_RATE = 48000;
private int NUM_CHANNELS_RENDERING = 1;
IntPtr pointer = Marshal.AllocHGlobal(SAMPLING_RATE);
int returnBytes = this.audioBus.ReadRenderData(pointer, SAMPLING_RATE / 2);
byte[] cbuff = new byte[returnBytes];
Console.WriteLine(returnBytes.ToString());
Marshal.Copy(pointer, cbuff, 0, returnBytes);
do
{
if (cbuff[n] == 0) count++;
n++;
} while (n < returnBytes);
if (count >= (returnBytes - 1))
{
Console.WriteLine("Here");
}
Приведенный выше цикл do-while — это всего лишь попытка удалить пустые данные, которые не выполняют работу.
Проблема, которую я получаю, заключается в том, что аудиобуфер имеет очень большой избыток пустого буфера, потому что ReadRenderData никогда не возвращает нулевой буфер, однако отправляет пустые буферы.
Есть ли что-то, что я делаю неправильно выше?