Изменение размера буфера DirectSound Audio Renderer по умолчанию - PullRequest
0 голосов
/ 23 апреля 2011

Я реализовал пользовательский фильтр «выборки» для DirectShow.Я беру сэмплы с моим хост-приложением, выполняю FFT и показываю результаты через Direct3D.

Проблема в том, что между визуальным результатом и моментом, когда я слышу звук (данные), задержка составляет почти 1 секунду.визуализируется до того, как я это слышу).

Я посмотрел на это, и причина в том, что аудио рендерер по умолчанию имеет внутренний буфер в одну секунду, как сказал этот парень. Он утверждает,что реализация IAMBufferNegotiation или IAMPushSource должна решить проблему.Я пробовал оба варианта, но ни один из них, похоже, не имеет значения.

Мне было любопытно, была ли у кого-то еще такая же проблема, и я хочу убедиться, что нет другого (простого) решения, прежде чем писать свой собственный звукрендер.

Вклад приветствуется!

1 Ответ

1 голос
/ 23 апреля 2011

Вместо изменения размера внутреннего буфера фильтра аудио-рендеринга, вы должны синхронизировать ваш чертеж (рендеринг результата) с образцами временных меток буфера, который вы вычислили FFT. Вы можете использовать IReferenceClock :: AdviseTime для синхронизации.

...