Я использую AudioUnit для записи и воспроизведения звука с частотой дискретизации 8 кГц и 8-битным аудиосэмплом. Я использую пример из следующего источника: https://github.com/fuxx/MicInput
Часть воспроизведения основана на шаблоне обратного вызова. С помощью этого метода я не могу контролировать, когда воспроизводить аудио, Core Audio вызывает обратный вызов, когда ему нужно воспроизвести больше аудиоданных.
Дело в том, что я получаю аудиоданные из сети и поэтому не могу обещать, что аудиоданные будут готовы для следующего обратного вызова. Иногда обратный вызов пропускает аудиоданные из сети, поэтому возникает промежуток около 20 мс, который звучит как щелчок.
Можно ли рендерить звук немедленно, не дожидаясь обратного вызова? С AudioQueue это возможно, вызвав AudioQueueEnqueueBuffer(), я не знаю, как это сделать с AudioUnit. Я надеюсь, что вы можете мне помочь.