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