Как захватывать из источников потокового аудио WDM (Realtek HD Audio) - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь использовать различные источники звука в DirectShow, и у меня в системе есть следующие устройства захвата, которые, я думаю, довольно распространены (предоставляются драйверами чипсета):

Вход Realtek HD Audio Line
Realtek HD Audio Стереофонический вход
Realtek HD Audio Mi c вход

Они выглядят как источники захвата, предоставляют аналоговый вход и 24-битный вывод pcm и могут подключать выход к другим фильтрам (renderer et c).
Но код возврата из IMediaFilter :: Run фильтра захвата - ERROR_BAD_COMMAND, который говорит мало. Я попробовал это в своей программе, а также в GraphStudioNext, который не раскрывал никакой дополнительной информации.

Можно ли использовать их для захвата и как?

Обновление

Например Я пробовал этот график с входом mi c (на самом деле подключен и работает). В этой настройке график не запускается (ERROR_BAD_COMMAND), но с другим источником он запускается.
Это то же устройство, но разные драйверы. Тот, который работает, из категории «Источники захвата звука», который не относится к «Устройствам захвата потоков WDM».

enter image description here

1 Ответ

0 голосов
/ 01 марта 2020

Самый простой способ проверить устройство с помощью GraphStudioNext - это построить граф записи с самим устройством ввода звука PCM, фильтром AVI Mux и фильтром File Writer, подключенным так (с типами носителей по умолчанию):

enter image description here][1

Вы нажимаете «Выполнить», и график записи создает непустой файл через Filter Writer в месте, запрашиваемом при построении графика.

-

Итак, теперь я понял, что вы вопрос немного другой. Вы видите фильтры, соответствующие вашему устройству аудиовхода, в разделе

И вопрос в том, что первый фильтр работает, а другой нет.

Аналогичный фильтр из AM_KSCATEGORY_CAPTURE, кажется, подключается к топологии, но пытается запустить триггеры ERROR_BAD_COMMAND.

Прежде всего, это действительно разные фильтры. Хотя базовое оборудование может быть одинаковым, фильтры «внешнего интерфейса» различаются. «Работающая» оболочка - Audio Capture Filter , поддерживаемая устройством WDM В другом случае это Generi c WDM Filter Proxy, поведение которого, вообще говоря, не определено. Фильтр не документирован, и, я полагаю, он не получает достаточной инициализации или не выполняет требуемого поведения в противном случае, поэтому этот прокси не является и не должен быть взаимозаменяемым с прокси-фильтром Audio Capture Filter.

...