Как отлаживать фильтр источника push-уведомлений DirectShow?
Я попробовал одну из образцов виртуальной камеры на основе DirectShow, доступную по адресу https://github.com/roman380/tmhare.mvps.org-vcam
. Я могу скомпилировать и собрать ее, и она отлично работает в браузерах (Chrome и Edge).
Но в случае настольного приложения, такого как Zoom и Team, виртуальная камера распознается, но не показывает никаких кадров. При выборе этой виртуальной камеры виден только черный экран, а не ожидаемый результат.
Я попытался выполнить отладку после прочтения « Отладка фильтров DirectShow» и «Как отлаживать фильтр C++ DirectShow», который я добавил.
DbgLog()
в конструкторе
output pin
класс как
DbgLog((LOG_TRACE, 3, TEXT("test string")));
И укажите путь к файлу в
LogToFile
поле
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll
Но я не вижу никакой строки журнала в
vcam-log.txt
. Что мне не хватает или как получить строку журнала в этом файле?
1 ответ
Отладка фильтра на основе PushSource/VCam в Zoom должна происходить по той же схеме, что и отладка проекта DLL, работающего в контексте внешнего приложения. А именно процедура такова:
- Остановить целевое приложение (Zoom)
- Создайте свой проект, зарегистрируйте DLL по мере необходимости с COM (regsvr32)
- Запустить целевое приложение
- Присоедините Visual Studio к работающему приложению (Ctrl+Alt+P, отладчик собственного кода, процесс Zoom)
- Поместите точки останова в свой проект, включите остановку на исключениях
- Запустите целевое приложение и интерактивно начните действия, связанные с захватом видео.
Шаги 3-4 можно заменить установкой настроек проекта для запуска Zoom в качестве цели отладки (Настройки проекта, Отладка, Команда).
Кроме того, вы можете поставить точку останова в этой строке и посмотреть, куда именно направляются выходные данные отладки. Вы можете увидеть это во встроенном окне вывода отладки (в случае
OutputDebugString
use) или вы сможете проверить, какой именно файл используется для записи журнала.