很难把它放在标题中,所以让我解释一下。
我有一个应用程序,它使用 Direct3D 显示一些网格并使用 directshow(vmr9 + allocator) 播放一些视频,然后将视频帧作为纹理发送到 Direct3D 部分以应用于网格。该应用程序需要 24/7 全天候运行。至少允许每 24 小时重新启动一次,但不会比这更频繁。
现在的问题是,由于编解码器、视频驱动程序或视频文件本身,directshow 在播放几个小时后似乎出现了问题。此时应用程序只是拒绝播放视频。但是 Direct3D 部分仍然运行良好,网格仍然显示。重新启动应用程序后,一切恢复正常。
所以,我正在考虑将 2 个部分分成 2 个不同的过程。因此,当视频进程无法播放视频时,至少我可以立即重新启动它,而不会丢失 Direct3D 部分。
所以这里出现了实际的问题,是否可以通过传递指针将纹理从视频播放器传递到 direct3d 进程,也就是从指针中检索另一个进程的纹理?由于受保护的内存寻址,我最初的猜测是不可能的。
我在两个进程上都设置了 TCP 通信,此时我们不必担心指针的通信。
这可能是一个疯狂的想法,但它会创造奇迹