DirectShow: График работает в GraphEdit, а не в коде - PullRequest
3 голосов
/ 28 декабря 2008

Я построил следующий график в GraphEdit: Logitech Webcam -> Infinite Tee Pin Filter -> VideoRenderer. Это прекрасно работает (с GraphEdit автоматически вставляет несколько промежуточных фильтров между фильтром TEe и фильтром VideoRenderer).

Я пытался сделать то же самое в коде, и он не работает при попытке подключить фильтр Tee к VideoRenderer. Сначала я подключаю веб-камеру к тройному фильтру, который работает (веб-камера включается, и я получаю S_OK), а затем пытаюсь подключить один выходной контакт из тройного фильтра к первому, что не удается (ошибка заключается в том, что не найти набор промежуточных фильтров для их подключения). Я пытался соединить их как с IGraphBuilder :: Connect, так и с ICaptureGraphBuilder2 :: RenderStream, с тем же эффектом. Для перечисления выводов я использую hr = _CaptureGraphBuilder.FindPin (theFilter, PinDirection.Input, null, null, true, 0, out ofPin); для видео рендерера, и то же самое, за исключением PinDirection.Output для Tee Filter (это в C #, но конструкция точно соответствует C ++).

Есть идеи?

1 Ответ

2 голосов
/ 29 декабря 2008

Нашел проблему. Судя по всему, фильтр веб-камеры не обновляет правильно типы выходных носителей до запуска графика. Итак, запуск графа, затем перезапуск графа, как только все сделано, сделали свое дело.

...