У меня есть приложение DirectShow, которое я создал с Delphi 6, используя библиотеку компонентов DSPACK.В течение двух дней я пытался решить проблему с воспроизведением аудио.Когда я запускаю созданный фильтр, я слышу повторяющиеся щелчки при воспроизведении.Что действительно сбивало с толку, так это то, что аудиофайл, который я создал одновременно с графиком фильтра, имел чистый непрерывный звук, а не пропуски.Так что я знал, что аудио буферы доставлялись правильно, но я занимался «глушением» «живого» воспроизведения.Или я так думал.Я потратил два дня на диагностику проблемы с поиском слишком длинных семафоров (блокировки) или, возможно, с проблемами с отметками времени, которые я описал в этом другом посте переполнения стека:
Заикание во время рендеринга моего фильтра DirectShow, несмотря навыходной файл "гладкий"
Несколько минут назад я решил попробовать тест с помощью утилиты Graph Edit.Я создал простой простой график, состоящий только из используемого устройства захвата (микрофон телефона VOIP) и используемого устройства визуализации ( HD ATI Rear Audio вывод на наушники).Всего два фильтра. К моему большому удивлению, я услышал тот же щелчок. Так что здесь был случай, в котором мой код вообще не использовался, и я услышал щелчок.
Затем я изменил средство визуализации звука в Редакторе графиков.создан график фильтра для наушника VOIP .Щелчки исчезли.
Теперь я знаю, что есть способ получить плавный звук на заднем аудиоустройстве ATI, поскольку оно является предпочтительным устройством вывода звука, и все, начиная от видео, которое я играю на моем компьютере, и заканчивая звуковыми файлами, на которых я играюэто звучит безупречно.Значит, другие программы делают нечто иное, чем просто подключение фильтров?Мне интересно, возможно ли режим по умолчанию для HD ATI Rear Audio без двойной буферизации, и, возможно, другие программы знают, как включить эту функцию?Или же они делают что-то еще, например, используют другой фильтр DirectShow или DirectSound, например, для плавного воспроизведения звука на HD ATI Rear Audio рендер?