如何调试 DirectShow 推源过滤器?
How to debug DirectShow push source filter?
我尝试了 https://github.com/roman380/tmhare.mvps.org-vcam
提供的基于 DirectShow 的虚拟相机示例之一
我能够编译和构建,并且它在浏览器(Chrome 和 Edge)中运行良好。
但在 Zoom 和 Team 等桌面应用程序的情况下,虚拟相机被识别但不显示任何帧。选择此虚拟相机时,只能看到黑屏,而不是预期的输出。
看完后尝试调试Debugging DirectShow Filters and How to debug c++ DirectShow filter
我在 output pin
class 的构造函数中添加了 DbgLog()
like
DbgLog((LOG_TRACE, 3, TEXT("test string")));
并在 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll
的 LogToFile
字段中设置文件路径
但是我在 vcam-log.txt
中没有看到任何日志字符串。 我遗漏了什么或如何在该文件中获取日志字符串?
调试基于 PushSource/VCam 的筛选器是 Zoom 将按照与在外部应用程序上下文中调试 DLL 项目 运行 相同的方式进行。即程序是这样的:
- 停止目标应用程序(缩放)
- 构建您的项目,注册 COM (regsvr32) 所需的 DLL as/if
- 已启动目标应用程序
- 将您的 Visual Studio 附加到 运行 应用程序(Ctrl+Alt+P、本机代码调试器、缩放进程)
- 在您的项目中放置断点,启用异常中断
- 拥有目标应用程序运行并交互式启动activity与视频捕获相关
步骤 3-4 可以通过设置项目设置来代替 Zoom 作为调试目标(项目设置、调试、命令)。
此外,您可能想在 this line 上放置一个断点,并查看调试输出的确切路由到的位置。您可能能够在集成调试输出 window 中看到它(在 OutputDebugString
使用的情况下)或者您将能够检查正在使用哪个文件来写入日志。
我尝试了 https://github.com/roman380/tmhare.mvps.org-vcam
提供的基于 DirectShow 的虚拟相机示例之一
我能够编译和构建,并且它在浏览器(Chrome 和 Edge)中运行良好。
但在 Zoom 和 Team 等桌面应用程序的情况下,虚拟相机被识别但不显示任何帧。选择此虚拟相机时,只能看到黑屏,而不是预期的输出。
看完后尝试调试Debugging DirectShow Filters and How to debug c++ DirectShow filter
我在 output pin
class 的构造函数中添加了 DbgLog()
like
DbgLog((LOG_TRACE, 3, TEXT("test string")));
并在 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll
LogToFile
字段中设置文件路径
但是我在 vcam-log.txt
中没有看到任何日志字符串。 我遗漏了什么或如何在该文件中获取日志字符串?
调试基于 PushSource/VCam 的筛选器是 Zoom 将按照与在外部应用程序上下文中调试 DLL 项目 运行 相同的方式进行。即程序是这样的:
- 停止目标应用程序(缩放)
- 构建您的项目,注册 COM (regsvr32) 所需的 DLL as/if
- 已启动目标应用程序
- 将您的 Visual Studio 附加到 运行 应用程序(Ctrl+Alt+P、本机代码调试器、缩放进程)
- 在您的项目中放置断点,启用异常中断
- 拥有目标应用程序运行并交互式启动activity与视频捕获相关
步骤 3-4 可以通过设置项目设置来代替 Zoom 作为调试目标(项目设置、调试、命令)。
此外,您可能想在 this line 上放置一个断点,并查看调试输出的确切路由到的位置。您可能能够在集成调试输出 window 中看到它(在 OutputDebugString
使用的情况下)或者您将能够检查正在使用哪个文件来写入日志。