Избавление от лишнего пустого буфера из звуковой шины 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 никогда не возвращает нулевой буфер, однако отправляет пустые буферы.

Есть ли что-то, что я делаю неправильно выше?

0 ответов

Другие вопросы по тегам